rr-debugger / rr-debugger/rr

^C in gdb ignored when doing reverse-execution of a replay with conditional-bp

Open
#2,132 2 comments 0 reactions 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.