Skip to content

fix(crashtracking): guard sigchld and sigpipe during crashtracker signal handler execution#1771

Open
gyuheon0h wants to merge 2 commits intomainfrom
gyuheon0h/PROF-14080-saguard-ct
Open

fix(crashtracking): guard sigchld and sigpipe during crashtracker signal handler execution#1771
gyuheon0h wants to merge 2 commits intomainfrom
gyuheon0h/PROF-14080-saguard-ct

Conversation

@gyuheon0h
Copy link
Contributor

@gyuheon0h gyuheon0h commented Mar 20, 2026

What does this PR do?

Guards SIGCHLD and SIGPIPE during crashtracker signal handler execution

Motivation

During execution of the signal handler, it cannot be guaranteed that the signal is handled without SA_NODEFER, thus it also cannot be guaranteed that signals like SIGCHLD and SIGPIPE will not be emitted during this handler as a result of the handler itself. At the same time, it isn't known whether it is safe to merely block all signals, as the user's own handler will be given the chance to execute after ours. Thus, we need to prevent the emission of signals we might create (and cannot be created during a signal handler except by our own execution) and defer any other signals. To put it another way, it is conceivable that the crash handling code will emit SIGCHLD or SIGPIPE, and instead of risking responding to those signals, it needs to suppress them. On the other hand, it can't just "block" (sigprocmask()) those signals because this will only defer them to the next handler.

Additional Notes

This was originally implemented in: Crashtracker receiver is spawned on crash
but subsequently removed.

How to test the change?

Unit tests for saguard.rs. Integration test will be in a following PR

Copy link
Contributor Author

gyuheon0h commented Mar 20, 2026

@gyuheon0h gyuheon0h changed the title Guard sigchld and sigpipe; add unit tests fix(crashtracking): guard sigchld and sigpipe during crashtracker signal handler execution Mar 20, 2026
@github-actions
Copy link

github-actions bot commented Mar 20, 2026

📚 Documentation Check Results

⚠️ 1049 documentation warning(s) found

📦 libdd-crashtracker - 1049 warning(s)


Updated: 2026-03-20 18:30:12 UTC | Commit: a08c099 | missing-docs job results

@github-actions
Copy link

Clippy Allow Annotation Report

Comparing clippy allow annotations between branches:

  • Base Branch: origin/main
  • PR Branch: origin/gyuheon0h/PROF-14080-saguard-ct

Summary by Rule

Rule Base Branch PR Branch Change

Annotation Counts by File

File Base Branch PR Branch Change

Annotation Stats by Crate

Crate Base Branch PR Branch Change
clippy-annotation-reporter 5 5 No change (0%)
datadog-ffe-ffi 1 1 No change (0%)
datadog-ipc 28 28 No change (0%)
datadog-live-debugger 6 6 No change (0%)
datadog-live-debugger-ffi 10 10 No change (0%)
datadog-profiling-replayer 4 4 No change (0%)
datadog-remote-config 3 3 No change (0%)
datadog-sidecar 59 59 No change (0%)
libdd-common 10 10 No change (0%)
libdd-common-ffi 12 12 No change (0%)
libdd-data-pipeline 5 5 No change (0%)
libdd-ddsketch 2 2 No change (0%)
libdd-dogstatsd-client 1 1 No change (0%)
libdd-profiling 13 13 No change (0%)
libdd-telemetry 19 19 No change (0%)
libdd-tinybytes 4 4 No change (0%)
libdd-trace-normalization 2 2 No change (0%)
libdd-trace-obfuscation 8 8 No change (0%)
libdd-trace-utils 15 15 No change (0%)
Total 207 207 No change (0%)

About This Report

This report tracks Clippy allow annotations for specific rules, showing how they've changed in this PR. Decreasing the number of these annotations generally improves code quality.

@gyuheon0h gyuheon0h marked this pull request as ready for review March 20, 2026 17:17
@gyuheon0h gyuheon0h requested a review from a team as a code owner March 20, 2026 17:17
@gyuheon0h gyuheon0h requested a review from danielsn March 20, 2026 17:17
@github-actions
Copy link

github-actions bot commented Mar 20, 2026

🔒 Cargo Deny Results

⚠️ 5 issue(s) found, showing only errors (advisories, bans, sources)

📦 libdd-crashtracker - 5 error(s)

Show output
error[vulnerability]: Timing Side-Channel in AES-CCM Tag Verification in AWS-LC
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:11:1
   │
11 │ aws-lc-sys 0.28.0 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
   │
   ├ ID: RUSTSEC-2026-0045
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0045
   ├ Observable timing discrepancy in AES-CCM decryption in AWS-LC allows an
     unauthenticated user to potentially determine authentication tag validity
     via timing analysis.
     
     The impacted implementations are through the EVP CIPHER API:
     `EVP_aes_128_ccm`, `EVP_aes_192_ccm`, and `EVP_aes_256_ccm`.
     
     Customers of AWS services do not need to take action. `aws-lc-sys` contains
     code from AWS-LC. Applications using `aws-lc-sys` should upgrade to the most
     recent release of `aws-lc-sys`.
     
     ## Workarounds
     
     In the special cases of using AES-CCM with (M=4, L=2), (M=8, L=2), or
     (M=16, L=2), applications can workaround this issue by using AES-CCM through
     the EVP AEAD API using implementations `EVP_aead_aes_128_ccm_bluetooth`,
     `EVP_aead_aes_128_ccm_bluetooth_8`, and `EVP_aead_aes_128_ccm_matter`
     respectively.
     
     Otherwise, there is no workaround and applications using `aws-lc-sys` should
     upgrade to the most recent release.
   ├ Announcement: https://aws.amazon.com/security/security-bulletins/2026-005-AWS
   ├ Solution: Upgrade to >=0.38.0 (try `cargo update -p aws-lc-sys`)
   ├ aws-lc-sys v0.28.0
     └── aws-lc-rs v1.13.0
         ├── rustls v0.23.31
         │   ├── hyper-rustls v0.27.3
         │   │   └── libdd-common v3.0.0
         │   │       ├── (build) libdd-crashtracker v1.0.0
         │   │       └── libdd-telemetry v3.0.0
         │   │           └── libdd-crashtracker v1.0.0 (*)
         │   ├── libdd-common v3.0.0 (*)
         │   └── tokio-rustls v0.26.0
         │       ├── hyper-rustls v0.27.3 (*)
         │       └── libdd-common v3.0.0 (*)
         └── rustls-webpki v0.103.4
             └── rustls v0.23.31 (*)

error[vulnerability]: PKCS7_verify Certificate Chain Validation Bypass in AWS-LC
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:11:1
   │
11 │ aws-lc-sys 0.28.0 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
   │
   ├ ID: RUSTSEC-2026-0046
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0046
   ├ Improper certificate validation in `PKCS7_verify()` in AWS-LC allows an
     unauthenticated user to bypass certificate chain verification when processing
     PKCS7 objects with multiple signers, except the final signer.
     
     Customers of AWS services do not need to take action. `aws-lc-sys` contains
     code from AWS-LC. Applications using `aws-lc-sys` should upgrade to the most
     recent release of `aws-lc-sys`.
     
     There is no workaround; applications using `aws-lc-sys` should upgrade to the 
     most recent release of aws-lc-sys.
   ├ Announcement: https://aws.amazon.com/security/security-bulletins/2026-005-AWS
   ├ Solution: Upgrade to >=0.38.0 (try `cargo update -p aws-lc-sys`)
   ├ aws-lc-sys v0.28.0
     └── aws-lc-rs v1.13.0
         ├── rustls v0.23.31
         │   ├── hyper-rustls v0.27.3
         │   │   └── libdd-common v3.0.0
         │   │       ├── (build) libdd-crashtracker v1.0.0
         │   │       └── libdd-telemetry v3.0.0
         │   │           └── libdd-crashtracker v1.0.0 (*)
         │   ├── libdd-common v3.0.0 (*)
         │   └── tokio-rustls v0.26.0
         │       ├── hyper-rustls v0.27.3 (*)
         │       └── libdd-common v3.0.0 (*)
         └── rustls-webpki v0.103.4
             └── rustls v0.23.31 (*)

error[vulnerability]: PKCS7_verify Signature Validation Bypass in AWS-LC
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:11:1
   │
11 │ aws-lc-sys 0.28.0 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
   │
   ├ ID: RUSTSEC-2026-0047
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0047
   ├ Improper signature validation in `PKCS7_verify()` in AWS-LC allows an
     unauthenticated user to bypass signature verification when processing PKCS7
     objects with Authenticated Attributes.
     
     Customers of AWS services do not need to take action. `aws-lc-sys` contains
     code from AWS-LC. Applications using `aws-lc-sys` should upgrade to the most
     recent release of `aws-lc-sys`.
     
     There is no workaround; applications using `aws-lc-sys` should upgrade to the 
     most recent release of `aws-lc-sys`.
   ├ Announcement: https://aws.amazon.com/security/security-bulletins/2026-005-AWS
   ├ Solution: Upgrade to >=0.38.0 (try `cargo update -p aws-lc-sys`)
   ├ aws-lc-sys v0.28.0
     └── aws-lc-rs v1.13.0
         ├── rustls v0.23.31
         │   ├── hyper-rustls v0.27.3
         │   │   └── libdd-common v3.0.0
         │   │       ├── (build) libdd-crashtracker v1.0.0
         │   │       └── libdd-telemetry v3.0.0
         │   │           └── libdd-crashtracker v1.0.0 (*)
         │   ├── libdd-common v3.0.0 (*)
         │   └── tokio-rustls v0.26.0
         │       ├── hyper-rustls v0.27.3 (*)
         │       └── libdd-common v3.0.0 (*)
         └── rustls-webpki v0.103.4
             └── rustls v0.23.31 (*)

error[vulnerability]: CRL Distribution Point Scope Check Logic Error in AWS-LC
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:11:1
   │
11 │ aws-lc-sys 0.28.0 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
   │
   ├ ID: RUSTSEC-2026-0048
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0048
   ├ A logic error in CRL distribution point matching in AWS-LC allows a revoked
     certificate to bypass revocation checks during certificate validation, when
     the application enables CRL checking and uses partitioned CRLs with Issuing
     Distribution Point (IDP) extensions.
     
     Customers of AWS services do not need to take action. `aws-lc-sys` contains
     code from AWS-LC. Applications using `aws-lc-sys` should upgrade to the most
     recent release of `aws-lc-sys`.
     
     ## Workarounds
     
     Applications can workaround this issue if they do not enable CRL checking
     (`X509_V_FLAG_CRL_CHECK`). Applications using complete (non-partitioned)
     CRLs without IDP extensions are also not affected.
     
     Otherwise, there is no workaround and applications using `aws-lc-sys` should
     upgrade to the most recent releases of `aws-lc-sys`.
   ├ Announcement: https://aws.amazon.com/security/security-bulletins/2026-010-AWS
   ├ Solution: Upgrade to >=0.39.0 (try `cargo update -p aws-lc-sys`)
   ├ aws-lc-sys v0.28.0
     └── aws-lc-rs v1.13.0
         ├── rustls v0.23.31
         │   ├── hyper-rustls v0.27.3
         │   │   └── libdd-common v3.0.0
         │   │       ├── (build) libdd-crashtracker v1.0.0
         │   │       └── libdd-telemetry v3.0.0
         │   │           └── libdd-crashtracker v1.0.0 (*)
         │   ├── libdd-common v3.0.0 (*)
         │   └── tokio-rustls v0.26.0
         │       ├── hyper-rustls v0.27.3 (*)
         │       └── libdd-common v3.0.0 (*)
         └── rustls-webpki v0.103.4
             └── rustls v0.23.31 (*)

error[unmaintained]: paste - no longer maintained
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:141:1
    │
141 │ paste 1.0.15 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ unmaintained advisory detected
    │
    ├ ID: RUSTSEC-2024-0436
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2024-0436
    ├ The creator of the crate `paste` has stated in the [`README.md`](https://github.com/dtolnay/paste/blob/master/README.md) 
      that this project is not longer maintained as well as archived the repository
      
      ## Possible Alternative(s)
      
      - [`pastey`]: a fork of paste and is aimed to be a drop-in replacement with additional features for paste crate
      - [`with_builtin_macros`]: crate providing a [superset of `paste`'s functionality including general `macro_rules!` eager expansions](https://docs.rs/with_builtin_macros/0.1.0/with_builtin_macros/macro.with_eager_expansions.html)  and `concat!`/`concat_idents!` macros
      
      [`pastey`]: https://crates.io/crates/pastey
      [`with_builtin_macros`]: https://crates.io/crates/with_builtin_macros
    ├ Announcement: https://github.com/dtolnay/paste
    ├ Solution: No safe upgrade is available!
    ├ paste v1.0.15
      └── libdd-libunwind-sys v0.1.0
          └── libdd-crashtracker v1.0.0

advisories FAILED, bans ok, sources ok

Updated: 2026-03-20 18:32:46 UTC | Commit: a08c099 | dependency-check job results

let _ = fs::remove_file(&detector_log_path);

let config = CrashTestConfig::new(
BuildProfile::Debug,
Copy link
Contributor Author

@gyuheon0h gyuheon0h Mar 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The reason I do this

SIGCHLD -> SIG_IGN -> kernel auto-reaps collector child -> waitpid returns ECHILD -> reap_child_non_blocking returns unexpected result -> debug_assert_eq! at process_handle.rs:33 fails -> format! allocates to build the panic message -> preload detector catches malloc.

We should be running this test in release mode anyways

@gyuheon0h gyuheon0h force-pushed the gyuheon0h/PROF-14080-saguard-ct branch from afaa9e2 to 007d923 Compare March 20, 2026 17:29
@datadog-datadog-prod-us1-2
Copy link

datadog-datadog-prod-us1-2 bot commented Mar 20, 2026

✅ Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

🎯 Code Coverage (details)
Patch Coverage: 88.89%
Overall Coverage: 71.29% (+0.02%)

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 47de874 | Docs | Datadog PR Page | Was this helpful? React with 👍/👎 or give us feedback!

@gyuheon0h gyuheon0h force-pushed the gyuheon0h/PROF-14080-saguard-ct branch from 007d923 to 7b3be99 Compare March 20, 2026 17:42
@codecov-commenter
Copy link

codecov-commenter commented Mar 20, 2026

Codecov Report

❌ Patch coverage is 88.88889% with 4 lines in your changes missing coverage. Please review.
✅ Project coverage is 71.29%. Comparing base (0c25580) to head (47de874).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1771      +/-   ##
==========================================
+ Coverage   71.27%   71.29%   +0.01%     
==========================================
  Files         432      433       +1     
  Lines       64889    64971      +82     
==========================================
+ Hits        46247    46318      +71     
- Misses      18642    18653      +11     
Components Coverage Δ
libdd-crashtracker 65.18% <88.88%> (+0.34%) ⬆️
libdd-crashtracker-ffi 34.09% <ø> (ø)
libdd-alloc 98.77% <ø> (ø)
libdd-data-pipeline 87.92% <ø> (ø)
libdd-data-pipeline-ffi 75.20% <ø> (ø)
libdd-common 79.87% <ø> (ø)
libdd-common-ffi 73.87% <ø> (ø)
libdd-telemetry 62.48% <ø> (ø)
libdd-telemetry-ffi 16.75% <ø> (ø)
libdd-dogstatsd-client 82.64% <ø> (ø)
datadog-ipc 80.29% <ø> (ø)
libdd-profiling 81.60% <ø> (ø)
libdd-profiling-ffi 64.94% <ø> (ø)
datadog-sidecar 31.61% <ø> (ø)
datdog-sidecar-ffi 8.94% <ø> (ø)
spawn-worker 54.69% <ø> (ø)
libdd-tinybytes 93.16% <ø> (ø)
libdd-trace-normalization 81.71% <ø> (ø)
libdd-trace-obfuscation 92.26% <ø> (ø)
libdd-trace-protobuf 68.25% <ø> (ø)
libdd-trace-utils 89.05% <ø> (ø)
datadog-tracer-flare 86.88% <ø> (ø)
libdd-log 74.69% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@pr-commenter
Copy link

pr-commenter bot commented Mar 20, 2026

Benchmarks

Comparison

Benchmark execution time: 2026-03-20 18:46:04

Comparing candidate commit 47de874 in PR branch gyuheon0h/PROF-14080-saguard-ct with baseline commit 0c25580 in branch main.

Found 4 performance improvements and 0 performance regressions! Performance is the same for 55 metrics, 2 unstable metrics.

Explanation

This is an A/B test comparing a candidate commit's performance against that of a baseline commit. Performance changes are noted in the tables below as:

  • 🟩 = significantly better candidate vs. baseline
  • 🟥 = significantly worse candidate vs. baseline

We compute a confidence interval (CI) over the relative difference of means between metrics from the candidate and baseline commits, considering the baseline as the reference.

If the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD), the change is considered significant.

Feel free to reach out to #apm-benchmarking-platform on Slack if you have any questions.

More details about the CI and significant changes

You can imagine this CI as a range of values that is likely to contain the true difference of means between the candidate and baseline commits.

CIs of the difference of means are often centered around 0%, because often changes are not that big:

---------------------------------(------|---^--------)-------------------------------->
                              -0.6%    0%  0.3%     +1.2%
                                 |          |        |
         lower bound of the CI --'          |        |
sample mean (center of the CI) -------------'        |
         upper bound of the CI ----------------------'

As described above, a change is considered significant if the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD).

For instance, for an execution time metric, this confidence interval indicates a significantly worse performance:

----------------------------------------|---------|---(---------^---------)---------->
                                       0%        1%  1.3%      2.2%      3.1%
                                                  |   |         |         |
       significant impact threshold --------------'   |         |         |
                      lower bound of CI --------------'         |         |
       sample mean (center of the CI) --------------------------'         |
                      upper bound of CI ----------------------------------'

scenario:credit_card/is_card_number/ 378282246310005

  • 🟩 execution_time [-10.608µs; -10.439µs] or [-11.238%; -11.059%]
  • 🟩 throughput [+1318437.917op/s; +1340617.451op/s] or [+12.445%; +12.654%]

scenario:profile_add_sample_frames_x1000

  • 🟩 execution_time [-233.426µs; -232.174µs] or [-5.196%; -5.168%]

scenario:profile_add_sample_timestamped_x1000

  • 🟩 execution_time [-215.666µs; -212.155µs] or [-4.875%; -4.795%]

Candidate

Candidate benchmark details

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 47de874 1774031304 gyuheon0h/PROF-14080-saguard-ct
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
sdk_test_data/rules-based execution_time 144.517µs 146.380µs ± 1.903µs 146.090µs ± 0.555µs 146.711µs 147.965µs 152.671µs 166.051µs 13.66% 6.776 60.910 1.30% 0.135µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
sdk_test_data/rules-based execution_time [146.116µs; 146.644µs] or [-0.180%; +0.180%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 47de874 1774031304 gyuheon0h/PROF-14080-saguard-ct
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time 495.253µs 497.570µs ± 2.481µs 496.270µs ± 0.486µs 499.683µs 503.463µs 504.281µs 507.821µs 2.33% 1.552 1.966 0.50% 0.175µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1969199.747op/s 2009818.423op/s ± 9945.120op/s 2015033.832op/s ± 1972.170op/s 2016428.007op/s 2017610.851op/s 2018211.486op/s 2019169.547op/s 0.21% -1.529 1.852 0.49% 703.226op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 369.677µs 370.294µs ± 0.342µs 370.255µs ± 0.211µs 370.484µs 370.768µs 370.957µs 372.960µs 0.73% 2.474 16.907 0.09% 0.024µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2681250.806op/s 2700562.214op/s ± 2487.292op/s 2700838.775op/s ± 1540.564op/s 2702322.917op/s 2703614.132op/s 2704814.394op/s 2705063.832op/s 0.16% -2.439 16.560 0.09% 175.878op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 168.648µs 169.030µs ± 0.269µs 168.956µs ± 0.132µs 169.148µs 169.441µs 170.045µs 170.435µs 0.88% 1.939 5.754 0.16% 0.019µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5867356.268op/s 5916112.430op/s ± 9375.510op/s 5918700.727op/s ± 4633.421op/s 5922335.593op/s 5926388.807op/s 5928461.195op/s 5929506.715op/s 0.18% -1.920 5.647 0.16% 662.949op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 36.910µs 37.061µs ± 0.116µs 37.037µs ± 0.093µs 37.167µs 37.252µs 37.307µs 37.375µs 0.91% 0.438 -1.130 0.31% 0.008µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26755719.156op/s 26982444.380op/s ± 84653.311op/s 27000248.923op/s ± 68085.740op/s 27060571.871op/s 27083004.450op/s 27089690.660op/s 27093282.498op/s 0.34% -0.431 -1.141 0.31% 5985.893op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 46.201µs 46.293µs ± 0.049µs 46.284µs ± 0.030µs 46.317µs 46.377µs 46.460µs 46.555µs 0.59% 1.438 4.222 0.11% 0.003µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21479959.898op/s 21601528.582op/s ± 23026.116op/s 21605809.521op/s ± 13787.491op/s 21616075.359op/s 21629652.302op/s 21638333.293op/s 21644532.779op/s 0.18% -1.425 4.151 0.11% 1628.192op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time [497.226µs; 497.913µs] or [-0.069%; +0.069%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [2008440.125op/s; 2011196.721op/s] or [-0.069%; +0.069%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [370.246µs; 370.341µs] or [-0.013%; +0.013%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2700217.499op/s; 2700906.928op/s] or [-0.013%; +0.013%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [168.993µs; 169.068µs] or [-0.022%; +0.022%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5914813.074op/s; 5917411.785op/s] or [-0.022%; +0.022%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [37.045µs; 37.078µs] or [-0.044%; +0.044%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [26970712.246op/s; 26994176.515op/s] or [-0.043%; +0.043%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [46.286µs; 46.300µs] or [-0.015%; +0.015%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21598337.384op/s; 21604719.780op/s] or [-0.015%; +0.015%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 47de874 1774031304 gyuheon0h/PROF-14080-saguard-ct
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
write only interface execution_time 1.197µs 3.228µs ± 1.433µs 3.001µs ± 0.025µs 3.027µs 3.673µs 14.177µs 14.777µs 392.41% 7.293 54.514 44.27% 0.101µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [3.029µs; 3.427µs] or [-6.151%; +6.151%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 47de874 1774031304 gyuheon0h/PROF-14080-saguard-ct
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching deserializing traces from msgpack to their internal representation execution_time 48.766ms 49.112ms ± 0.699ms 48.995ms ± 0.080ms 49.087ms 49.238ms 52.124ms 55.534ms 13.35% 7.295 57.741 1.42% 0.049ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching deserializing traces from msgpack to their internal representation execution_time [49.015ms; 49.209ms] or [-0.197%; +0.197%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 47de874 1774031304 gyuheon0h/PROF-14080-saguard-ct
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching serializing traces from their internal representation to msgpack execution_time 13.941ms 13.993ms ± 0.027ms 13.991ms ± 0.012ms 14.002ms 14.024ms 14.094ms 14.200ms 1.50% 3.240 18.439 0.20% 0.002ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching serializing traces from their internal representation to msgpack execution_time [13.989ms; 13.997ms] or [-0.027%; +0.027%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 47de874 1774031304 gyuheon0h/PROF-14080-saguard-ct
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching string interning on wordpress profile execution_time 162.161µs 163.144µs ± 0.277µs 163.099µs ± 0.134µs 163.256µs 163.618µs 164.042µs 164.936µs 1.13% 1.825 9.337 0.17% 0.020µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching string interning on wordpress profile execution_time [163.106µs; 163.182µs] or [-0.024%; +0.024%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 47de874 1774031304 gyuheon0h/PROF-14080-saguard-ct
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
sql/obfuscate_sql_string execution_time 86.164µs 86.382µs ± 0.238µs 86.360µs ± 0.055µs 86.417µs 86.504µs 86.635µs 89.510µs 3.65% 11.436 147.664 0.27% 0.017µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
sql/obfuscate_sql_string execution_time [86.349µs; 86.415µs] or [-0.038%; +0.038%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 47de874 1774031304 gyuheon0h/PROF-14080-saguard-ct
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample_frames_x1000 execution_time 4.255ms 4.259ms ± 0.003ms 4.259ms ± 0.002ms 4.261ms 4.263ms 4.265ms 4.293ms 0.80% 5.251 49.165 0.08% 0.000ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample_frames_x1000 execution_time [4.259ms; 4.260ms] or [-0.011%; +0.011%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 47de874 1774031304 gyuheon0h/PROF-14080-saguard-ct
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
two way interface execution_time 17.589µs 25.461µs ± 9.429µs 17.989µs ± 0.277µs 33.835µs 43.150µs 43.961µs 57.527µs 219.78% 0.738 -0.645 36.94% 0.667µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [24.154µs; 26.767µs] or [-5.133%; +5.133%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 47de874 1774031304 gyuheon0h/PROF-14080-saguard-ct
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
ip_address/quantize_peer_ip_address_benchmark execution_time 4.957µs 5.023µs ± 0.036µs 5.020µs ± 0.036µs 5.058µs 5.081µs 5.085µs 5.088µs 1.35% 0.204 -1.163 0.71% 0.003µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
ip_address/quantize_peer_ip_address_benchmark execution_time [5.018µs; 5.028µs] or [-0.099%; +0.099%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 47de874 1774031304 gyuheon0h/PROF-14080-saguard-ct
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
tags/replace_trace_tags execution_time 2.277µs 2.355µs ± 0.022µs 2.351µs ± 0.008µs 2.364µs 2.401µs 2.407µs 2.409µs 2.48% -0.109 1.796 0.94% 0.002µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
tags/replace_trace_tags execution_time [2.351µs; 2.358µs] or [-0.130%; +0.130%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 47de874 1774031304 gyuheon0h/PROF-14080-saguard-ct
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
credit_card/is_card_number/ execution_time 3.895µs 3.915µs ± 0.003µs 3.915µs ± 0.001µs 3.916µs 3.919µs 3.921µs 3.921µs 0.16% -2.160 17.753 0.07% 0.000µs 1 200
credit_card/is_card_number/ throughput 255042606.589op/s 255440965.710op/s ± 167364.297op/s 255440124.844op/s ± 90628.287op/s 255527648.092op/s 255659696.552op/s 255773661.448op/s 256758450.192op/s 0.52% 2.190 18.021 0.07% 11834.443op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 79.148µs 79.839µs ± 0.363µs 79.804µs ± 0.288µs 80.122µs 80.385µs 80.833µs 81.124µs 1.65% 0.600 0.087 0.45% 0.026µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12326815.579op/s 12525440.977op/s ± 56873.873op/s 12530709.653op/s ± 45345.270op/s 12573974.089op/s 12600408.318op/s 12612676.211op/s 12634564.378op/s 0.83% -0.577 0.028 0.45% 4021.590op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 82.941µs 83.867µs ± 0.476µs 83.862µs ± 0.330µs 84.137µs 84.747µs 85.050µs 85.496µs 1.95% 0.481 0.062 0.57% 0.034µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 11696479.857op/s 11923963.461op/s ± 67563.084op/s 11924324.154op/s ± 46894.388op/s 11975361.311op/s 12020025.797op/s 12045154.157op/s 12056788.680op/s 1.11% -0.450 0.005 0.57% 4777.431op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.896µs 3.915µs ± 0.003µs 3.915µs ± 0.002µs 3.917µs 3.920µs 3.921µs 3.921µs 0.15% -1.563 10.591 0.07% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 255028503.303op/s 255403959.894op/s ± 176961.758op/s 255404657.441op/s ± 106712.815op/s 255502203.710op/s 255641988.744op/s 255749362.572op/s 256646516.985op/s 0.49% 1.584 10.762 0.07% 12513.086op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 69.813µs 70.374µs ± 0.386µs 70.317µs ± 0.235µs 70.565µs 71.017µs 71.589µs 72.246µs 2.74% 1.455 3.254 0.55% 0.027µs 1 200
credit_card/is_card_number/378282246310005 throughput 13841592.747op/s 14210212.507op/s ± 77404.601op/s 14221371.459op/s ± 47348.735op/s 14266161.735op/s 14307578.012op/s 14316943.444op/s 14324068.733op/s 0.72% -1.405 3.017 0.54% 5473.332op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 53.042µs 53.136µs ± 0.035µs 53.135µs ± 0.020µs 53.153µs 53.201µs 53.240µs 53.275µs 0.26% 0.802 2.138 0.07% 0.002µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 18770539.588op/s 18819652.809op/s ± 12309.567op/s 18820048.669op/s ± 7222.523op/s 18828043.923op/s 18835946.395op/s 18844310.747op/s 18853151.803op/s 0.18% -0.795 2.119 0.07% 870.418op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.430µs 6.438µs ± 0.004µs 6.438µs ± 0.003µs 6.440µs 6.446µs 6.450µs 6.454µs 0.26% 0.914 0.909 0.07% 0.000µs 1 200
credit_card/is_card_number/x371413321323331 throughput 154941265.396op/s 155323895.714op/s ± 102346.079op/s 155339704.902op/s ± 64429.765op/s 155399133.650op/s 155465005.360op/s 155486062.314op/s 155515625.868op/s 0.11% -0.909 0.898 0.07% 7236.961op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.895µs 3.915µs ± 0.003µs 3.915µs ± 0.001µs 3.916µs 3.921µs 3.923µs 3.928µs 0.33% -0.483 10.271 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 254601891.827op/s 255409719.441op/s ± 200154.910op/s 255430178.162op/s ± 89031.263op/s 255514308.818op/s 255636396.079op/s 255745372.098op/s 256739693.283op/s 0.51% 0.511 10.420 0.08% 14153.089op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 64.944µs 65.189µs ± 0.146µs 65.164µs ± 0.097µs 65.274µs 65.450µs 65.654µs 65.685µs 0.80% 0.911 0.814 0.22% 0.010µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15224145.891op/s 15339984.796op/s ± 34169.436op/s 15345942.383op/s ± 22955.254op/s 15366909.282op/s 15382998.710op/s 15393663.635op/s 15397918.201op/s 0.34% -0.897 0.775 0.22% 2416.144op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 58.596µs 59.020µs ± 0.241µs 58.971µs ± 0.163µs 59.167µs 59.441µs 59.650µs 59.892µs 1.56% 0.822 0.314 0.41% 0.017µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 16696620.732op/s 16943558.799op/s ± 69084.668op/s 16957603.448op/s ± 46736.602op/s 16998678.780op/s 17027559.968op/s 17041548.031op/s 17066131.259op/s 0.64% -0.802 0.259 0.41% 4885.024op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.901µs 3.916µs ± 0.003µs 3.916µs ± 0.001µs 3.917µs 3.919µs 3.921µs 3.932µs 0.39% 0.006 12.277 0.06% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 254353234.698op/s 255356445.506op/s ± 164698.575op/s 255353895.854op/s ± 85308.122op/s 255442831.392op/s 255594750.420op/s 255641943.899op/s 256369769.929op/s 0.40% 0.022 12.280 0.06% 11645.948op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 55.441µs 55.691µs ± 0.189µs 55.627µs ± 0.102µs 55.776µs 56.065µs 56.264µs 56.545µs 1.65% 1.485 2.735 0.34% 0.013µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 17684888.881op/s 17956507.259op/s ± 60793.352op/s 17976855.752op/s ± 32964.506op/s 18001775.425op/s 18019667.476op/s 18027311.420op/s 18037324.636op/s 0.34% -1.459 2.609 0.34% 4298.739op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 53.053µs 53.129µs ± 0.032µs 53.126µs ± 0.021µs 53.149µs 53.177µs 53.200µs 53.290µs 0.31% 0.623 2.237 0.06% 0.002µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 18765375.321op/s 18822148.662op/s ± 11371.112op/s 18823326.005op/s ± 7404.104op/s 18829780.922op/s 18838365.861op/s 18847365.885op/s 18849109.290op/s 0.14% -0.616 2.208 0.06% 804.059op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.431µs 6.438µs ± 0.004µs 6.437µs ± 0.002µs 6.440µs 6.444µs 6.447µs 6.460µs 0.35% 1.212 4.017 0.06% 0.000µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 154804235.898op/s 155335392.002op/s ± 94566.432op/s 155344759.404op/s ± 59731.789op/s 155404164.834op/s 155466626.003op/s 155484185.066op/s 155502336.087op/s 0.10% -1.204 3.967 0.06% 6686.857op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
credit_card/is_card_number/ execution_time [3.914µs; 3.915µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/ throughput [255417770.628op/s; 255464160.792op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [79.789µs; 79.890µs] or [-0.063%; +0.063%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12517558.806op/s; 12533323.149op/s] or [-0.063%; +0.063%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [83.801µs; 83.933µs] or [-0.079%; +0.079%] None None None
credit_card/is_card_number/ 378282246310005 throughput [11914599.867op/s; 11933327.054op/s] or [-0.079%; +0.079%] None None None
credit_card/is_card_number/37828224631 execution_time [3.915µs; 3.916µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/37828224631 throughput [255379434.697op/s; 255428485.092op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/378282246310005 execution_time [70.320µs; 70.428µs] or [-0.076%; +0.076%] None None None
credit_card/is_card_number/378282246310005 throughput [14199484.974op/s; 14220940.041op/s] or [-0.075%; +0.075%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [53.131µs; 53.141µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [18817946.821op/s; 18821358.796op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.438µs; 6.439µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/x371413321323331 throughput [155309711.532op/s; 155338079.896op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.915µs; 3.916µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ throughput [255381979.895op/s; 255437458.986op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [65.169µs; 65.210µs] or [-0.031%; +0.031%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15335249.241op/s; 15344720.352op/s] or [-0.031%; +0.031%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [58.987µs; 59.054µs] or [-0.057%; +0.057%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [16933984.328op/s; 16953133.269op/s] or [-0.057%; +0.057%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.916µs; 3.916µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255333619.867op/s; 255379271.144op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [55.664µs; 55.717µs] or [-0.047%; +0.047%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [17948081.885op/s; 17964932.632op/s] or [-0.047%; +0.047%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [53.124µs; 53.133µs] or [-0.008%; +0.008%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [18820572.736op/s; 18823724.589op/s] or [-0.008%; +0.008%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.437µs; 6.438µs] or [-0.008%; +0.008%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [155322286.004op/s; 155348498.000op/s] or [-0.008%; +0.008%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 47de874 1774031304 gyuheon0h/PROF-14080-saguard-ct
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
redis/obfuscate_redis_string execution_time 34.291µs 34.906µs ± 1.087µs 34.403µs ± 0.067µs 34.543µs 37.232µs 37.287µs 38.365µs 11.52% 1.706 1.033 3.11% 0.077µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
redis/obfuscate_redis_string execution_time [34.755µs; 35.056µs] or [-0.432%; +0.432%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 47de874 1774031304 gyuheon0h/PROF-14080-saguard-ct
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample_timestamped_x1000 execution_time 4.205ms 4.210ms ± 0.009ms 4.209ms ± 0.002ms 4.211ms 4.215ms 4.216ms 4.325ms 2.77% 11.861 154.429 0.21% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample_timestamped_x1000 execution_time [4.209ms; 4.211ms] or [-0.029%; +0.029%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 47de874 1774031304 gyuheon0h/PROF-14080-saguard-ct
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
concentrator/add_spans_to_concentrator execution_time 13.018ms 13.042ms ± 0.014ms 13.039ms ± 0.008ms 13.049ms 13.069ms 13.079ms 13.091ms 0.40% 0.906 0.649 0.11% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
concentrator/add_spans_to_concentrator execution_time [13.040ms; 13.044ms] or [-0.015%; +0.015%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 47de874 1774031304 gyuheon0h/PROF-14080-saguard-ct
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
single_flag_killswitch/rules-based execution_time 190.833ns 193.339ns ± 2.281ns 193.120ns ± 1.285ns 194.325ns 196.531ns 200.144ns 212.970ns 10.28% 3.662 26.699 1.18% 0.161ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
single_flag_killswitch/rules-based execution_time [193.023ns; 193.655ns] or [-0.164%; +0.164%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 47de874 1774031304 gyuheon0h/PROF-14080-saguard-ct
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/2598 execution_time 3.568ms 3.609ms ± 0.023ms 3.602ms ± 0.013ms 3.620ms 3.658ms 3.670ms 3.700ms 2.72% 1.116 1.150 0.63% 0.002ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
receiver_entry_point/report/2598 execution_time [3.606ms; 3.612ms] or [-0.088%; +0.088%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 47de874 1774031304 gyuheon0h/PROF-14080-saguard-ct
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_trace/test_trace execution_time 238.250ns 249.928ns ± 14.924ns 244.236ns ± 4.150ns 250.576ns 286.267ns 297.331ns 304.633ns 24.73% 1.925 2.687 5.96% 1.055ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_trace/test_trace execution_time [247.859ns; 251.996ns] or [-0.828%; +0.828%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 47de874 1774031304 gyuheon0h/PROF-14080-saguard-ct
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample2_frames_x1000 execution_time 729.586µs 730.983µs ± 0.585µs 730.977µs ± 0.384µs 731.379µs 731.960µs 732.229µs 732.418µs 0.20% 0.038 -0.470 0.08% 0.041µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample2_frames_x1000 execution_time [730.902µs; 731.064µs] or [-0.011%; +0.011%] None None None

Group 20

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 47de874 1774031304 gyuheon0h/PROF-14080-saguard-ct
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... execution_time 185.768µs 186.157µs ± 0.202µs 186.161µs ± 0.142µs 186.296µs 186.514µs 186.611µs 186.754µs 0.32% 0.263 -0.408 0.11% 0.014µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 5354634.068op/s 5371809.844op/s ± 5832.796op/s 5371692.951op/s ± 4084.575op/s 5376427.370op/s 5380263.037op/s 5382485.307op/s 5383072.927op/s 0.21% -0.258 -0.414 0.11% 412.441op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 17.827µs 17.925µs ± 0.036µs 17.922µs ± 0.021µs 17.945µs 17.987µs 18.008µs 18.078µs 0.87% 0.663 1.476 0.20% 0.003µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 55315107.857op/s 55786813.132op/s ± 111439.018op/s 55796794.638op/s ± 64904.938op/s 55857137.160op/s 55948435.299op/s 55993095.668op/s 56095137.353op/s 0.53% -0.645 1.430 0.20% 7879.929op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.162µs 10.328µs ± 0.070µs 10.328µs ± 0.041µs 10.369µs 10.443µs 10.492µs 10.541µs 2.06% 0.195 0.295 0.67% 0.005µs 1 200
normalization/normalize_name/normalize_name/good throughput 94870182.374op/s 96830033.968op/s ± 653396.633op/s 96820332.300op/s ± 387083.873op/s 97244987.657op/s 97874735.402op/s 98318324.644op/s 98403771.548op/s 1.64% -0.150 0.259 0.67% 46202.119op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... execution_time [186.129µs; 186.185µs] or [-0.015%; +0.015%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [5371001.474op/s; 5372618.213op/s] or [-0.015%; +0.015%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [17.920µs; 17.930µs] or [-0.028%; +0.028%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [55771368.756op/s; 55802257.508op/s] or [-0.028%; +0.028%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.318µs; 10.338µs] or [-0.094%; +0.094%] None None None
normalization/normalize_name/normalize_name/good throughput [96739479.479op/s; 96920588.457op/s] or [-0.094%; +0.094%] None None None

Baseline

Omitted due to size.

@gyuheon0h gyuheon0h requested a review from gleocadie March 20, 2026 18:15
signal::kill(Pid::this(), Signal::SIGUSR1).unwrap();

// If we get here, signal was successfully ignored
drop(guard);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do we need an explicit drop

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated in 47de874

Comment on lines +272 to +273
nix::sys::signal::Signal::SIGCHLD,
nix::sys::signal::Signal::SIGPIPE,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

are we sure those are the only signals to suppress?

Copy link
Contributor Author

@gyuheon0h gyuheon0h Mar 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe so, because those are the only two signals the crash handler itself can cause:

SIGCHLD: handle_posix_signal_impl calls alt_fork() to spawn the collector child process and the receiver. When those children exit, the kernel delivers SIGCHLD to the parent.
SIGPIPE: The collector communicates over Unix socket pipes. If the receiver side closes early, writing to the pipe generates SIGPIPE.

The SaGuard's purpose isn't to block all signals but to prevent the crash handler from re-entering the application's signal handlers due to side effects of its own work

WDYT?

Copy link
Contributor Author

@gyuheon0h gyuheon0h Mar 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For papertrail and context:

Suppressing SIGPIPE AND SIGCHLD was the previous behavior before this guard was accidentally removed.

I will investigate chaining SIGCHLD

@dd-octo-sts
Copy link
Contributor

dd-octo-sts bot commented Mar 20, 2026

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 100.39 MB 100.39 MB +0% (+6.68 KB) 👌
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 8.70 MB 8.70 MB 0% (0 B) 👌
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.28 MB 11.28 MB +0% (+312 B) 👌
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 117.06 MB 117.07 MB +0% (+7.14 KB) 👌
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 27.19 MB 27.19 MB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 77.50 KB 77.50 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 186.54 MB 186.54 MB 0% (0 B) 👌
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 916.67 MB 916.67 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 9.94 MB 9.94 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 77.50 KB 77.50 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 24.78 MB 24.78 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 51.54 MB 51.54 MB 0% (0 B) 👌
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 23.00 MB 23.00 MB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 78.71 KB 78.71 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 190.41 MB 190.41 MB 0% (0 B) 👌
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 901.73 MB 901.73 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 7.54 MB 7.54 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 78.71 KB 78.71 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 26.52 MB 26.52 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 47.16 MB 47.16 MB 0% (0 B) 👌
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 87.60 MB 87.61 MB +0% (+6.69 KB) 👌
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 10.23 MB 10.23 MB 0% (0 B) 👌
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 109.94 MB 109.95 MB +0% (+7.31 KB) 👌
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.97 MB 11.97 MB +0% (+264 B) 👌

@gyuheon0h gyuheon0h requested a review from danielsn March 20, 2026 18:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants