I’m attempting to use a libclang-based language server in vscode for cross compiling projects. This language server is working multithreaded and I’m experiencing deadlocks which seem to come frome a race condition, e.g. when I use a debug build of libclang they happen less frequently presumably because the ratio of time spent parsing sources and time spent starting/stopping threads changes and makes it less likely to hit the condition.
Whenever I do hit the deadlock, I observed there are two threads around that are related to clang querying a visual studio installation for platform specifics (“libclang.dll!findVCToolChainViaSetupConfig”).
Here is a dump of all the stack traces in such a situation: Now my question is two-fold: - Since I am cross compiling with a gcc, I don’t really need clang to query microsoft platform stuff. If there was a way to suppress these queries, my hope is that the deadlocks disappear. Is there a way to suppress this? - Are you aware of ways for me to get more detailed information on the deadlock situation with the VS.community debugger? I could not easily find information on which locks the OS exactly tried to get, only that it tried to get lock by the calls visible in the stack traces. Is there something built-in and readily available to debug such situations that I missed? Any help sorting this out is highly appreciated. Kind regards Michael