You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
temporary filename is non-random, causing bad state and the killthreads fedora flake #9
thread A starts a requests and starts writing to the .tmp.debuginfo file
thread A writes up to offset X
thread B starts a request and starts writing to the same .tmp.debuginfo file, truncating it in the process, and zeroing out everything that thread A wrote
thread A continues writing from offset X
thread B writes from the beginning of the file
thread A finishes, and GDB reads the DWARF while it has a zero-hole inside
symbol lookups don't work anymore
the expression pthread_kill() does not get evaluated due to a gdb error
our killthread function swallows up the error and doesn't think anything is wrong
but the thread doesn't actually get killed, and the assert fails
Repro
In the pwndbg root folder you can run:
docker compose run --rm -v $(pwd):/pwndbg fedora42 bash /pwndbg/repro-debuginfod-race.sh
That is easy to fix, but I didn't realize GDB could call functions in different GDB threads - GDB doesn't use threads.. wtf?
I think gdb don't use threads at all (inferior can have threads)
Activity
Disable debuginfod for gdb-only tests (#4143)
patryk4815 commentedon Sep 9, 2026
That is easy to fix, but I didn't realize GDB could call functions in different GDB threads - GDB doesn't use threads.. wtf?
I think gdb don't use threads at all (inferior can have threads)
k4lizen commentedon Sep 9, 2026
oh good point, but we do run multiple GDB's in parallel in our tests, could be anything that fetches debuginfo colliding
patryk4815 commentedon Sep 9, 2026
yes! probably this is issue
fix bug with #9
patryk4815 commentedon Sep 9, 2026
fixed in: