class LoadedByParamClass {}; struct ParamClass { LoadedByParamClass some_func(); }; struct SomeClass { // LLDB stops in the constructor and then requests // possible expression completions. This will iterate over the // declarations in the translation unit. // The unnamed ParamClass parameter causes that LLDB will add // an incomplete ParamClass decl to the translation unit which // the code completion will find. Upon inspecting the ParamClass // decl to see if it can be used to provide any useful completions, // Clang will complete it and load all its members. // This causes that its member function some_func is loaded which in turn // loads the LoadedByParamClass decl. When LoadedByParamClass // is created it will be added to the translation unit which // will invalidate all iterators that currently iterate over // the translation unit. The iterator we use for code completion // is now invalidated and LLDB crashes. SomeClass(ParamClass) {} }; int main() { ParamClass e; SomeClass y(e); }