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`

Reply via email to