1 class LoadedByParamClass {}; 2 struct ParamClass { 3 LoadedByParamClass some_func(); 4 }; 5 struct SomeClass { 6 // LLDB stops in the constructor and then requests 7 // possible expression completions. This will iterate over the 8 // declarations in the translation unit. 9 // The unnamed ParamClass parameter causes that LLDB will add 10 // an incomplete ParamClass decl to the translation unit which 11 // the code completion will find. Upon inspecting the ParamClass 12 // decl to see if it can be used to provide any useful completions, 13 // Clang will complete it and load all its members. 14 // This causes that its member function some_func is loaded which in turn 15 // loads the LoadedByParamClass decl. When LoadedByParamClass 16 // is created it will be added to the translation unit which 17 // will invalidate all iterators that currently iterate over 18 // the translation unit. The iterator we use for code completion 19 // is now invalidated and LLDB crashes. 20 SomeClass(ParamClass) {} 21 }; 22 int main() { ParamClass e; SomeClass y(e); } 23