https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104435
Bug ID: 104435 Summary: Infinite recursion in rust_demangle(mangled="_RYAvB2_l", options=259) Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: demangler Assignee: unassigned at gcc dot gnu.org Reporter: teemperor at gmail dot com Target Milestone: --- Created attachment 52367 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=52367&action=edit POC Calling rust_demangle with (mangled="_RYAvB2_l", options=259) results in infinite recursion with the following backtrace (I truncated the repeating frames): ``` frame #130956: 0x000055555573a139 objdump`demangle_const(rdm=0x00007fffffffd708) at rust-demangle.c:1158:11 frame #130957: 0x000055555573a139 objdump`demangle_const(rdm=0x00007fffffffd708) at rust-demangle.c:1158:11 frame #130958: 0x000055555573a139 objdump`demangle_const(rdm=0x00007fffffffd708) at rust-demangle.c:1158:11 frame #130959: 0x000055555573a139 objdump`demangle_const(rdm=0x00007fffffffd708) at rust-demangle.c:1158:11 frame #130960: 0x000055555573a139 objdump`demangle_const(rdm=0x00007fffffffd708) at rust-demangle.c:1158:11 frame #130961: 0x000055555573a139 objdump`demangle_const(rdm=0x00007fffffffd708) at rust-demangle.c:1158:11 frame #130962: 0x000055555573a139 objdump`demangle_const(rdm=0x00007fffffffd708) at rust-demangle.c:1158:11 frame #130963: 0x000055555573a139 objdump`demangle_const(rdm=0x00007fffffffd708) at rust-demangle.c:1158:11 frame #130964: 0x00005555557397c1 objdump`demangle_type(rdm=0x00007fffffffd708) at rust-demangle.c:938:11 frame #130965: 0x0000555555738e20 objdump`demangle_path(rdm=0x00007fffffffd708, in_value=1) at rust-demangle.c:759:7 frame #130966: 0x0000555555737fba objdump`rust_demangle_callback(mangled="_RYAvB2_l", options=259, callback=(objdump`str_buf_demangle_callback at rust-demangle.c:1534), opaque=0x00007fffffffd788) at rust-demangle.c:1438:7 frame #130967: 0x000055555573900f objdump`rust_demangle(mangled="_RYAvB2_l", options=259) at rust-demangle.c:1549:13 frame #130968: 0x0000555555722fd2 objdump`cplus_demangle(mangled="_RYAvB2_l", options=259) at cplus-dem.c:166:13 frame #130969: 0x000055555565291f objdump`bfd_demangle(abfd=0x0000555555807bf0, name="_RYAvB2_l", options=3) at bfd.c:2428:9 ``` This is with objdump build from binutils-gdb at commit 2b1026f391d55070ae1e724c0770302d1c429611 . Side note: this is after commit f10bec5ffa487ad3033ed5f38cfd0fc7d696deab that fixed the other rust demangler infinite recursion (PR demangler/98886, PR demangler/99935). Searching bugzilla hasn't turned up a similar backtrace, so I hope this isn't a dupe. Can be reproduced via `objdump -C -D crashes_47.o`