Why can MATLAB engine session no longer call "clear all"?

Between MATLAB 2024b and MATLAB 2025a, feeding a "clear all" call to a MATLAB engine (opened with engOpen() or engOpenSingleUse()) prevents any subsequent MATLAB code from executing properly within the engine.
For example, in MATLAB's engdemo.cpp:
if (!(ep = engOpen(""))) {
fprintf(stderr, "\nCan't start MATLAB engine\n");
return EXIT_FAILURE;
}
// Add clear all call
engEvalString(ep, "clear all");
Adding the "clear all" call causes all subsequent MATLAB calls (including the plot, and setting the X variable) to not work. This worked fine up to and including MATLAB 2024b.

Answers (1)

It would not surprise me at all if "clear all" is clearing some crucial connection information that has been stored in variables.
You should expect problems if you "clear all". Using "clear all" is like Wile E. Coyote blowing up the very bridge that he is standing on.

3 Comments

It doesn't really surprise me. If I were drafting new code I wouldn't have commented at all, and I can obviously work around it. My concern is that it worked for over a decade as-is and now suddenly it is not. So the question really boils down to - should it never have worked, and this is now correcting bad legacy behavior, or should it still work and this is new unexpected behavior that could be fixed?
In my opinion, it always relied upon undefined behaviour, and it should not be surprising if the results of that undefined behaviour changed over time.
But in theory, shouldn't a "clear all" command only affect Matlab variables within the engine? It shouldn't impact the connection between C++ and the engine, and it shouldn't prevent new Matlab variables from being created within the engine. And if it can impact the engine, then that should be documented and it should execute an engClose to release the engine.

Sign in to comment.

Categories

Find more on Programming in Help Center and File Exchange

Products

Release

R2025b

Asked:

on 7 Oct 2025

Commented:

on 7 Oct 2025

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!