Steps to reproduce: - create and compile a C++ sample - execute GDB with "--interpreter mi" parameter - start debugging session - create a variable object which causes segmentation fault - make GDB update all variable objects (-var-update --all-values *) Actual result: - GDB generates incorrect response containing information about the segmentation fault error (for example, '23^done,changelist=[reason="signal-received",signal-name="SIGSEGV",signal-meaning="Segmentation fault",frame={addr="0x00007ffff74982e1",func="__strlen_sse2_pminub",args=[],file="../sysdeps/x86_64/multiarch/strlen-sse2-pminub.S",line="39"},reason="signal-received",signal-name="SIGSEGV",signal-meaning="Segmentation fault",frame={addr="0x00007ffff74982e1",func="__strlen_sse2_pminub",args=[],file="../sysdeps/x86_64/multiarch/strlen-sse2-pminub.S",line="39"}]') Expected result: - GDB shows valid changelist and generates a segmentation fault error
There is another example of confusing output: *stopped,changelist=[{name="var151",value="0",in_scope="true",type_changed="false",has_more="0"},reason="signal-received",signal-name="SIGTRAP",signal-meaning="Trace/breakpoint trap",frame={addr="0x774e40f1",func="ntdll!DbgUserBreakPoint",args=[],from="/cygdrive/c/Windows/system32/ntdll.dll"},thread-id="3",stopped-threads="all" May be this issue is not connected to variable objects.
*stopped,changelist=[reason="signal-received",signal-name="SIGINT",signal-meaning="Interrupt",frame={addr="0x00007ffff6cfb05e",func="pthread_cond_timedwait@@GLIBC_2.3.2",args=[],file="../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S",fullname="/build/buildd/eglibc-2.17/nptl/../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S",line="238"},thread-id="11",stopped-threads="all",core="6"
More examples: 1) -var-create - 0x78f9d8 "s.length()" ~"\nProgram received signal " ~"SIGSEGV, Segmentation fault.\n" ^done,reason="signal-received",signal-name="SIGSEGV",signal-meaning="Segmentation fault",frame={addr="0x6fe6f990",func="libstdc++-6!_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv",args=[],from="C:\\mingw-w64\\i686-5.3.0-posix-dwarf-rt_v4-rev0\\mingw32\\bin\\libstdc++-6.dll"},name="var2",numchild="0",value="",type="std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type",thread-id="1",has_more="0" 2) -var-update --simple-values * ~"\nProgram received signal " ~"SIGSEGV, Segmentation fault.\n" ^done,changelist=[reason="signal-received",signal-name="SIGSEGV",signal-meaning="Segmentation fault",frame={addr="0x6fe6f990",func="libstdc++-6!_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv",args=[],from="C:\\mingw-w64\\i686-5.3.0-posix-dwarf-rt_v4-rev0\\mingw32\\bin\\libstdc++-6.dll"}] 3) -var-create result split over *stopped and ^done responses -var-create - 0x73fa58 "s.length()" ~"\nThread " ~"1 received signal SIGSEGV, Segmentation fault.\n" ~"0x6fc66740 in ?? () from C:\\MinGW\\bin\\libstdc++-6.dll\n" *stopped,reason="signal-received",signal-name="SIGSEGV",signal-meaning="Segmentation fault",frame={addr="0x6fc66740",func="??",args=[],from="C:\\MinGW\\bin\\libstdc++-6.dll"},thread-id="1",stopped-threads="all" ^done,name="var2",numchild="0",value="",type="std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type",thread-id="1",has_more="0" reference reports: https://youtrack.jetbrains.com/issue/CPP-5623 https://youtrack.jetbrains.com/issue/CPP-6732
(In reply to nikolay.koldunov from comment #0) > - create a variable object which causes segmentation fault I guess this can be done but it seems pretty bad.