interrogate crash with HAVE_THREADS = 1

No, the volatile keyword means nothing to interrogate.

Interrogate needs to parse the C++ headers just well enough to understand what the function names and parameter types are, then it generates new C++ code that will produce the appropriate Python-callable wrappers. Then we compile this generated code with the actual compiler (which does know about the volatile keywords and other niceties), so everything is built perfectly.

David