feat(crashtracking): GOT patch sigaction - #2496
Conversation
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
📚 Documentation Check Results📦
|
🔒 Cargo Deny Results✅ No issues found! 📦
|
424b097 to
b789947
Compare
4180f3b to
4c9f499
Compare
|
✅ All CI checks and tests passed. 🎉 All green!🧪 All tests passed 🎯 Code Coverage (details) 🔗 Commit SHA: 3dff449 | Docs | View more details | Give us feedback! |
BenchmarksComparisonBenchmark execution time: 2026-09-11 18:40:30 Comparing candidate commit 3dff449 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 1 metrics, 0 unstable metrics.
|
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz | 3dff449 | 1789151263 | gyuheon0h/got-patch-sigaction |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| receiver_entry_point/report/2644 | execution_time | 6.289ms | 6.350ms ± 0.039ms | 6.341ms ± 0.023ms | 6.370ms | 6.434ms | 6.454ms | 6.456ms | 1.82% | 0.891 | 0.214 | 0.62% | 0.003ms | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| receiver_entry_point/report/2644 | execution_time | [6.345ms; 6.355ms] or [-0.086%; +0.086%] | None | None | None |
Baseline
Baseline benchmark details
Group 1
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz | b5deb14 | 1789151262 | gyuheon0h/unpatch-gotter |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| receiver_entry_point/report/2644 | execution_time | 6.284ms | 6.373ms ± 0.025ms | 6.372ms ± 0.013ms | 6.385ms | 6.419ms | 6.425ms | 6.488ms | 1.83% | 0.361 | 2.748 | 0.40% | 0.002ms | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| receiver_entry_point/report/2644 | execution_time | [6.369ms; 6.377ms] or [-0.055%; +0.055%] | None | None | None |
Artifact Size Benchmark Reportaarch64-alpine-linux-musl
aarch64-unknown-linux-gnu
libdatadog-x64-windows
libdatadog-x86-windows
x86_64-alpine-linux-musl
x86_64-unknown-linux-gnu
|
4c9f499 to
b63b056
Compare
b789947 to
2603f92
Compare
b63b056 to
16ba2cd
Compare
2603f92 to
a7e16b3
Compare
16ba2cd to
3dff449
Compare
a7e16b3 to
b5deb14
Compare

bringing feat(crashtracking): GOT patch sigaction back
What does this PR do?
Intercepts sigaction calls with
hook_symbolGOT patching so the crashtracker can detect when application code overwrites a monitored signal handler after initialization.The hook covers all callers including the statically-linked test binary; internal
sigactioncalls fromchain_signal_handler(which runs inside the signal handler) are safe because SIG_DFL/SIG_IGN handlers are filtered out before any async work is attempted (this is done before thehook_symbolanyways), and the hook always forwards using the stored original function pointer rather than through a GOT entry so there.Motivation
Some runtimes may overwrite our handlers. It would be good to know when this is happening.
Additional Notes
This is a stacked PR. This change is minimal -- just adding the patch, and flipping a flag that isnt read anywhere. Sending actual telemetry is done feat(crashtracking): send telemetry if instrumented application sigactions our signal
How to test the change?
Describe here in detail how the change can be validated.