In Visual Studio I can step into a thread and hold on a while. By resuming the next instruction some invariant kicks in and throws an error but it doesn't hold the thread in the debugger - I just see the error on the output.

The debugger is still active but now running from `rt.lifetime.finalize_struct(...)` (at least this is shown in the stack window) while executing the next step of my user code in a already half destroyed struct.

Setting a breakpoint on the invariant assert does not work. In detail it's some Schrödingers assert:

If I set a breakpoint without holding the thread on, nothing happens and all variants are fine. If I hold the thread on with the breakpoint set and then resume with the next step, also no error appears. But if I do the same with disabled breakpoint, the error is thrown in the output.

It's the same thread, I checked it with GetCurrentThreadId(). Also the invariant is in the same thread checked, so the debugger is somehow out of sync while the program flow is ahead.

Then I checked that I have supplied `-checkaction=C` on the main app while a DLL was compiled with default settings. After changing the DLL, the error disappeared. Is this just a coincidence or can `-checkaction` cause a stack corruption or something?

Reply via email to