https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87335
--- Comment #9 from Cheng Wen <wcventure at 126 dot com> --- (In reply to Jonathan Wakely from comment #8) Hi Jonathan, I debugged with this POC again. I still think it's a problem. I will show you the debug process as follow. > $ gdb ./c++filt > Reading symbols from ./c++filt...done. > (gdb) set args -t < POC-t > (gdb) b cp-demangle.c:2565 > Breakpoint 1 at 0x8d5227: file ./cp-demangle.c, line 2565. > (gdb) start > (gdb) c > Continuing. > Breakpoint 1, cplus_demangle_type (di=0x7fffffffd560) at ./cp-demangle.c:2565 > 2565 cplus_demangle_type (di), NULL); > (gdb) c > Continuing. > Breakpoint 1, cplus_demangle_type (di=0x7fffffffd560) at ./cp-demangle.c:2565 > 2565 cplus_demangle_type (di), NULL); > ... > ... > ... > (gdb) c > Continuing. > Breakpoint 1, cplus_demangle_type (di=0x7fffffffd560) at ./cp-demangle.c:2565 > 2565 cplus_demangle_type (di), NULL); > (gdb) bt > #0 cplus_demangle_type (di=0x7fffffffd560) at ./cp-demangle.c:2565 > #1 0x00000000008d523d in cplus_demangle_type (di=0x7fffffffd560) at > ./cp-demangle.c:2565 > #2 0x00000000008d523d in cplus_demangle_type (di=0x7fffffffd560) at > ./cp-demangle.c:2565 > #3 0x00000000008d523d in cplus_demangle_type (di=0x7fffffffd560) at > ./cp-demangle.c:2565 > #4 0x00000000008d523d in cplus_demangle_type (di=0x7fffffffd560) at > ./cp-demangle.c:2565 > ... > ... > ... > #456 0x00000000008d523d in cplus_demangle_type (di=0x7fffffffd560) at > ./cp-demangle.c:2565 > #457 0x00000000008d523d in cplus_demangle_type (di=0x7fffffffd560) at > ./cp-demangle.c:2565 > #458 0x00000000008dd318 in d_demangle_callback (mangled=0x18b2e40 > <main.mbuffer> 'P' <repeats 200 times>..., options=283, > callback=0x8dc110 <d_growable_string_callback_adapter>, > opaque=0x7fffffffd860) at ./cp-demangle.c:6245 > #459 0x00000000008dc84f in d_demangle (mangled=0x18b2e40 <main.mbuffer> 'P' > <repeats 200 times>..., options=283, > palc=0x7fffffffd9e0) at ./cp-demangle.c:6299 > #460 0x00000000008dc696 in cplus_demangle_v3 (mangled=0x18b2e40 > <main.mbuffer> 'P' <repeats 200 times>..., options=283) > at ./cp-demangle.c:6456 > #461 0x00000000008b1cf4 in cplus_demangle (mangled=0x18b2e40 <main.mbuffer> > 'P' <repeats 200 times>..., options=27) > at ./cplus-dem.c:880 > #462 0x0000000000517676 in demangle_it (mangled_name=0x18b2e40 <main.mbuffer> > 'P' <repeats 200 times>...) at cxxfilt.c:62 > #463 0x000000000051726a in main (argc=2, argv=0x7fffffffe008) at cxxfilt.c:276 Using gdb to debug it. I set a breakpoint in cp-demangle.c:2565. After reaching this breakpoint for any time. You can see the stack backtrace. This will consume a lot of stack memory. (Caution: the command such as "gdb --args ./c++filt -t < $POC" is not valid. Please use "gdb ./c++filt", then "set args -t < $POC") Thanks Cheng Wen