Since some users report this assert in relation to clangd_client plugin,
I'll try to recreate the situation and find the cause.
It may take some time since I'm not proficient with Linux.
Gemini 3.0 explains this error as follows:
My query to Gemini 3.0:
Please explain this message from wxWidgets that occurs more and more with Codeblocks IDE.
wxWidgets Debug Alert
A debugging check in this application has failed.
..\..\include/wx/recguard.h(36): assert "m_flag > 0" failed in ~wxRecursionGuard(): unbalanced wxRecursionGuards!?
Gemini responded;
This specific error is a classic "housekeeping" alert from the wxWidgets library. In short, the program is telling you that it tried to clean up a safety mechanism, but the math didn't add up.
What is a Recursion Guard?
A wxRecursionGuard is a tool developers use to prevent a function from calling itself infinitely (which would crash the program). Think of it like a "Do Not Enter" sign that a function hangs on its door when it starts working. When the function finishes, it takes the sign down.
The error assert "m_flag > 0" failed means that when the function finished and went to take the sign down, it found the sign was already gone - or it found "negative" signs. This is what the message means by "unbalanced."
Why is this happening in Code::Blocks?
Code::Blocks is built using wxWidgets. You are seeing this more often likely due to one of three reasons:
UI Event Races: Code::Blocks is trying to process a UI event (like a mouse click or a window redraw) while another event is still finishing. This is common if you are clicking rapidly or if the IDE is lagging.
Plugin Conflicts: A specific plugin (like Code Completion or Symbol Browser) might be triggering a "re-entrant" call, where it starts a task, gets interrupted, and fails to clean up its state properly.
Build/Version Mismatch: If you recently updated your OS or the IDE, there might be a slight incompatibility in how messages are passed between the system and the wxWidgets layer.
How to Fix or Bypass It
Since this is a Debug Alert, it is technically a warning for the developers of Code::Blocks, not necessarily a sign that your code is broken.
The "Ignore" Method: Click "Yes" to continue (this usually ignores the specific failure) or "No" to stop debugging. If you click "Cancel," it will likely crash the IDE to trigger a debugger.
Update Code::Blocks: Check if there is a newer "Nightly Build" or stable release. These "unbalanced guard" bugs are frequently patched in newer revisions.
Disable Heavy Plugins: Go to Plugins -> Manage plugins and try disabling non-essential ones (like "SpellChecker" or "Occurrences Highlight") to see if the frequency drops.
The "Silent" Route: If it is driving you crazy, you can run the "non-debug" version of Code::Blocks (the release build), which typically strips out these assert checks so they don't pop up.
clangd_client has some re-entrancy guards. But I do not remember calling wxWidgets to do the guarding.
But I'll check them out to see if there are some logic violations or any use of wxWidgets recursion guards.