DynamoRIO / DynamoRIO/dynamorio

CRASH in DR on all signal-using tests on certain Github runners

Open
#7,996 5 comments 0 reactions 0 assignees View on GitHub
Bug-DRCrash OpSys-Linux
Dominant language
C
Stars
3.2k
Forks
629
Avg merge
2d 18h
Merged PRs (30d)
30

Description

Happened once in x86-64 and once in x86-32 on a master merge for a PR that was
green on its pre-merge testing. Tests were green on the merge on re-running:

https://github.com/DynamoRIO/dynamorio/actions/runs/29052820531/job/86237398055
https://github.com/DynamoRIO/dynamorio/actions/runs/29052820531/job/86267245348

Tests all crash like this:

```
101: sending SIGUSR1
101: in handler 10
101:
102/472 Test #101: code_api|linux.eintr .............................................***Failed
```

Long list of failing tests:
```
====> FAILURE in debug-internal-32 <====
debug-internal-32: 379 tests passed, **** 93 tests failed, of which 3 were flaky, but ignoring 7 for i#2941: ****
code_api|common.decode-bad
code_api|common.decode
code_api|common.segfault
code_api|linux.fork-sleep
code_api|linux.signal0000
code_api|linux.signal0001
code_api|linux.signal0010
code_api|linux.signal0011
code_api|linux.signal0100
code_api|linux.signal0101
code_api|linux.signal0110
code_api|linux.signal0111
code_api|linux.signal1000
code_api|linux.signal1001
code_api|linux.signal1010
code_api|linux.signal1011
code_api|linux.signal1101
code_api|linux.signal1100
code_api|linux.signal1110
code_api|linux.signal1111
code_api|linux.sigplain000
code_api|linux.sigplain001
code_api|linux.sigplain010
code_api|linux.sigplain011
code_api|linux.sigplain100
code_api|linux.sigplain101
code_api|linux.sigplain110
code_api|linux.sigplain111
code_api|linux.syscall_pwait
code_api|linux.sigcontext
code_api|linux.signal_race
code_api|linux.signal_pre_syscall
code_api|linux.bad-signal-stack
code_api|linux.alarm
(ignore: i#2941) code_api|common.decode-stress
code_api|linux.sigsuspend
code_api|linux.signest
code_api|linux.sigmask
code_api|linux.eintr
code_api|linux.sigmask-noalarm
code_api|linux.eintr-noinline
(ignore: i#2941) code_api|linux.thread-reset
(ignore: i#2941) code_api|linux.clone-reset
(ignore: i#2941) code_api|pthreads.ptsig
code_api|security-common.decode-bad-stack_FLAKY
code_api|security-common.selfmod
code_api|client.cleancall
code_api|client.cleancall.prof-pcs
code_api|client.cleancall.prof-pcs.thread-private
(ignore: i#2941) code_api|client.exception
code_api|client.segfault
(ignore: i#2941) code_api|client.detach_test
code_api|client.events_cpp
code_api|client.events
code_api|client.cleancallsig
code_api|client.drx_buf-test
code_api|client.drreg-test
code_api|client.drx-scattergather
code_api|client.drx-scattergather-bbdup
code_api|client.drutil-test
code_api|sample.memval_simple
code_api|sample.memval_simple_scattergather
code_api|tool.drcov.eintr
code_api|tool.basic_counts
code_api|tool.drcachesim.scattergather-x86
code_api|tool.drcacheoff.sysnums
code_api|tool.drcacheoff.basic_counts
code_api|tool.drcacheoff.gencode
code_api|tool.drcacheoff.gencode_filtered
code_api|tool.drcacheoff.scale_time
code_api|tool.drcacheoff.burst_threads
code_api|tool.drcacheoff.synch_attach
code_api|tool.drcacheoff.burst_threads_counts
code_api|tool.drcacheoff.burst_threadfilter
code_api|tool.drcacheoff.burst_threadL0filter
code_api|tool.histogram.offline
code_api|tool.record_filter_bycore_multi
code_api|client.drx_time_scale-test
code_api|client.drx_sleep_scale-test
code_api|api.detach
code_api|api.detach_spawn_FLAKY
(ignore: i#2941) code_api|client.drwrap-test-detach
code_api|api.detach_spawn_quick_exit
code_api|api.detach_spawn_stress_FLAKY
code_api|api.static_signal
code_api|api.static_sideline
code_api,opt_memory|client.events
code_api,thread_private|client.events
code_api,opt_speed|client.events
code_api,disable_traces|client.events
code_api,thread_private,disable_traces|client.events
code_api,no_early_inject|client.events
code_api|client.signal
```

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the crash from the linked GitHub Actions runs, focusing on the debug-internal-32 signal tests and suite/tests/bin/linux.eintr. Compare the failing signal-related tests with a rerun that passes and inspect the reported internal crash context. Done means identifying and fixing the runner-specific crash so the affected signal-using tests pass reliably.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, github-actions, linux
Domain
operating-systems, testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.