rr-debugger / rr-debugger/rr

Assertion `child_sig_gt_zero' failed to hold. Replaying `SCHED': expecting tracee signal or trap, but instead at `ioctl' (ticks: 55628)

Open
#1,324 11 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'm trying to enable -fPIC for librrpreload, since x86-64 is unhappy about having to link relocations related to __thread in non-PIC code. As a start, I was trying to make sure that -fPIC works for 32-bit mode, but I get several test failures:

  • async_signal_syscalls_100
  • async_signal_syscalls_1000
  • checkpoint_async_signal_syscalls_1000
  • deliver_async_signal_during_syscalls
  • syscallbuf_timeslice_250

In attempting to debug syscallbuf_timeslice_250, I hit the assertion which is the title of this issue. What can I do to figure out what's going wrong? The recorded trace doesn't have any ioctl syscalls whatsoever in it.

The dump has a SCHED event at ticks:55606, an intervening SYSCALLBUF_RESET event, and then a SCHED event at ticks:55928. Is it possible that the ioctl from fiddling with the syscallbuf is the system call we're seeing in the replay, and that somehow didn't happen in the record, or that it got recorded incorrectly?

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

Start by reproducing the listed async-signal and syscallbuf tests in 32-bit mode, especially syscallbuf_timeslice_250, and inspect the replay around the SCHED events at ticks 55606 and 55928. Compare the recorded events across the intervening SYSCALLBUF_RESET and the reported ioctl assertion; done means identifying the record/replay discrepancy and making the affected tests pass.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, linux
Domain
operating-systems, reverse-engineering
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.