^C in gdb ignored when doing reverse-execution of a replay with conditional-bp
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 10.7k
- Forks
- 662
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 2
Description
I was trying to debug a replay, and I set up a conditional bp and did a reverse-continue. It took longer than I was expecting, so I tried to ^C to interrupt and get back to a debug prompt. rr ignored the ^C and I had to resort to killing the whole debug session and restarting it.
(rr) cond 9 (itb->pc - 0xffffadea4000) == 9e6924
(rr) rc
Continuing.
^C
^CInterrupted while waiting for the program.
Give up waiting? (y or n) n
^C^CInterrupted while waiting for the program.
Give up waiting? (y or n) y
Quit
The bp condition was of a form that meant it couldn't be executed on the rr end ('info bp' said "host evals"), so slowness is perhaps expected, but the user should always be able to regain control with ^C.
(This is with rr commit b8821907e0ed.)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the issue with a reverse-continue and a conditional breakpoint whose condition is evaluated by the host, then observe how rr handles repeated ^C input while waiting. Trace the interrupt-handling path for reverse execution and verify that ^C reliably returns to the debug prompt without requiring the session to be killed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, linux
- Domain
- devtools, operating-systems, reverse-engineering
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100