[regression] gdb 7.11 breaks rr

Kyle Huey me at kylehuey.com
Mon May 16 22:06:04 UTC 2016


(Resending because the gdb list rejects HTML mail, sorry for duplicates)

Steps to reproduce:

1. Clone rr from https://github.com/mozilla/rr.git
2. Build rr rev 8566e3038892
3. ./bin/rr record ./bin/reverse_continue_process_signal
4. ./bin/rr replay -d /path/to/gdb-7.11
5. c
6. Once, the program has reached the SIGKILL, b 22
7. rc

Instead of reversing to the fork on line 22, rr will stop again at the
SIGKILL.

Beginning with [0] gdb seems to forget which direction execution is heading
in when a signal is reported by the gdb server.  When gdb resumes execution
after deciding to ignore the signal it sends a vCont instead of a bc to the
gdb server, causing rr to execute forwards again.

This was fixed after the release of gdb 7.11 by [1]. I verified that
cherry-picking this commit on top of the gdb-7.11-release tag also fixes
rr.  Could we get this commit backported for a 7.11.1?  rr's reverse
execution features are largely unusable with complex programs (e.g.
Firefox) because of this bug.

Thanks,

- Kyle

[0]
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=0b333c5e7d6c3fc65d37ffa11bd21ba52c4adb25
[1]
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=3a00c80277a54abe0b286a6e8babc8fe50120205


More information about the rr-dev mailing list