Skip to content

feat(crashtracking): add interface for runtimes to report unhandled exception#1562

Open
gyuheon0h wants to merge 4 commits intomainfrom
gyuheon0h/prof-13749-unhandled-exception-ct
Open

feat(crashtracking): add interface for runtimes to report unhandled exception#1562
gyuheon0h wants to merge 4 commits intomainfrom
gyuheon0h/prof-13749-unhandled-exception-ct

Conversation

@gyuheon0h
Copy link
Contributor

@gyuheon0h gyuheon0h commented Feb 13, 2026

What does this PR do?

TLDR

  • Introduces report_unhandled_exception API for runtime-detected crashes (unhandled exceptions, errors) that are not triggered by OS signals

NOTICE: currently, the exception stack is put in the experimental field. This is a bit counter intuitive since it feels like the exception stack is being put somewhere where people won't look at first, but it is planned to make runtime stacks a first class citizen for crash reports, so this field will be surfaced upwards soon (this quarter)

Overview

This feature allows language runtimes (Ruby, Python, etc.) to report crashes detected at the runtime level, such as unhandled exceptions, through the existing crashtracker infrastructure. The runtime calls a single API, providing the error type, message, and a stack trace. libdatadog then handles the full data collection flow: native unwinding, profiler state (counters, spans, traces), process info, /proc/self/maps, and formatting/uploading via the receiver.

The crash report message is formatted as:
Process was terminated due to an unhandled exception of type '{error_type}'. Message: "{error_message}"

The runtime-provided stack goes into experimental.runtime_stack, while the native backtrace captured by libdatadog goes into error.stack. No sig_info or ucontext is collected since no signal is involved.

Prerequisite: The application must have already called ddog_crasht_init() to prime the crashtracker for signal-based crash tracking. This API reuses the stored config, metadata, and receiver configuration.

What was existing that changed

  • Receiver protocol: Added DD_CRASHTRACK_BEGIN_ERROR_KIND / DD_CRASHTRACK_END_ERROR_KIND block. The receiver now parses an explicit error kind from the collector instead of hardcoding UnixSignal. Old receivers gracefully ignore the new block and default to UnixSignal (backward compatible).
  • No collector fork: Unlike the signal path which forks a collector child (signal handler constraints), this path writes directly to the receiver socket from normal execution context.
  • Crash ping readiness: is_ping_ready() now accepts error.kind.is_some() as an alternative to sig_info.is_some(), so crash pings fire for unhandled exception reports too.
  • Backtrace helper: Extracted emit_absolute_addresses_for_frame() as a shared helper used by both the signal-path and caller-path backtrace emitters.

FFI usage example

// Prerequisite: crashtracker must already be initialized via ddog_crasht_init()

// 1. Build the runtime stack trace
ddog_crasht_StackTraceNewResult stack_result = ddog_crasht_StackTrace_new();
// check stack_result...
ddog_Handle_StackTrace *stack = &stack_result.ok;

ddog_crasht_StackFrameNewResult frame_result = ddog_crasht_StackFrame_new();
ddog_Handle_StackFrame *frame = &frame_result.ok;
ddog_crasht_StackFrame_with_function(frame, DDOG_CHARSLICE_C("MyApp.handleRequest"));
ddog_crasht_StackFrame_with_file(frame, DDOG_CHARSLICE_C("app.rb"));
ddog_crasht_StackFrame_with_line(frame, 42);
ddog_crasht_StackTrace_push_frame(stack, frame, false);

// 2. Report the unhandled exception
ddog_VoidResult result = ddog_crasht_report_unhandled_exception(
    DDOG_CHARSLICE_C("RuntimeError"),           // error_type
    DDOG_CHARSLICE_C("something went wrong"),   // error_message
    stack                                        // runtime_stack (consumed)
);

Example output

{
  "counters": {
    "profiler_collecting_sample": 1,
    "profiler_inactive": 0,
    "profiler_serializing": 0,
    "profiler_unwinding": 0
  },
  "data_schema_version": "1.5",
  "error": {
    "is_crash": true,
    "kind": "UnhandledException",
    "message": "Process was terminated due to an unhandled exception of type 'RuntimeError'. Message: \"something went wrong\"",
    "source_type": "Crashtracking",
    "stack": {
      "format": "Datadog Crashtracker 1.0",
      "frames": [
        {
          "ip": "0x100ce2954",
          "sp": "0x16f1491d0",
          "symbol_address": "0x100ce2954"
        },
        {
          "ip": "0x100ce2340",
          "sp": "0x16f149230",
          "symbol_address": "0x100ce2340"
        },
        {
          "ip": "0x100cb60b8",
          "sp": "0x16f149350",
          "symbol_address": "0x100cb60b8"
        },
        {
          "ip": "0x100cb6650",
          "sp": "0x16f149990",
          "symbol_address": "0x100cb6650"
        },
        {
          "ip": "0x100cb77c0",
          "sp": "0x16f1499a0",
          "symbol_address": "0x100cb77c0"
        }
      ],
      "incomplete": false
    }
  },
  "experimental": {
    "runtime_stack": {
      "format": "Datadog Runtime Callback 1.0",
      "frames": [
        {
          "file": "app.rb",
          "function": "TestApp.handleRequest",
          "line": 42
        },
        {
          "file": "main.rb",
          "function": "TestApp.main",
          "line": 10
        }
      ]
    }
  },
  "incomplete": false,
  "metadata": {
    "family": "native",
    "library_name": "libdatadog",
    "library_version": "1.0.0",
    "tags": [
      "service:foo",
      "service_version:bar",
      "runtime-id:xyz",
      "language:native"
    ]
  },
  "os_info": {
    "architecture": "arm64",
    "bitness": "64-bit",
    "os_type": "Mac OS",
    "version": "15.7.0"
  },
  "proc_info": {
    "pid": 85578,
    "tid": 0
  },
  "timestamp": "2026-02-13 06:20:04.420525 UTC",
  "uuid": "27366b68-7689-4cff-8f26-96ead6b0fefa"
}

Motivation

Current API requires runtimes to manually extract all this information and send the ping/report, which is all work that can be done on the libdatadog side.

Additional Notes

Anything else we should know when reviewing?

How to test the change?

Describe here in detail how the change can be validated.

@github-actions
Copy link

github-actions bot commented Feb 13, 2026

📚 Documentation Check Results

⚠️ 998 documentation warning(s) found

📦 libdd-crashtracker - 998 warning(s)


Updated: 2026-02-13 22:48:39 UTC | Commit: 435bf89 | missing-docs job results

@github-actions
Copy link

github-actions bot commented Feb 13, 2026

Clippy Allow Annotation Report

Comparing clippy allow annotations between branches:

  • Base Branch: origin/main
  • PR Branch: origin/gyuheon0h/prof-13749-unhandled-exception-ct

Summary by Rule

Rule Base Branch PR Branch Change
unwrap_used 12 24 ⚠️ +12 (+100.0%)
Total 12 24 ⚠️ +12 (+100.0%)

Annotation Counts by File

File Base Branch PR Branch Change
libdd-crashtracker/src/collector/emitters.rs 12 24 ⚠️ +12 (+100.0%)

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 27 27 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-crashtracker 12 24 ⚠️ +12 (+100.0%)
libdd-data-pipeline 6 6 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 9 9 No change (0%)
libdd-trace-utils 15 15 No change (0%)
Total 220 232 ⚠️ +12 (+5.5%)

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.

@github-actions
Copy link

github-actions bot commented Feb 13, 2026

🔒 Cargo Deny Results

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

📦 libdd-crashtracker - 2 error(s)

Show output
error[vulnerability]: Integer overflow in `BytesMut::reserve`
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:21:1
   │
21 │ bytes 1.8.0 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
   │
   ├ ID: RUSTSEC-2026-0007
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0007
   ├ In the unique reclaim path of `BytesMut::reserve`, the condition
     ```rs
     if v_capacity >= new_cap + offset
     ```
     uses an unchecked addition. When `new_cap + offset` overflows `usize` in release builds, this condition may incorrectly pass, causing `self.cap` to be set to a value that exceeds the actual allocated capacity. Subsequent APIs such as `spare_capacity_mut()` then trust this corrupted `cap` value and may create out-of-bounds slices, leading to UB.
     
     This behavior is observable in release builds (integer overflow wraps), whereas debug builds panic due to overflow checks.
     
     ## PoC
     
     ```rs
     use bytes::*;
     
     fn main() {
         let mut a = BytesMut::from(&b"hello world"[..]);
         let mut b = a.split_off(5);
     
         // Ensure b becomes the unique owner of the backing storage
         drop(a);
     
         // Trigger overflow in new_cap + offset inside reserve
         b.reserve(usize::MAX - 6);
     
         // This call relies on the corrupted cap and may cause UB & HBO
         b.put_u8(b'h');
     }
     ```
     
     # Workarounds
     
     Users of `BytesMut::reserve` are only affected if integer overflow checks are configured to wrap. When integer overflow is configured to panic, this issue does not apply.
   ├ Announcement: https://github.com/advisories/GHSA-434x-w66g-qw3r
   ├ Solution: Upgrade to >=1.11.1 (try `cargo update -p bytes`)
   ├ bytes v1.8.0
     ├── http v1.1.0
     │   ├── http-body v1.0.1
     │   │   ├── http-body-util v0.1.2
     │   │   │   ├── libdd-common v1.1.0
     │   │   │   │   ├── (build) libdd-crashtracker v1.0.0
     │   │   │   │   └── libdd-telemetry v2.0.0
     │   │   │   │       └── libdd-crashtracker v1.0.0 (*)
     │   │   │   └── libdd-telemetry v2.0.0 (*)
     │   │   ├── hyper v1.6.0
     │   │   │   ├── hyper-rustls v0.27.3
     │   │   │   │   └── libdd-common v1.1.0 (*)
     │   │   │   ├── hyper-util v0.1.17
     │   │   │   │   ├── hyper-rustls v0.27.3 (*)
     │   │   │   │   ├── libdd-common v1.1.0 (*)
     │   │   │   │   └── libdd-telemetry v2.0.0 (*)
     │   │   │   ├── libdd-common v1.1.0 (*)
     │   │   │   └── libdd-telemetry v2.0.0 (*)
     │   │   ├── hyper-util v0.1.17 (*)
     │   │   └── libdd-common v1.1.0 (*)
     │   ├── http-body-util v0.1.2 (*)
     │   ├── hyper v1.6.0 (*)
     │   ├── hyper-rustls v0.27.3 (*)
     │   ├── hyper-util v0.1.17 (*)
     │   ├── libdd-common v1.1.0 (*)
     │   ├── libdd-crashtracker v1.0.0 (*)
     │   ├── libdd-telemetry v2.0.0 (*)
     │   └── multer v3.1.0
     │       └── (dev) libdd-common v1.1.0 (*)
     ├── http-body v1.0.1 (*)
     ├── http-body-util v0.1.2 (*)
     ├── hyper v1.6.0 (*)
     ├── hyper-util v0.1.17 (*)
     ├── (dev) libdd-common v1.1.0 (*)
     ├── multer v3.1.0 (*)
     ├── prost v0.14.3
     │   └── libdd-ddsketch v1.0.0
     │       └── libdd-telemetry v2.0.0 (*)
     ├── tokio v1.49.0
     │   ├── hyper v1.6.0 (*)
     │   ├── hyper-rustls v0.27.3 (*)
     │   ├── hyper-util v0.1.17 (*)
     │   ├── (dev) libdd-common v1.1.0 (*)
     │   ├── libdd-crashtracker v1.0.0 (*)
     │   ├── (dev) libdd-telemetry v2.0.0 (*)
     │   ├── tokio-rustls v0.26.0
     │   │   ├── hyper-rustls v0.27.3 (*)
     │   │   └── libdd-common v1.1.0 (*)
     │   └── tokio-util v0.7.12
     │       └── libdd-telemetry v2.0.0 (*)
     └── tokio-util v0.7.12 (*)

error[vulnerability]: Logging user input may result in poisoning logs with ANSI escape sequences
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:219:1
    │
219 │ tracing-subscriber 0.3.19 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2025-0055
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2025-0055
    ├ Previous versions of tracing-subscriber were vulnerable to ANSI escape sequence injection attacks. Untrusted user input containing ANSI escape sequences could be injected into terminal output when logged, potentially allowing attackers to:
      
      - Manipulate terminal title bars
      - Clear screens or modify terminal display
      - Potentially mislead users through terminal manipulation
      
      In isolation, impact is minimal, however security issues have been found in terminal emulators that enabled an attacker to use ANSI escape sequences via logs to exploit vulnerabilities in the terminal emulator.
      
      This was patched in [PR #3368](https://github.com/tokio-rs/tracing/pull/3368) to escape ANSI control characters from user input.
    ├ Announcement: https://github.com/advisories/GHSA-xwfj-jgwm-7wp5
    ├ Solution: Upgrade to >=0.3.20 (try `cargo update -p tracing-subscriber`)
    ├ tracing-subscriber v0.3.19
      └── (dev) libdd-telemetry v2.0.0
          └── libdd-crashtracker v1.0.0

advisories FAILED, bans ok, sources ok

Updated: 2026-02-13 22:51:29 UTC | Commit: 435bf89 | dependency-check job results

@gyuheon0h gyuheon0h force-pushed the gyuheon0h/prof-13749-unhandled-exception-ct branch from 81764f8 to 0d8bb6f Compare February 13, 2026 06:31
@gyuheon0h gyuheon0h changed the title Implement interface for runtimes to report unhandlex exception feat(crashtracking)!: add interface for runtimes to report unhandled exception Feb 13, 2026
@gyuheon0h gyuheon0h marked this pull request as ready for review February 13, 2026 06:42
@gyuheon0h gyuheon0h requested a review from a team as a code owner February 13, 2026 06:42
@gyuheon0h gyuheon0h changed the title feat(crashtracking)!: add interface for runtimes to report unhandled exception feat(crashtracking): add interface for runtimes to report unhandled exception Feb 13, 2026
@codecov-commenter
Copy link

codecov-commenter commented Feb 13, 2026

Codecov Report

❌ Patch coverage is 56.01173% with 150 lines in your changes missing coverage. Please review.
✅ Project coverage is 70.89%. Comparing base (34a9f1c) to head (3d82593).
⚠️ Report is 6 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1562      +/-   ##
==========================================
- Coverage   70.97%   70.89%   -0.08%     
==========================================
  Files         423      423              
  Lines       61800    62118     +318     
==========================================
+ Hits        43864    44041     +177     
- Misses      17936    18077     +141     
Components Coverage Δ
libdd-crashtracker 62.21% <59.19%> (-0.10%) ⬇️
libdd-crashtracker-ffi 15.63% <0.00%> (-0.18%) ⬇️
libdd-alloc 98.77% <ø> (ø)
libdd-data-pipeline 85.96% <ø> (ø)
libdd-data-pipeline-ffi 75.63% <ø> (ø)
libdd-common 79.85% <ø> (ø)
libdd-common-ffi 73.75% <ø> (ø)
libdd-telemetry 62.52% <ø> (ø)
libdd-telemetry-ffi 16.75% <ø> (ø)
libdd-dogstatsd-client 82.64% <ø> (ø)
datadog-ipc 80.71% <ø> (-0.12%) ⬇️
libdd-profiling 81.23% <ø> (+0.01%) ⬆️
libdd-profiling-ffi 63.66% <ø> (ø)
datadog-sidecar 34.08% <ø> (ø)
datdog-sidecar-ffi 14.25% <ø> (ø)
spawn-worker 54.69% <ø> (ø)
libdd-tinybytes 93.16% <ø> (ø)
libdd-trace-normalization 81.71% <ø> (ø)
libdd-trace-obfuscation 94.18% <ø> (ø)
libdd-trace-protobuf 68.00% <ø> (ø)
libdd-trace-utils 88.72% <ø> (ø)
datadog-tracer-flare 88.95% <ø> (ø)
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 Feb 13, 2026

Benchmarks

Comparison

Benchmark execution time: 2026-02-13 23:03:41

Comparing candidate commit 3d82593 in PR branch gyuheon0h/prof-13749-unhandled-exception-ct with baseline commit ecb47c8 in branch main.

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

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 3d82593 1771022829 gyuheon0h/prof-13749-unhandled-exception-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 241.911ns 252.276ns ± 13.133ns 245.492ns ± 2.745ns 254.627ns 284.480ns 286.377ns 288.357ns 17.46% 1.481 0.779 5.19% 0.929ns 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 [250.456ns; 254.096ns] or [-0.721%; +0.721%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3d82593 1771022829 gyuheon0h/prof-13749-unhandled-exception-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 10.695ms 10.721ms ± 0.013ms 10.720ms ± 0.008ms 10.727ms 10.743ms 10.754ms 10.773ms 0.50% 0.740 1.455 0.12% 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 [10.719ms; 10.723ms] or [-0.016%; +0.016%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3d82593 1771022829 gyuheon0h/prof-13749-unhandled-exception-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 143.877µs 145.925µs ± 1.696µs 145.675µs ± 0.449µs 146.147µs 147.493µs 152.861µs 161.505µs 10.87% 5.624 42.258 1.16% 0.120µ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 [145.690µs; 146.160µs] or [-0.161%; +0.161%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3d82593 1771022829 gyuheon0h/prof-13749-unhandled-exception-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 33.776µs 34.541µs ± 1.393µs 33.891µs ± 0.054µs 34.027µs 37.558µs 37.605µs 37.753µs 11.40% 1.695 0.900 4.02% 0.099µ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.348µs; 34.734µs] or [-0.559%; +0.559%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3d82593 1771022829 gyuheon0h/prof-13749-unhandled-exception-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.021ms 48.287ms ± 0.989ms 48.162ms ± 0.052ms 48.216ms 48.501ms 50.581ms 61.321ms 27.32% 11.746 149.610 2.04% 0.070ms 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 [48.150ms; 48.424ms] or [-0.284%; +0.284%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3d82593 1771022829 gyuheon0h/prof-13749-unhandled-exception-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 544.904µs 545.862µs ± 0.479µs 545.945µs ± 0.334µs 546.166µs 546.530µs 546.916µs 548.597µs 0.49% 0.945 4.087 0.09% 0.034µ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 [545.796µs; 545.929µs] or [-0.012%; +0.012%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3d82593 1771022829 gyuheon0h/prof-13749-unhandled-exception-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.962µs 5.067µs ± 0.031µs 5.077µs ± 0.018µs 5.089µs 5.105µs 5.107µs 5.108µs 0.60% -1.047 0.883 0.62% 0.002µ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.062µs; 5.071µs] or [-0.086%; +0.086%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3d82593 1771022829 gyuheon0h/prof-13749-unhandled-exception-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 90.569µs 90.977µs ± 0.155µs 90.968µs ± 0.067µs 91.039µs 91.155µs 91.400µs 92.270µs 1.43% 3.167 24.102 0.17% 0.011µ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 [90.955µs; 90.998µs] or [-0.024%; +0.024%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3d82593 1771022829 gyuheon0h/prof-13749-unhandled-exception-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 3.919ms 3.924ms ± 0.007ms 3.923ms ± 0.001ms 3.925ms 3.929ms 3.934ms 4.019ms 2.45% 11.755 152.682 0.18% 0.001ms 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 [3.923ms; 3.925ms] or [-0.025%; +0.025%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3d82593 1771022829 gyuheon0h/prof-13749-unhandled-exception-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/2597 execution_time 9.670ms 9.958ms ± 0.079ms 9.971ms ± 0.038ms 10.007ms 10.063ms 10.086ms 10.108ms 1.38% -1.248 1.913 0.79% 0.006ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
receiver_entry_point/report/2597 execution_time [9.947ms; 9.969ms] or [-0.109%; +0.109%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3d82593 1771022829 gyuheon0h/prof-13749-unhandled-exception-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 493.194µs 494.035µs ± 0.576µs 493.942µs ± 0.253µs 494.234µs 494.807µs 495.157µs 499.534µs 1.13% 4.659 40.276 0.12% 0.041µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 2001865.739op/s 2024151.594op/s ± 2345.869op/s 2024527.716op/s ± 1039.215op/s 2025356.165op/s 2026652.359op/s 2026991.061op/s 2027597.860op/s 0.15% -4.587 39.362 0.12% 165.878op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 376.876µs 377.529µs ± 0.325µs 377.490µs ± 0.212µs 377.733µs 378.077µs 378.377µs 378.709µs 0.32% 0.642 0.739 0.09% 0.023µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2640549.565op/s 2648803.404op/s ± 2280.991op/s 2649076.339op/s ± 1488.951op/s 2650375.538op/s 2652086.525op/s 2653056.031op/s 2653392.016op/s 0.16% -0.636 0.724 0.09% 161.290op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 167.716µs 167.908µs ± 0.107µs 167.885µs ± 0.071µs 167.977µs 168.092µs 168.218µs 168.293µs 0.24% 0.665 0.325 0.06% 0.008µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5942024.359op/s 5955648.162op/s ± 3802.327op/s 5956452.927op/s ± 2523.563op/s 5958299.249op/s 5961009.274op/s 5962155.371op/s 5962444.641op/s 0.10% -0.661 0.317 0.06% 268.865op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 38.594µs 38.800µs ± 0.055µs 38.808µs ± 0.035µs 38.839µs 38.879µs 38.900µs 38.912µs 0.27% -0.841 1.597 0.14% 0.004µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 25699005.248op/s 25773363.059op/s ± 36260.353op/s 25767960.449op/s ± 22909.065op/s 25797160.252op/s 25827458.418op/s 25896028.097op/s 25910518.103op/s 0.55% 0.853 1.635 0.14% 2563.994op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 45.482µs 45.708µs ± 0.127µs 45.705µs ± 0.059µs 45.762µs 45.824µs 45.870µs 47.098µs 3.05% 6.443 69.513 0.28% 0.009µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21232454.325op/s 21878180.178op/s ± 59808.851op/s 21879611.812op/s ± 28392.115op/s 21908860.603op/s 21946827.741op/s 21972501.778op/s 21986607.225op/s 0.49% -6.197 66.079 0.27% 4229.124op/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 [493.955µs; 494.115µs] or [-0.016%; +0.016%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [2023826.479op/s; 2024476.709op/s] or [-0.016%; +0.016%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [377.484µs; 377.574µs] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2648487.280op/s; 2649119.527op/s] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [167.893µs; 167.923µs] or [-0.009%; +0.009%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5955121.196op/s; 5956175.128op/s] or [-0.009%; +0.009%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [38.792µs; 38.807µs] or [-0.019%; +0.019%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [25768337.723op/s; 25778388.396op/s] or [-0.019%; +0.019%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [45.690µs; 45.726µs] or [-0.039%; +0.039%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21869891.247op/s; 21886469.110op/s] or [-0.038%; +0.038%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3d82593 1771022829 gyuheon0h/prof-13749-unhandled-exception-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.212µs 3.222µs ± 1.470µs 3.000µs ± 0.022µs 3.022µs 3.686µs 14.039µs 15.616µs 420.49% 7.432 56.271 45.50% 0.104µ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.018µs; 3.426µs] or [-6.322%; +6.322%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3d82593 1771022829 gyuheon0h/prof-13749-unhandled-exception-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.414µs 2.437µs ± 0.019µs 2.432µs ± 0.010µs 2.448µs 2.488µs 2.493µs 2.497µs 2.68% 1.370 1.527 0.79% 0.001µ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.435µs; 2.440µs] or [-0.110%; +0.110%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3d82593 1771022829 gyuheon0h/prof-13749-unhandled-exception-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 159.685µs 160.879µs ± 0.366µs 160.824µs ± 0.129µs 160.966µs 161.411µs 162.105µs 163.996µs 1.97% 3.742 28.059 0.23% 0.026µ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 [160.828µs; 160.929µs] or [-0.032%; +0.032%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3d82593 1771022829 gyuheon0h/prof-13749-unhandled-exception-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 14.816ms 14.858ms ± 0.029ms 14.852ms ± 0.010ms 14.863ms 14.894ms 14.978ms 15.049ms 1.33% 3.312 13.981 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 [14.854ms; 14.862ms] or [-0.027%; +0.027%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3d82593 1771022829 gyuheon0h/prof-13749-unhandled-exception-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.560µs 24.097µs ± 8.422µs 17.945µs ± 0.250µs 31.761µs 40.050µs 47.340µs 64.852µs 261.40% 1.230 1.675 34.86% 0.596µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [22.930µs; 25.264µs] or [-4.844%; +4.844%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3d82593 1771022829 gyuheon0h/prof-13749-unhandled-exception-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 188.214ns 190.650ns ± 2.067ns 190.412ns ± 1.420ns 191.601ns 194.934ns 196.400ns 197.908ns 3.94% 1.077 0.988 1.08% 0.146ns 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 [190.363ns; 190.936ns] or [-0.150%; +0.150%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3d82593 1771022829 gyuheon0h/prof-13749-unhandled-exception-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.893µs 3.913µs ± 0.003µs 3.912µs ± 0.002µs 3.915µs 3.917µs 3.919µs 3.926µs 0.34% -0.829 10.097 0.08% 0.000µs 1 200
credit_card/is_card_number/ throughput 254729588.994op/s 255577805.086op/s ± 192966.834op/s 255593060.649op/s ± 128586.503op/s 255705881.416op/s 255805130.137op/s 255830113.434op/s 256870816.993op/s 0.50% 0.855 10.236 0.08% 13644.816op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 78.615µs 80.492µs ± 0.806µs 80.400µs ± 0.551µs 81.050µs 81.795µs 82.153µs 83.300µs 3.61% 0.249 -0.177 1.00% 0.057µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12004770.286op/s 12424867.665op/s ± 124100.538op/s 12437751.206op/s ± 85659.603op/s 12515600.039op/s 12619755.453op/s 12698483.646op/s 12720189.847op/s 2.27% -0.197 -0.232 1.00% 8775.233op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 71.805µs 72.379µs ± 0.440µs 72.253µs ± 0.300µs 72.677µs 73.166µs 73.595µs 74.359µs 2.91% 1.095 1.560 0.61% 0.031µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13448258.214op/s 13816687.375op/s ± 83493.076op/s 13840165.513op/s ± 57767.182op/s 13890333.381op/s 13912445.240op/s 13920066.557op/s 13926545.388op/s 0.62% -1.053 1.371 0.60% 5903.852op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.890µs 3.912µs ± 0.003µs 3.912µs ± 0.001µs 3.914µs 3.916µs 3.919µs 3.922µs 0.27% -1.764 18.786 0.07% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 254965009.643op/s 255626215.530op/s ± 182355.563op/s 255651309.222op/s ± 91241.698op/s 255733761.548op/s 255806227.144op/s 255852011.938op/s 257069563.869op/s 0.55% 1.802 19.096 0.07% 12894.486op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 68.555µs 69.116µs ± 0.365µs 69.039µs ± 0.227µs 69.338µs 69.747µs 70.091µs 71.065µs 2.93% 1.352 3.382 0.53% 0.026µs 1 200
credit_card/is_card_number/378282246310005 throughput 14071591.795op/s 14468783.460op/s ± 75957.916op/s 14484584.851op/s ± 47641.952op/s 14526829.973op/s 14560518.101op/s 14577530.504op/s 14586819.290op/s 0.71% -1.297 3.064 0.52% 5371.036op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 45.467µs 45.748µs ± 0.090µs 45.755µs ± 0.067µs 45.813µs 45.886µs 45.943µs 46.014µs 0.57% -0.008 -0.192 0.20% 0.006µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 21732701.663op/s 21858865.520op/s ± 43222.876op/s 21855743.271op/s ± 31796.967op/s 21889939.384op/s 21924440.288op/s 21951056.820op/s 21994183.493op/s 0.63% 0.018 -0.191 0.20% 3056.319op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.427µs 6.434µs ± 0.004µs 6.434µs ± 0.003µs 6.437µs 6.442µs 6.449µs 6.450µs 0.25% 1.136 1.869 0.07% 0.000µs 1 200
credit_card/is_card_number/x371413321323331 throughput 155040822.248op/s 155413145.198op/s ± 102578.210op/s 155427074.761op/s ± 63409.699op/s 155488116.069op/s 155545402.846op/s 155575820.496op/s 155591168.645op/s 0.11% -1.131 1.852 0.07% 7253.375op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.892µs 3.912µs ± 0.003µs 3.912µs ± 0.001µs 3.914µs 3.916µs 3.918µs 3.920µs 0.20% -1.778 16.616 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 255128028.473op/s 255609773.164op/s ± 172898.081op/s 255629382.388op/s ± 94226.129op/s 255705983.521op/s 255801404.804op/s 255821994.153op/s 256949158.333op/s 0.52% 1.809 16.885 0.07% 12225.741op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 61.450µs 62.809µs ± 0.577µs 62.820µs ± 0.409µs 63.173µs 63.767µs 64.146µs 64.477µs 2.64% 0.256 -0.182 0.92% 0.041µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15509436.903op/s 15922572.184op/s ± 146009.873op/s 15918564.786op/s ± 102937.360op/s 16038224.510op/s 16135327.154op/s 16223111.814op/s 16273307.522op/s 2.23% -0.208 -0.225 0.91% 10324.457op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 53.856µs 54.054µs ± 0.072µs 54.053µs ± 0.048µs 54.099µs 54.172µs 54.212µs 54.237µs 0.34% -0.098 -0.185 0.13% 0.005µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 18437705.782op/s 18500194.157op/s ± 24486.056op/s 18500219.989op/s ± 16488.155op/s 18516756.072op/s 18541038.859op/s 18558602.466op/s 18568109.272op/s 0.37% 0.105 -0.182 0.13% 1731.426op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.892µs 3.912µs ± 0.003µs 3.912µs ± 0.001µs 3.913µs 3.917µs 3.920µs 3.923µs 0.29% -0.705 11.365 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 254900657.030op/s 255615157.524op/s ± 194609.837op/s 255645113.016op/s ± 91303.857op/s 255729734.975op/s 255812704.735op/s 255864883.685op/s 256959590.215op/s 0.51% 0.735 11.546 0.08% 13760.994op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 50.185µs 50.366µs ± 0.095µs 50.356µs ± 0.060µs 50.419µs 50.516µs 50.584µs 50.978µs 1.24% 1.522 7.505 0.19% 0.007µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 19616274.134op/s 19854929.635op/s ± 37318.092op/s 19858563.131op/s ± 23634.154op/s 19879669.559op/s 19907957.611op/s 19924758.764op/s 19926386.521op/s 0.34% -1.482 7.208 0.19% 2638.788op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 45.503µs 45.726µs ± 0.085µs 45.724µs ± 0.059µs 45.783µs 45.857µs 45.923µs 45.957µs 0.51% 0.080 -0.173 0.18% 0.006µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 21759488.106op/s 21869401.778op/s ± 40535.209op/s 21870387.495op/s ± 28174.342op/s 21897866.074op/s 21939657.468op/s 21949695.869op/s 21976332.594op/s 0.48% -0.070 -0.177 0.18% 2866.272op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.429µs 6.435µs ± 0.004µs 6.434µs ± 0.002µs 6.437µs 6.441µs 6.445µs 6.450µs 0.25% 0.941 1.312 0.06% 0.000µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 155031536.547op/s 155405693.858op/s ± 90038.535op/s 155420072.502op/s ± 58756.308op/s 155470085.915op/s 155525850.741op/s 155546672.736op/s 155554278.734op/s 0.09% -0.937 1.297 0.06% 6366.686op/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.912µs; 3.913µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/ throughput [255551061.738op/s; 255604548.433op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [80.380µs; 80.603µs] or [-0.139%; +0.139%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12407668.524op/s; 12442066.806op/s] or [-0.138%; +0.138%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [72.318µs; 72.440µs] or [-0.084%; +0.084%] None None None
credit_card/is_card_number/ 378282246310005 throughput [13805116.038op/s; 13828258.712op/s] or [-0.084%; +0.084%] None None None
credit_card/is_card_number/37828224631 execution_time [3.912µs; 3.912µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/37828224631 throughput [255600942.803op/s; 255651488.257op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/378282246310005 execution_time [69.066µs; 69.167µs] or [-0.073%; +0.073%] None None None
credit_card/is_card_number/378282246310005 throughput [14458256.424op/s; 14479310.497op/s] or [-0.073%; +0.073%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [45.736µs; 45.761µs] or [-0.027%; +0.027%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [21852875.245op/s; 21864855.795op/s] or [-0.027%; +0.027%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.434µs; 6.435µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/x371413321323331 throughput [155398928.845op/s; 155427361.552op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.912µs; 3.913µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/ throughput [255585811.153op/s; 255633735.176op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [62.729µs; 62.889µs] or [-0.127%; +0.127%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15902336.620op/s; 15942807.748op/s] or [-0.127%; +0.127%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [54.044µs; 54.063µs] or [-0.018%; +0.018%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [18496800.626op/s; 18503587.689op/s] or [-0.018%; +0.018%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.912µs; 3.913µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255588186.472op/s; 255642128.576op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [50.352µs; 50.379µs] or [-0.026%; +0.026%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [19849757.707op/s; 19860101.564op/s] or [-0.026%; +0.026%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [45.714µs; 45.738µs] or [-0.026%; +0.026%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [21863783.988op/s; 21875019.569op/s] or [-0.026%; +0.026%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.434µs; 6.435µs] or [-0.008%; +0.008%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [155393215.383op/s; 155418172.333op/s] or [-0.008%; +0.008%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 3d82593 1771022829 gyuheon0h/prof-13749-unhandled-exception-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.625µs 186.030µs ± 0.328µs 185.974µs ± 0.144µs 186.143µs 186.560µs 187.383µs 187.984µs 1.08% 2.631 10.088 0.18% 0.023µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 5319594.594op/s 5375494.006op/s ± 9434.896op/s 5377099.337op/s ± 4174.940op/s 5380954.059op/s 5385421.634op/s 5387071.324op/s 5387202.485op/s 0.19% -2.604 9.901 0.18% 667.148op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 17.431µs 17.556µs ± 0.056µs 17.556µs ± 0.034µs 17.588µs 17.647µs 17.698µs 17.772µs 1.23% 0.388 0.675 0.32% 0.004µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 56267063.342op/s 56961840.324op/s ± 181219.372op/s 56959165.781op/s ± 111837.855op/s 57082540.201op/s 57238694.381op/s 57346345.383op/s 57369110.446op/s 0.72% -0.364 0.629 0.32% 12814.145op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 9.887µs 9.989µs ± 0.045µs 9.998µs ± 0.033µs 10.022µs 10.051µs 10.062µs 10.103µs 1.05% -0.425 -0.508 0.44% 0.003µs 1 200
normalization/normalize_name/normalize_name/good throughput 98978780.763op/s 100108391.468op/s ± 446922.852op/s 100016147.812op/s ± 325037.973op/s 100471737.856op/s 100996535.194op/s 101130414.939op/s 101144476.778op/s 1.13% 0.442 -0.496 0.45% 31602.218op/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 [185.985µs; 186.075µs] or [-0.024%; +0.024%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [5374186.420op/s; 5376801.591op/s] or [-0.024%; +0.024%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [17.548µs; 17.564µs] or [-0.044%; +0.044%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [56936725.062op/s; 56986955.586op/s] or [-0.044%; +0.044%] None None None
normalization/normalize_name/normalize_name/good execution_time [9.983µs; 9.996µs] or [-0.062%; +0.062%] None None None
normalization/normalize_name/normalize_name/good throughput [100046452.259op/s; 100170330.677op/s] or [-0.062%; +0.062%] None None None

Baseline

Omitted due to size.

Comment on lines +477 to +482
if config.resolve_frames() != StacktraceCollection::Disabled {
unsafe { emit_backtrace_from_caller(pipe, config.resolve_frames())? };
}

// Runtime-provided stack frames
emit_runtime_stack_from_stacktrace(pipe, runtime_stack)?;
Copy link
Contributor

Choose a reason for hiding this comment

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

Why not putting the stack trace in the error.stack (since it's the stacktrace of that lead to the process termination) ?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good point

I am capturing the native stack trace, since we can capture that information anyways

I am putting the runtime stacks in the experimental section, because that is where runtime stacks go currently, vs native stack.

However, I think we should move the runtime stack section to error. Feels like we should have both native and runtime stacks in the error, since both should be supported as first class citizens soon.

Thoughts?

@gyuheon0h gyuheon0h requested a review from gleocadie February 14, 2026 19:13
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