Using PTRACE_POKEDATA failed

Open
#2,287 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
cpp, linux

Research direction

Start with Task.cc:630 in exit_syscall(), then read Task::record_local, write_mem(), and ReplaySession::exit_syscall(), including apply_all_data_records_from_trace(). Compare the behavior with issue #1561 and trace how PTRACE_POKEDATA is handled during replay. Done means the requested memory modification works without the assertion or wrong-address-space behavior, with appropriate coverage if the existing tests expose this path.

Written by the indexing model from the issue text.

Description

Hi,

I'm trying to use PTRACE_POKEDATA to modify the memory at some address in replay session. However, I got the below wrong:
[FATAL /home/ziao/rr_muplay/src/Task.cc:630:exit_syscall()]
(task 8703 (rec:31648) at time 150)
-> Assertion 'session().is_recording()' failed to hold.
I also tried to use write_mem() function, but still no good. I saw #1561 has similar problem with mine, and it is because

you have to record the modified data using Task::record_local

ReplaySession::exit_syscall calls t->apply_all_data_records_from_trace(), it will write to the wrong address space

I'm wondering if this issue is addressed or not. Thank you!

Dominant language
C++
Stars
10.7k
Forks
662
Avg merge
2d 3h
Merged PRs (30d)
2

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.

More from rr-debugger/rr

All issues in rr-debugger/rr

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.