[Profiler] Stop unwinding when unsafe#8671
Conversation
02a6e03 to
62898e7
Compare
|
@codex review |
|
To use Codex here, create a Codex account and connect to github. |
1 similar comment
|
To use Codex here, create a Codex account and connect to github. |
62898e7 to
87aa31f
Compare
BenchmarksBenchmark execution time: 2026-05-21 13:24:55 Comparing candidate commit 87aa31f in PR branch Some scenarios are present only in baseline or only in candidate runs. If you didn't create or remove some scenarios in your branch, this maybe a sign of crashed benchmarks 💥💥💥 Scenarios present only in baseline:
Found 4 performance improvements and 4 performance regressions! Performance is the same for 47 metrics, 17 unstable metrics, 86 known flaky benchmarks, 40 flaky benchmarks without significant changes.
|
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (8671) and master. ✅ No regressions detected - check the details below Full Metrics ComparisonFakeDbCommand
HttpMessageHandler
Comparison explanationExecution-time benchmarks measure the whole time it takes to execute a program, and are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are highlighted in **red**. The following thresholds were used for comparing the execution times:
Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard. Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph). Duration chartsFakeDbCommand (.NET Framework 4.8)gantt
title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8671) - mean (73ms) : 70, 76
master - mean (75ms) : 71, 79
section Bailout
This PR (8671) - mean (80ms) : 76, 83
master - mean (79ms) : 76, 83
section CallTarget+Inlining+NGEN
This PR (8671) - mean (1,116ms) : 1057, 1174
master - mean (1,109ms) : 1052, 1165
FakeDbCommand (.NET Core 3.1)gantt
title Execution time (ms) FakeDbCommand (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8671) - mean (118ms) : 112, 125
master - mean (117ms) : 111, 122
section Bailout
This PR (8671) - mean (117ms) : 113, 121
master - mean (115ms) : 112, 118
section CallTarget+Inlining+NGEN
This PR (8671) - mean (796ms) : 769, 823
master - mean (797ms) : 766, 828
FakeDbCommand (.NET 6)gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8671) - mean (103ms) : 96, 110
master - mean (102ms) : 98, 106
section Bailout
This PR (8671) - mean (102ms) : 99, 105
master - mean (105ms) : 99, 111
section CallTarget+Inlining+NGEN
This PR (8671) - mean (950ms) : 903, 996
master - mean (947ms) : 904, 989
FakeDbCommand (.NET 8)gantt
title Execution time (ms) FakeDbCommand (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8671) - mean (103ms) : 97, 108
master - mean (100ms) : 96, 103
section Bailout
This PR (8671) - mean (103ms) : 97, 109
master - mean (103ms) : 98, 108
section CallTarget+Inlining+NGEN
This PR (8671) - mean (825ms) : 779, 871
master - mean (823ms) : 783, 864
HttpMessageHandler (.NET Framework 4.8)gantt
title Execution time (ms) HttpMessageHandler (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8671) - mean (200ms) : 197, 204
master - mean (199ms) : 194, 204
section Bailout
This PR (8671) - mean (204ms) : 199, 208
master - mean (203ms) : 197, 208
section CallTarget+Inlining+NGEN
This PR (8671) - mean (1,205ms) : 1163, 1247
master - mean (1,199ms) : 1156, 1241
HttpMessageHandler (.NET Core 3.1)gantt
title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8671) - mean (289ms) : 282, 296
master - mean (289ms) : 280, 298
section Bailout
This PR (8671) - mean (291ms) : 284, 298
master - mean (289ms) : 281, 298
section CallTarget+Inlining+NGEN
This PR (8671) - mean (972ms) : 953, 992
master - mean (967ms) : 947, 986
HttpMessageHandler (.NET 6)gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8671) - mean (282ms) : 276, 288
master - mean (280ms) : 273, 288
section Bailout
This PR (8671) - mean (284ms) : 280, 288
master - mean (281ms) : 273, 288
section CallTarget+Inlining+NGEN
This PR (8671) - mean (1,166ms) : 1139, 1193
master - mean (1,161ms) : 1117, 1204
HttpMessageHandler (.NET 8)gantt
title Execution time (ms) HttpMessageHandler (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8671) - mean (281ms) : 273, 289
master - mean (282ms) : 271, 294
section Bailout
This PR (8671) - mean (281ms) : 275, 288
master - mean (281ms) : 275, 287
section CallTarget+Inlining+NGEN
This PR (8671) - mean (1,041ms) : 991, 1092
master - mean (1,036ms) : 998, 1074
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Summary of changes
Check that we can continue unwinding after each
unw_stepcall.Reason for change
We had a crash in libunwind. The profiler interrupted the thread in
enframe(from musl-libc). But the library does not have symbtab, dynamic table...In that case, libunwind failed unwinding using dwarf and tried to get the function assembly code. Since it's a stripped binary, failed and fell back to LR (flipped a coin).
Since we added in libunwind insights on what actually failed, we can decide to stop or continue unwinding.
Implementation details
Read the cursor snapshot
step_methodfield: This field indicates if we fell back to LR because we did not find the function assembly code (https://github.com/DataDog/libunwind/blob/gleocadie/v1.8.3-custom-1/include/libunwind-common.h.in#L270 and https://github.com/DataDog/libunwind/blob/gleocadie/v1.8.3-custom-1/src/aarch64/Gstep.c#L805)Test coverage
We should have less crashes
Other details