Skip to content

feat(crashtracking): unhandled exception reporting FFI#1597

Merged
gh-worker-dd-mergequeue-cf854d[bot] merged 5 commits intomainfrom
02-18-gyuheon0h_unhandled-exception-ffi
Feb 20, 2026
Merged

feat(crashtracking): unhandled exception reporting FFI#1597
gh-worker-dd-mergequeue-cf854d[bot] merged 5 commits intomainfrom
02-18-gyuheon0h_unhandled-exception-ffi

Conversation

@gyuheon0h
Copy link
Copy Markdown
Contributor

@gyuheon0h gyuheon0h commented Feb 18, 2026

What does this PR do?

Add FFI interface for reporting unhandled exception. Also adds tests for it.

The FFI examples test infra part is largely claude code driven

PR below on the stack: feat(crashtracking): report unhandled exceptions

Motivation

What inspired you to submit this pull request?

Additional Notes

Anything else we should know when reviewing?

How to test the change?

Run ffi example tests

Copy link
Copy Markdown
Contributor Author

gyuheon0h commented Feb 18, 2026

@gyuheon0h gyuheon0h changed the title gyuheon0h/unhandled-exception-ffi feat(crashtracking): unhandled exception reporting FFI Feb 18, 2026
@gyuheon0h gyuheon0h added the AI Generated PR largely written by AI tools label Feb 18, 2026
@github-actions
Copy link
Copy Markdown

github-actions bot commented Feb 18, 2026

Clippy Allow Annotation Report

Comparing clippy allow annotations between branches:

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 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 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 9 9 No change (0%)
libdd-trace-utils 15 15 No change (0%)
Total 219 219 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 force-pushed the 02-18-gyuheon0h_unhandled-exception-ffi branch from 7a22d3d to 6278161 Compare February 18, 2026 07:33
@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Feb 18, 2026

Codecov Report

❌ Patch coverage is 0% with 51 lines in your changes missing coverage. Please review.
✅ Project coverage is 71.22%. Comparing base (c2457b1) to head (6392075).

Additional details and impacted files
@@                               Coverage Diff                               @@
##           02-18-gyuheon0h_report-unhandled-exceptions    #1597      +/-   ##
===============================================================================
- Coverage                                        71.25%   71.22%   -0.03%     
===============================================================================
  Files                                              423      423              
  Lines                                            62439    62486      +47     
===============================================================================
+ Hits                                             44489    44505      +16     
- Misses                                           17950    17981      +31     
Components Coverage Δ
libdd-crashtracker 63.05% <0.00%> (-0.06%) ⬇️
libdd-crashtracker-ffi 15.63% <0.00%> (-0.18%) ⬇️
libdd-alloc 98.77% <ø> (ø)
libdd-data-pipeline 87.27% <ø> (ø)
libdd-data-pipeline-ffi 71.51% <ø> (ø)
libdd-common 79.73% <ø> (ø)
libdd-common-ffi 73.40% <ø> (ø)
libdd-telemetry 62.48% <ø> (ø)
libdd-telemetry-ffi 16.75% <ø> (ø)
libdd-dogstatsd-client 82.64% <ø> (ø)
datadog-ipc 80.74% <ø> (ø)
libdd-profiling 81.56% <ø> (ø)
libdd-profiling-ffi 63.65% <ø> (ø)
datadog-sidecar 34.20% <ø> (+0.01%) ⬆️
datdog-sidecar-ffi 15.63% <ø> (ø)
spawn-worker 54.69% <ø> (ø)
libdd-tinybytes 93.16% <ø> (ø)
libdd-trace-normalization 81.71% <ø> (ø)
libdd-trace-obfuscation 94.21% <ø> (ø)
libdd-trace-protobuf 68.00% <ø> (ø)
libdd-trace-utils 88.97% <ø> (ø)
datadog-tracer-flare 86.86% <ø> (ø)
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
Copy Markdown

pr-commenter bot commented Feb 18, 2026

Benchmarks

Comparison

Benchmark execution time: 2026-02-20 19:10:55

Comparing candidate commit 6392075 in PR branch 02-18-gyuheon0h_unhandled-exception-ffi with baseline commit c2457b1 in branch 02-18-gyuheon0h_report-unhandled-exceptions.

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 6392075 1771613654 02-18-gyuheon0h_unhandled-exception-ffi
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.374ms 48.838ms ± 1.081ms 48.705ms ± 0.090ms 48.809ms 48.942ms 56.257ms 59.514ms 22.19% 8.101 67.394 2.21% 0.076ms 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.688ms; 48.988ms] or [-0.307%; +0.307%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6392075 1771613654 02-18-gyuheon0h_unhandled-exception-ffi
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.260µs 3.186µs ± 1.433µs 3.014µs ± 0.028µs 3.039µs 3.400µs 13.779µs 15.332µs 408.72% 7.526 57.282 44.85% 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 [2.988µs; 3.385µs] or [-6.231%; +6.231%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6392075 1771613654 02-18-gyuheon0h_unhandled-exception-ffi
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.894µs 3.915µs ± 0.003µs 3.914µs ± 0.001µs 3.916µs 3.919µs 3.920µs 3.921µs 0.17% -2.057 18.704 0.07% 0.000µs 1 200
credit_card/is_card_number/ throughput 255046527.275op/s 255457975.464op/s ± 166730.663op/s 255469611.914op/s ± 75536.606op/s 255537947.386op/s 255661292.875op/s 255712025.933op/s 256786939.103op/s 0.52% 2.089 18.995 0.07% 11789.638op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 78.738µs 80.105µs ± 0.601µs 80.139µs ± 0.392µs 80.496µs 81.121µs 81.527µs 81.702µs 1.95% 0.040 -0.268 0.75% 0.043µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12239572.496op/s 12484305.976op/s ± 93665.063op/s 12478302.748op/s ± 61318.698op/s 12550477.709op/s 12646961.551op/s 12678882.841op/s 12700407.348op/s 1.78% -0.001 -0.287 0.75% 6623.120op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 71.421µs 71.649µs ± 0.198µs 71.570µs ± 0.086µs 71.763µs 72.052µs 72.270µs 72.442µs 1.22% 1.462 1.907 0.28% 0.014µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13804074.628op/s 13957031.203op/s ± 38478.172op/s 13972291.550op/s ± 16716.587op/s 13984341.034op/s 13992738.818op/s 13998018.365op/s 14001573.777op/s 0.21% -1.447 1.844 0.28% 2720.818op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.896µs 3.916µs ± 0.003µs 3.916µs ± 0.002µs 3.918µs 3.920µs 3.922µs 3.926µs 0.24% -1.194 8.053 0.08% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 254731906.881op/s 255359873.260op/s ± 201419.765op/s 255350147.767op/s ± 144349.011op/s 255513088.660op/s 255628281.941op/s 255676015.046op/s 256689757.024op/s 0.52% 1.215 8.199 0.08% 14242.528op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 68.237µs 68.468µs ± 0.219µs 68.374µs ± 0.088µs 68.577µs 68.866µs 69.151µs 69.417µs 1.53% 1.504 2.171 0.32% 0.016µs 1 200
credit_card/is_card_number/378282246310005 throughput 14405599.318op/s 14605580.282op/s ± 46597.212op/s 14625506.884op/s ± 18889.802op/s 14639559.752op/s 14649415.408op/s 14653154.730op/s 14654814.870op/s 0.20% -1.486 2.084 0.32% 3294.920op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 45.382µs 45.718µs ± 0.115µs 45.723µs ± 0.086µs 45.806µs 45.890µs 45.939µs 45.988µs 0.58% -0.273 -0.436 0.25% 0.008µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 21744906.628op/s 21873483.787op/s ± 54829.822op/s 21870766.443op/s ± 41359.738op/s 21913932.880op/s 21968905.477op/s 22000574.065op/s 22035092.747op/s 0.75% 0.285 -0.426 0.25% 3877.054op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.542µs 6.618µs ± 0.018µs 6.622µs ± 0.012µs 6.632µs 6.640µs 6.645µs 6.657µs 0.53% -1.050 1.812 0.27% 0.001µs 1 200
credit_card/is_card_number/x371413321323331 throughput 150225263.379op/s 151102986.502op/s ± 410927.725op/s 151019139.482op/s ± 264641.509op/s 151347313.954op/s 151772300.529op/s 152292138.482op/s 152861883.829op/s 1.22% 1.072 1.895 0.27% 29056.978op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.900µs 3.916µs ± 0.003µs 3.916µs ± 0.002µs 3.918µs 3.920µs 3.923µs 3.933µs 0.45% 0.474 7.551 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 254229451.337op/s 255367268.421op/s ± 200794.631op/s 255376505.364op/s ± 120946.688op/s 255499945.191op/s 255603763.486op/s 255701509.707op/s 256421480.610op/s 0.41% -0.452 7.531 0.08% 14198.325op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 65.051µs 65.739µs ± 0.075µs 65.740µs ± 0.037µs 65.782µs 65.839µs 65.859µs 65.889µs 0.23% -3.867 33.425 0.11% 0.005µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15177079.317op/s 15211619.226op/s ± 17484.093op/s 15211383.049op/s ± 8534.042op/s 15219009.000op/s 15234181.564op/s 15252788.334op/s 15372465.804op/s 1.06% 3.938 34.256 0.11% 1236.312op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 53.351µs 53.427µs ± 0.037µs 53.421µs ± 0.020µs 53.446µs 53.498µs 53.525µs 53.542µs 0.23% 0.723 0.420 0.07% 0.003µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 18676998.888op/s 18717074.806op/s ± 12833.297op/s 18719069.973op/s ± 7077.994op/s 18725610.639op/s 18735237.997op/s 18739828.380op/s 18743802.332op/s 0.13% -0.720 0.413 0.07% 907.451op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.896µs 3.915µs ± 0.003µs 3.915µs ± 0.001µs 3.916µs 3.919µs 3.921µs 3.924µs 0.24% -1.312 13.492 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 254847388.922op/s 255434363.015op/s ± 168252.404op/s 255455050.564op/s ± 83922.767op/s 255526121.306op/s 255614608.914op/s 255742871.931op/s 256662316.606op/s 0.47% 1.339 13.691 0.07% 11897.242op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 50.157µs 50.229µs ± 0.041µs 50.230µs ± 0.031µs 50.257µs 50.293µs 50.343µs 50.403µs 0.34% 0.591 0.839 0.08% 0.003µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 19840185.323op/s 19908686.355op/s ± 16412.911op/s 19908518.388op/s ± 12115.458op/s 19921392.179op/s 19933211.781op/s 19935997.594op/s 19937263.413op/s 0.14% -0.584 0.819 0.08% 1160.568op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 45.403µs 45.623µs ± 0.087µs 45.627µs ± 0.060µs 45.688µs 45.750µs 45.801µs 45.820µs 0.42% -0.279 -0.457 0.19% 0.006µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 21824528.608op/s 21918938.962op/s ± 42006.346op/s 21916772.171op/s ± 28764.322op/s 21944773.796op/s 21993075.164op/s 22011786.190op/s 22024881.509op/s 0.49% 0.287 -0.452 0.19% 2970.297op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.552µs 6.624µs ± 0.018µs 6.627µs ± 0.012µs 6.639µs 6.646µs 6.650µs 6.673µs 0.71% -0.841 1.156 0.27% 0.001µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 149847871.188op/s 150960150.349op/s ± 406047.051op/s 150907351.776op/s ± 278138.391op/s 151181120.011op/s 151714173.930op/s 151995586.741op/s 152633585.955op/s 1.14% 0.861 1.212 0.27% 28711.862op/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 [255434868.198op/s; 255481082.731op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [80.022µs; 80.188µs] or [-0.104%; +0.104%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12471324.900op/s; 12497287.053op/s] or [-0.104%; +0.104%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [71.622µs; 71.677µs] or [-0.038%; +0.038%] None None None
credit_card/is_card_number/ 378282246310005 throughput [13951698.499op/s; 13962363.908op/s] or [-0.038%; +0.038%] None None None
credit_card/is_card_number/37828224631 execution_time [3.916µs; 3.916µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/37828224631 throughput [255331958.418op/s; 255387788.103op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/378282246310005 execution_time [68.437µs; 68.498µs] or [-0.044%; +0.044%] None None None
credit_card/is_card_number/378282246310005 throughput [14599122.357op/s; 14612038.208op/s] or [-0.044%; +0.044%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [45.702µs; 45.734µs] or [-0.035%; +0.035%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [21865884.901op/s; 21881082.673op/s] or [-0.035%; +0.035%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.616µs; 6.621µs] or [-0.038%; +0.038%] None None None
credit_card/is_card_number/x371413321323331 throughput [151046035.872op/s; 151159937.133op/s] or [-0.038%; +0.038%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.916µs; 3.916µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ throughput [255339440.217op/s; 255395096.626op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [65.729µs; 65.750µs] or [-0.016%; +0.016%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15209196.098op/s; 15214042.353op/s] or [-0.016%; +0.016%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [53.422µs; 53.432µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [18715296.235op/s; 18718853.378op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.915µs; 3.915µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255411044.850op/s; 255457681.180op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [50.224µs; 50.235µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [19906411.683op/s; 19910961.027op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [45.611µs; 45.635µs] or [-0.027%; +0.027%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [21913117.286op/s; 21924760.637op/s] or [-0.027%; +0.027%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.622µs; 6.627µs] or [-0.037%; +0.037%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [150903876.133op/s; 151016424.566op/s] or [-0.037%; +0.037%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6392075 1771613654 02-18-gyuheon0h_unhandled-exception-ffi
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 187.473ns 190.024ns ± 1.993ns 189.536ns ± 1.312ns 191.300ns 193.529ns 196.155ns 198.541ns 4.75% 1.139 1.551 1.05% 0.141ns 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 [189.748ns; 190.300ns] or [-0.145%; +0.145%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6392075 1771613654 02-18-gyuheon0h_unhandled-exception-ffi
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 731.961µs 733.491µs ± 0.691µs 733.385µs ± 0.453µs 733.892µs 734.651µs 735.419µs 737.250µs 0.53% 1.221 3.684 0.09% 0.049µ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 [733.396µs; 733.587µs] or [-0.013%; +0.013%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6392075 1771613654 02-18-gyuheon0h_unhandled-exception-ffi
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.936ms 13.981ms ± 0.030ms 13.977ms ± 0.013ms 13.988ms 14.031ms 14.090ms 14.147ms 1.21% 2.189 6.998 0.21% 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.977ms; 13.985ms] or [-0.030%; +0.030%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6392075 1771613654 02-18-gyuheon0h_unhandled-exception-ffi
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.633µs 186.185µs ± 0.544µs 186.034µs ± 0.159µs 186.259µs 187.295µs 188.016µs 190.376µs 2.33% 3.537 18.815 0.29% 0.038µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 5252749.158op/s 5371034.337op/s ± 15526.948op/s 5375367.633op/s ± 4597.447op/s 5379361.662op/s 5383001.717op/s 5386019.020op/s 5386979.025op/s 0.22% -3.466 18.028 0.29% 1097.921op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 18.092µs 18.187µs ± 0.054µs 18.187µs ± 0.040µs 18.225µs 18.280µs 18.297µs 18.342µs 0.85% 0.157 -0.660 0.30% 0.004µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 54520430.959op/s 54985106.902op/s ± 164597.756op/s 54984888.445op/s ± 119694.497op/s 55108819.110op/s 55247562.041op/s 55264966.327op/s 55271611.200op/s 0.52% -0.145 -0.670 0.30% 11638.819op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 9.827µs 9.873µs ± 0.020µs 9.869µs ± 0.012µs 9.888µs 9.907µs 9.918µs 9.932µs 0.64% 0.317 -0.206 0.20% 0.001µs 1 200
normalization/normalize_name/normalize_name/good throughput 100686114.851op/s 101291206.454op/s ± 204106.926op/s 101331122.473op/s ± 128005.840op/s 101428684.511op/s 101572301.919op/s 101749179.393op/s 101763044.750op/s 0.43% -0.307 -0.209 0.20% 14432.539op/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.110µs; 186.261µs] or [-0.040%; +0.040%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [5368882.451op/s; 5373186.222op/s] or [-0.040%; +0.040%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [18.179µs; 18.194µs] or [-0.042%; +0.042%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [54962295.236op/s; 55007918.568op/s] or [-0.041%; +0.041%] None None None
normalization/normalize_name/normalize_name/good execution_time [9.870µs; 9.875µs] or [-0.028%; +0.028%] None None None
normalization/normalize_name/normalize_name/good throughput [101262919.197op/s; 101319493.711op/s] or [-0.028%; +0.028%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6392075 1771613654 02-18-gyuheon0h_unhandled-exception-ffi
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 5.031µs 5.095µs ± 0.048µs 5.074µs ± 0.026µs 5.140µs 5.177µs 5.179µs 5.184µs 2.17% 0.505 -1.280 0.93% 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.089µs; 5.102µs] or [-0.129%; +0.129%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6392075 1771613654 02-18-gyuheon0h_unhandled-exception-ffi
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 146.142µs 147.883µs ± 1.617µs 147.595µs ± 0.488µs 148.163µs 149.535µs 152.657µs 164.929µs 11.74% 6.742 63.092 1.09% 0.114µ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 [147.659µs; 148.107µs] or [-0.152%; +0.152%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6392075 1771613654 02-18-gyuheon0h_unhandled-exception-ffi
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 246.360ns 256.141ns ± 11.516ns 250.491ns ± 2.110ns 260.677ns 284.488ns 287.971ns 289.373ns 15.52% 1.546 1.153 4.48% 0.814ns 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 [254.545ns; 257.737ns] or [-0.623%; +0.623%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6392075 1771613654 02-18-gyuheon0h_unhandled-exception-ffi
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.459µs 2.488µs ± 0.021µs 2.482µs ± 0.007µs 2.495µs 2.546µs 2.556µs 2.568µs 3.47% 1.868 3.230 0.85% 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.485µs; 2.491µs] or [-0.118%; +0.118%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6392075 1771613654 02-18-gyuheon0h_unhandled-exception-ffi
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.175ms 4.182ms ± 0.008ms 4.181ms ± 0.002ms 4.182ms 4.185ms 4.189ms 4.281ms 2.40% 11.501 148.296 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 [4.180ms; 4.183ms] or [-0.025%; +0.025%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6392075 1771613654 02-18-gyuheon0h_unhandled-exception-ffi
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 494.025µs 494.959µs ± 0.464µs 494.914µs ± 0.279µs 495.199µs 495.721µs 495.897µs 498.574µs 0.74% 2.517 16.964 0.09% 0.033µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 2005719.644op/s 2020373.062op/s ± 1889.630op/s 2020551.138op/s ± 1140.717op/s 2021624.758op/s 2022724.592op/s 2023593.190op/s 2024189.287op/s 0.18% -2.482 16.618 0.09% 133.617op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 371.345µs 372.075µs ± 0.292µs 372.058µs ± 0.208µs 372.276µs 372.572µs 372.807µs 372.839µs 0.21% 0.270 -0.203 0.08% 0.021µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2682122.221op/s 2687628.442op/s ± 2110.165op/s 2687753.299op/s ± 1502.384op/s 2689149.201op/s 2690827.505op/s 2691959.460op/s 2692910.130op/s 0.19% -0.265 -0.206 0.08% 149.211op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 167.619µs 168.012µs ± 0.174µs 167.987µs ± 0.103µs 168.127µs 168.272µs 168.431µs 168.889µs 0.54% 0.847 2.832 0.10% 0.012µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5921033.245op/s 5951955.540op/s ± 6175.001op/s 5952830.876op/s ± 3639.049op/s 5955828.391op/s 5961531.955op/s 5964146.354op/s 5965912.441op/s 0.22% -0.834 2.776 0.10% 436.639op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 36.655µs 36.784µs ± 0.070µs 36.779µs ± 0.043µs 36.822µs 36.888µs 36.964µs 37.260µs 1.31% 1.987 10.544 0.19% 0.005µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26838776.039op/s 27185520.935op/s ± 51519.904op/s 27189705.977op/s ± 31920.788op/s 27219550.669op/s 27252231.137op/s 27275462.042op/s 27281697.645op/s 0.34% -1.939 10.163 0.19% 3643.007op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 45.399µs 45.506µs ± 0.061µs 45.494µs ± 0.034µs 45.538µs 45.618µs 45.664µs 45.786µs 0.64% 1.111 2.106 0.13% 0.004µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21840970.554op/s 21975111.189op/s ± 29183.873op/s 21980821.249op/s ± 16436.915op/s 21996074.068op/s 22012843.394op/s 22021926.450op/s 22027035.494op/s 0.21% -1.100 2.057 0.13% 2063.611op/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 [494.894µs; 495.023µs] or [-0.013%; +0.013%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [2020111.177op/s; 2020634.947op/s] or [-0.013%; +0.013%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [372.035µs; 372.116µs] or [-0.011%; +0.011%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2687335.994op/s; 2687920.891op/s] or [-0.011%; +0.011%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [167.988µs; 168.036µs] or [-0.014%; +0.014%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5951099.744op/s; 5952811.336op/s] or [-0.014%; +0.014%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [36.775µs; 36.794µs] or [-0.026%; +0.026%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [27178380.772op/s; 27192661.098op/s] or [-0.026%; +0.026%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [45.498µs; 45.514µs] or [-0.018%; +0.018%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21971066.585op/s; 21979155.793op/s] or [-0.018%; +0.018%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6392075 1771613654 02-18-gyuheon0h_unhandled-exception-ffi
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.812µs 25.559µs ± 9.361µs 18.278µs ± 0.221µs 33.441µs 42.153µs 43.051µs 69.098µs 278.04% 1.001 0.899 36.53% 0.662µ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.262µs; 26.856µs] or [-5.076%; +5.076%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6392075 1771613654 02-18-gyuheon0h_unhandled-exception-ffi
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.007µs 33.928µs ± 1.236µs 33.161µs ± 0.103µs 35.304µs 36.057µs 36.207µs 36.241µs 9.29% 0.946 -1.009 3.63% 0.087µ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 [33.757µs; 34.100µs] or [-0.505%; +0.505%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6392075 1771613654 02-18-gyuheon0h_unhandled-exception-ffi
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 3.393ms 3.561ms ± 0.060ms 3.585ms ± 0.008ms 3.592ms 3.606ms 3.614ms 3.635ms 1.38% -1.698 1.232 1.67% 0.004ms 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 [3.553ms; 3.569ms] or [-0.233%; +0.233%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6392075 1771613654 02-18-gyuheon0h_unhandled-exception-ffi
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.667ms 10.695ms ± 0.014ms 10.692ms ± 0.008ms 10.703ms 10.720ms 10.751ms 10.758ms 0.61% 1.279 2.799 0.13% 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.693ms; 10.697ms] or [-0.019%; +0.019%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6392075 1771613654 02-18-gyuheon0h_unhandled-exception-ffi
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.851µs 87.137µs ± 0.174µs 87.112µs ± 0.074µs 87.188µs 87.349µs 87.628µs 88.703µs 1.83% 4.613 34.895 0.20% 0.012µ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 [87.113µs; 87.162µs] or [-0.028%; +0.028%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 6392075 1771613654 02-18-gyuheon0h_unhandled-exception-ffi
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 158.939µs 160.473µs ± 0.272µs 160.446µs ± 0.120µs 160.603µs 160.887µs 161.158µs 162.218µs 1.10% 0.492 12.750 0.17% 0.019µ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.435µs; 160.511µs] or [-0.024%; +0.024%] None None None

Baseline

Omitted due to size.

@gyuheon0h gyuheon0h force-pushed the 02-18-gyuheon0h_unhandled-exception-ffi branch from 6278161 to b84eb45 Compare February 18, 2026 07:53
@gyuheon0h gyuheon0h marked this pull request as ready for review February 18, 2026 08:05
@gyuheon0h gyuheon0h requested review from a team as code owners February 18, 2026 08:05
@dd-octo-sts
Copy link
Copy Markdown
Contributor

dd-octo-sts bot commented Feb 18, 2026

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 97.06 MB 97.20 MB +.14% (+140.25 KB) 🔍
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 8.51 MB 8.51 MB 0% (0 B) 👌
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.05 MB 11.12 MB +.62% (+70.32 KB) 🔍
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 112.70 MB 112.85 MB +.13% (+151.69 KB) 🔍
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 27.13 MB 27.13 MB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 76.26 KB 76.26 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 185.73 MB 185.74 MB +0% (+8.00 KB) 👌
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 912.24 MB 912.24 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 9.93 MB 9.93 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 76.26 KB 76.26 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 24.75 MB 24.75 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 51.40 MB 51.40 MB 0% (0 B) 👌
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 22.95 MB 22.95 MB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 77.44 KB 77.44 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 190.08 MB 190.07 MB -0% (-16.00 KB) 👌
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 896.28 MB 896.28 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 7.53 MB 7.53 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 77.44 KB 77.44 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 26.50 MB 26.50 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 47.03 MB 47.03 MB 0% (0 B) 👌
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 85.12 MB 85.25 MB +.15% (+135.16 KB) 🔍
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 10.02 MB 10.04 MB +.19% (+20.00 KB) 🔍
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 105.73 MB 105.87 MB +.13% (+144.94 KB) 🔍
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.77 MB 11.79 MB +.13% (+16.49 KB) 🔍

@gyuheon0h gyuheon0h marked this pull request as draft February 18, 2026 13:32
@gyuheon0h gyuheon0h force-pushed the 02-18-gyuheon0h_unhandled-exception-ffi branch from b84eb45 to d3f0ad7 Compare February 18, 2026 15:03
@gyuheon0h gyuheon0h force-pushed the 02-18-gyuheon0h_report-unhandled-exceptions branch 2 times, most recently from 4231644 to dc58615 Compare February 18, 2026 15:05
@gyuheon0h gyuheon0h force-pushed the 02-18-gyuheon0h_unhandled-exception-ffi branch from d3f0ad7 to 83e226e Compare February 18, 2026 15:05
@gyuheon0h gyuheon0h force-pushed the 02-18-gyuheon0h_report-unhandled-exceptions branch from dc58615 to 6bd86ea Compare February 18, 2026 15:15
@gyuheon0h gyuheon0h force-pushed the 02-18-gyuheon0h_unhandled-exception-ffi branch 2 times, most recently from dfcc224 to a7c2a08 Compare February 18, 2026 15:20
@gyuheon0h gyuheon0h marked this pull request as ready for review February 18, 2026 15:20
@gyuheon0h gyuheon0h force-pushed the 02-18-gyuheon0h_unhandled-exception-ffi branch 2 times, most recently from d6d1015 to 7d1e6a3 Compare February 18, 2026 19:45
@gyuheon0h gyuheon0h force-pushed the 02-18-gyuheon0h_report-unhandled-exceptions branch from 1263256 to 978aaf0 Compare February 18, 2026 19:45
@gyuheon0h gyuheon0h force-pushed the 02-18-gyuheon0h_unhandled-exception-ffi branch from 7d1e6a3 to d5b5042 Compare February 19, 2026 15:07
@gyuheon0h gyuheon0h force-pushed the 02-18-gyuheon0h_report-unhandled-exceptions branch from 1c7c0fc to 0987b85 Compare February 20, 2026 16:52
@gyuheon0h gyuheon0h force-pushed the 02-18-gyuheon0h_unhandled-exception-ffi branch from 3452b04 to 5c07a8d Compare February 20, 2026 16:52
@gyuheon0h gyuheon0h force-pushed the 02-18-gyuheon0h_report-unhandled-exceptions branch from 0987b85 to 2234929 Compare February 20, 2026 17:13
@gyuheon0h gyuheon0h force-pushed the 02-18-gyuheon0h_unhandled-exception-ffi branch from 5c07a8d to e160a36 Compare February 20, 2026 17:13
@gyuheon0h gyuheon0h force-pushed the 02-18-gyuheon0h_report-unhandled-exceptions branch from 2234929 to 6094062 Compare February 20, 2026 17:22
@gyuheon0h gyuheon0h force-pushed the 02-18-gyuheon0h_unhandled-exception-ffi branch from e160a36 to 158f4ac Compare February 20, 2026 17:22
@gyuheon0h gyuheon0h force-pushed the 02-18-gyuheon0h_unhandled-exception-ffi branch from 158f4ac to 6392075 Compare February 20, 2026 18:54
gh-worker-dd-mergequeue-cf854d bot pushed a commit that referenced this pull request Feb 20, 2026
# What does this PR do?

This PR adds support for applications to report unhandled exceptions through the libdatadog crashtracking infrastructure. 

I expose an API `report_unhandled_exception` which takes in a complete stacktrace, optional exception message, and optional exception type. It then uses pre-existing functionality to pipe over this data along with other data collected by the crashtracker to the receiver, generating a crash report for unhandled exceptions. 

I decide to reuse the current emit code logic and an enum for ErrorKind specific parameters and have conditional logic to decide what to emit based on Kind. This lets us keep the report generation largely unified, making sure that there is no drift. 

Another design choice could have been implementing a separate flow to create the crash report piece by piece for unhandled exceptions and upload it directly to an endpoint, but I greatly!!! prefer to reuse a slightly modified emit flow, to minimize drift and ensure parity between to two different "types" of crash reports.


PR below on the stack: [feat(crashtracking): include Kind in crash ping and clarify requirements](#1595 (comment))
PR above on the stack: [feat(crashtracking): unhandled exception reporting FFI](#1597)

# Motivation


# Additional Notes
Example output
```
{
  "counters": {
    "profiler_inactive": 0,
    "profiler_collecting_sample": 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 'com.example.UncaughtRuntimeException'. Message: Something went very wrong in the runtime",
    "thread_name": "crashtracking_u",
    "source_type": "Crashtracking",
    "stack": {
      "format": "Datadog Crashtracker 1.0",
      "frames": [
        {
          "function": "com.example.MyApp.processRequest"
        },
        {
          "function": "com.example.runtime.EventLoop.run"
        },
        {
          "function": "com.example.runtime.main"
        }
      ],
      "incomplete": false
    }
  },
  "experimental": {},
  "files": {
    "/proc/self/maps": [
      "5f06e90e8000-5f06e90e9000 r--p 00000000 103:03 20388557                  /home/bits/go/src/github.com/DataDog/libdatadog/examples/ffi/build/crashtracking_unhandled_exception",
      "5f06e90e9000-5f06e90ea000 r-xp 00001000 103:03 20388557                  /home/bits/go/src/github.com/DataDog/libdatadog/examples/ffi/build/crashtracking_unhandled_exception",
      "5f06e90ea000-5f06e90eb000 r--p 00002000 103:03 20388557                  /home/bits/go/src/github.com/DataDog/libdatadog/examples/ffi/build/crashtracking_unhandled_exception",
      "5f06e90eb000-5f06e90ec000 r--p 00002000 103:03 20388557                  /home/bits/go/src/github.com/DataDog/libdatadog/examples/ffi/build/crashtracking_unhandled_exception",
      "5f06e90ec000-5f06e90ed000 rw-p 00003000 103:03 20388557                  /home/bits/go/src/github.com/DataDog/libdatadog/examples/ffi/build/crashtracking_unhandled_exception",
      "5f0706a0b000-5f0706a2c000 rw-p 00000000 00:00 0                          [heap]",
      "7b23aaec5000-7b23aaec8000 rw-p 00000000 00:00 0 ",
      "7b23aaec8000-7b23aaed6000 r--p 00000000 00:33 18157635                   /usr/lib/x86_64-linux-gnu/libm.so.6",
      "7b23aaed6000-7b23aaf52000 r-xp 0000e000 00:33 18157635                   /usr/lib/x86_64-linux-gnu/libm.so.6",
      "7b23aaf52000-7b23aafad000 r--p 0008a000 00:33 18157635                   /usr/lib/x86_64-linux-gnu/libm.so.6",
      "7b23aafad000-7b23aafae000 r--p 000e4000 00:33 18157635                   /usr/lib/x86_64-linux-gnu/libm.so.6",
      "7b23aafae000-7b23aafaf000 rw-p 000e5000 00:33 18157635                   /usr/lib/x86_64-linux-gnu/libm.so.6",
      "7b23aafaf000-7b23aafb2000 r--p 00000000 00:33 526021                     /usr/lib/x86_64-linux-gnu/libgcc_s.so.1",
      "7b23aafb2000-7b23aafc9000 r-xp 00003000 00:33 526021                     /usr/lib/x86_64-linux-gnu/libgcc_s.so.1",
      "7b23aafc9000-7b23aafcd000 r--p 0001a000 00:33 526021                     /usr/lib/x86_64-linux-gnu/libgcc_s.so.1",
      "7b23aafcd000-7b23aafce000 r--p 0001d000 00:33 526021                     /usr/lib/x86_64-linux-gnu/libgcc_s.so.1",
      "7b23aafce000-7b23aafcf000 rw-p 0001e000 00:33 526021                     /usr/lib/x86_64-linux-gnu/libgcc_s.so.1",
      "7b23aafcf000-7b23aaff7000 r--p 00000000 00:33 18157632                   /usr/lib/x86_64-linux-gnu/libc.so.6",
      "7b23aaff7000-7b23ab18c000 r-xp 00028000 00:33 18157632                   /usr/lib/x86_64-linux-gnu/libc.so.6",
      "7b23ab18c000-7b23ab1e4000 r--p 001bd000 00:33 18157632                   /usr/lib/x86_64-linux-gnu/libc.so.6",
      "7b23ab1e4000-7b23ab1e5000 ---p 00215000 00:33 18157632                   /usr/lib/x86_64-linux-gnu/libc.so.6",
      "7b23ab1e5000-7b23ab1e9000 r--p 00215000 00:33 18157632                   /usr/lib/x86_64-linux-gnu/libc.so.6",
      "7b23ab1e9000-7b23ab1eb000 rw-p 00219000 00:33 18157632                   /usr/lib/x86_64-linux-gnu/libc.so.6",
      "7b23ab1eb000-7b23ab1f8000 rw-p 00000000 00:00 0 ",
      "7b23ab200000-7b23ab4be000 r--p 00000000 103:03 19134266                  /home/bits/go/src/github.com/DataDog/libdatadog/release/lib/libdatadog_profiling.so",
      "7b23ab4be000-7b23abb38000 r-xp 002bd000 103:03 19134266                  /home/bits/go/src/github.com/DataDog/libdatadog/release/lib/libdatadog_profiling.so",
      "7b23abb38000-7b23abbae000 r--p 00936000 103:03 19134266                  /home/bits/go/src/github.com/DataDog/libdatadog/release/lib/libdatadog_profiling.so",
      "7b23abbae000-7b23abbb1000 rw-p 009ab000 103:03 19134266                  /home/bits/go/src/github.com/DataDog/libdatadog/release/lib/libdatadog_profiling.so",
      "7b23abbb1000-7b23abbcf000 rw-p 00000000 00:00 0 ",
      "7b23abbcf000-7b23abbd3000 rw-p 00000000 00:00 0 ",
      "7b23abbd3000-7b23abbd5000 r--p 00000000 00:33 18157629                   /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2",
      "7b23abbd5000-7b23abbff000 r-xp 00002000 00:33 18157629                   /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2",
      "7b23abbff000-7b23abc0a000 r--p 0002c000 00:33 18157629                   /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2",
      "7b23abc0b000-7b23abc0d000 r--p 00037000 00:33 18157629                   /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2",
      "7b23abc0d000-7b23abc0f000 rw-p 00039000 00:33 18157629                   /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2",
      "7ffd13b11000-7ffd13b33000 rw-p 00000000 00:00 0                          [stack]",
      "7ffd13ba9000-7ffd13bad000 r--p 00000000 00:00 0                          [vvar]",
      "7ffd13bad000-7ffd13baf000 r-xp 00000000 00:00 0                          [vdso]",
      "ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0                  [vsyscall]",
      ""
    ]
  },
  "incomplete": false,
  "metadata": {
    "library_name": "crashtracking-ffi-test",
    "library_version": "0.0.0",
    "family": "native"
  },
  "os_info": {
    "architecture": "x86_64",
    "bitness": "64-bit",
    "os_type": "Ubuntu",
    "version": "22.4.0"
  },
  "proc_info": {
    "pid": 3794082,
    "tid": 3794082
  },
  "timestamp": "2026-02-18 07:11:37.317056506 UTC",
  "uuid": "930d6e20-f14d-42fd-bdac-c4263da9a6ca"
}
```
# How to test the change?

Unit test, bin test, instrument application and emit a crash report for an unhandled exception

Co-authored-by: gyuheon.oh <[email protected]>
Base automatically changed from 02-18-gyuheon0h_report-unhandled-exceptions to main February 20, 2026 22:25
@gyuheon0h
Copy link
Copy Markdown
Contributor Author

/merge

@gh-worker-devflow-routing-ef8351
Copy link
Copy Markdown

gh-worker-devflow-routing-ef8351 bot commented Feb 20, 2026

View all feedbacks in Devflow UI.

2026-02-20 23:08:09 UTC ℹ️ Start processing command /merge


2026-02-20 23:08:13 UTC ℹ️ MergeQueue: pull request added to the queue

The expected merge time in main is approximately 45m (p90).


2026-02-20 23:44:00 UTC ℹ️ MergeQueue: This merge request was merged

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants