Bug 236035 - ptrace: SIGTRAP and EXIT race
Summary: ptrace: SIGTRAP and EXIT race
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: 12.0-RELEASE
Hardware: amd64 Any
: --- Affects Only Me
Assignee: freebsd-bugs (Nobody)
Depends on:
Reported: 2019-02-25 19:05 UTC by robert.ayrapetyan
Modified: 2019-02-25 19:05 UTC (History)
0 users

See Also:


Note You need to log in before you can comment on or make changes to this bug.
Description robert.ayrapetyan 2019-02-25 19:05:19 UTC
When tracing a process using ptrace and there are multiple threads in the tracing process hitting the same breakpoint, sometimes main thread exits (WIFEXITED(status) is TRUE) before last queued TRAP_BKPT signal(s) have been delivered to the tracing process. So a final breakpoint hits counter is less than it should be.

Steps to reproduce:

cd /tmp
git clone https://github.com/rayrapetyan/ptrace_bug_poc.git
cd ptrace_bug_poc
mkdir build
cd build
cmake ..

Run ~20 times:

/tmp/ptrace_bug_poc/build/src/ptrace_test/ptrace_test /tmp/ptrace_bug_poc/build/src/mt_example/mt_example 0x201385

Note: make sure 0x201385 is a call to <printf@plt> in "/tmp/ptrace_bug_poc/build/src/mt_example/mt_example":
gdb /tmp/ptrace_bug_poc/build/src/mt_example/mt_example
disassemble foo

Wait fo appearance of:
"BOOM! Invalid BP hits counter (hits: 1, tid: XXXX)"
at the end of the output (most of the times it will be "SUCCESS")