Skip to content

Conversation

@gleocadie
Copy link
Collaborator

@gleocadie gleocadie commented Oct 24, 2025

Summary of changes

Fix the merge of managed and native callstacks.

Reason for change

This crash report illustrates it clearly:

  • Frames above #82 0x00007f4decdf2c17 __GI___wait4 (sysv/linux/wait4.c:30) are managed frames collected using ClrMD
  • Frames below #82 0x00007f4decdf2c17 __GI___wait4 (sysv/linux/wait4.c:30) are native and managed frames collected using libunwind.

Instead of being merged, the frames collected by ClrMD are stacked on the ones collected by libunwind.

First, when you look at the native frames (frames below wait4), you can see that stack pointer addresses grows downward (as expected) from the bottom to the signal frame. After the signal frame, the stack pointer is greater than the previous frame (even greater than the bottom frame). This indicates that the signal handler is running on a different stack. From the signal frame to the wait4 frame, the stack pointer addresses grows downward (still ok).

Now, when we merge the managed and native callstacks, we compare the callstacks from the leaf/top frames to the bottom frames. As you can see all the managed frames have a stack pointer addresse which is less than the native top frame: #82 0x00007f4decdf2c17 __GI___wait4 (sysv/linux/wait4.c:30) with a sp:0x7F478000ACE0.

This will result in having all the frames collected by ClrMD on top of the ones collected by libunwind.

To fix that, we can merge the callstacks from the bottom frames. The caller of MergeFrames will have to go through the resulting callstack backward.

Implementation details

  • Rewrite the merge using iterator and starting from end of the std::vectors.

Test coverage

  • Add unit test(s) to validate it's working as expected.

Other details

@gleocadie gleocadie requested a review from a team as a code owner October 24, 2025 00:10
@github-actions github-actions bot added area:profiler Issues related to the continous-profiler and removed area:crashtracking labels Oct 24, 2025
@dd-trace-dotnet-ci-bot
Copy link

dd-trace-dotnet-ci-bot bot commented Oct 24, 2025

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing the following branches/commits:

Execution-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 shown in red. The following thresholds were used for comparing the execution times:

  • Welch test with statistical test for significance of 5%
  • Only results indicating a difference greater than 5% and 5 ms are considered.

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).

gantt
    title Execution time (ms) FakeDbCommand (.NET Framework 4.8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7703) - mean (75ms)  : 73, 77
     .   : milestone, 75,
    master - mean (76ms)  : 73, 79
     .   : milestone, 76,

    section Baseline
    This PR (7703) - mean (71ms)  : 68, 73
     .   : milestone, 71,
    master - mean (71ms)  : 69, 73
     .   : milestone, 71,

    section CallTarget+Inlining+NGEN
    This PR (7703) - mean (1,062ms)  : 999, 1126
     .   : milestone, 1062,
    master - mean (1,104ms)  : 998, 1209
     .   : milestone, 1104,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7703) - mean (111ms)  : 108, 114
     .   : milestone, 111,
    master - mean (118ms)  : 112, 124
     .   : milestone, 118,

    section Baseline
    This PR (7703) - mean (110ms)  : 106, 113
     .   : milestone, 110,
    master - mean (113ms)  : 110, 117
     .   : milestone, 113,

    section CallTarget+Inlining+NGEN
    This PR (7703) - mean (763ms)  : 737, 789
     .   : milestone, 763,
    master - mean (773ms)  : 742, 804
     .   : milestone, 773,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7703) - mean (97ms)  : 95, 99
     .   : milestone, 97,
    master - mean (106ms)  : 96, 116
     .   : milestone, 106,

    section Baseline
    This PR (7703) - mean (96ms)  : 94, 99
     .   : milestone, 96,
    master - mean (100ms)  : 96, 104
     .   : milestone, 100,

    section CallTarget+Inlining+NGEN
    This PR (7703) - mean (718ms)  : 682, 754
     .   : milestone, 718,
    master - mean (770ms)  : 723, 817
     .   : milestone, 770,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET 8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7703) - mean (96ms)  : 94, 98
     .   : milestone, 96,
    master - mean (108ms)  : 104, 113
     .   : milestone, 108,

    section Baseline
    This PR (7703) - mean (96ms)  : 92, 99
     .   : milestone, 96,
    master - mean (107ms)  : 104, 109
     .   : milestone, 107,

    section CallTarget+Inlining+NGEN
    This PR (7703) - mean (672ms)  : 654, 689
     .   : milestone, 672,
    master - mean (723ms)  : 673, 773
     .   : milestone, 723,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Framework 4.8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7703) - mean (197ms)  : 194, 201
     .   : milestone, 197,
    master - mean (197ms)  : 195, 199
     .   : milestone, 197,

    section Baseline
    This PR (7703) - mean (194ms)  : 188, 200
     .   : milestone, 194,
    master - mean (194ms)  : 190, 198
     .   : milestone, 194,

    section CallTarget+Inlining+NGEN
    This PR (7703) - mean (1,181ms)  : 1101, 1260
     .   : milestone, 1181,
    master - mean (1,164ms)  : 1108, 1220
     .   : milestone, 1164,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7703) - mean (278ms)  : 274, 282
     .   : milestone, 278,
    master - mean (277ms)  : 274, 281
     .   : milestone, 277,

    section Baseline
    This PR (7703) - mean (278ms)  : 273, 282
     .   : milestone, 278,
    master - mean (277ms)  : 272, 282
     .   : milestone, 277,

    section CallTarget+Inlining+NGEN
    This PR (7703) - mean (946ms)  : 896, 996
     .   : milestone, 946,
    master - mean (943ms)  : 898, 988
     .   : milestone, 943,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7703) - mean (270ms)  : 265, 275
     .   : milestone, 270,
    master - mean (270ms)  : 267, 274
     .   : milestone, 270,

    section Baseline
    This PR (7703) - mean (269ms)  : 266, 272
     .   : milestone, 269,
    master - mean (270ms)  : 265, 275
     .   : milestone, 270,

    section CallTarget+Inlining+NGEN
    This PR (7703) - mean (932ms)  : 876, 988
     .   : milestone, 932,
    master - mean (928ms)  : 880, 977
     .   : milestone, 928,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7703) - mean (269ms)  : 266, 273
     .   : milestone, 269,
    master - mean (270ms)  : 264, 275
     .   : milestone, 270,

    section Baseline
    This PR (7703) - mean (269ms)  : 263, 275
     .   : milestone, 269,
    master - mean (269ms)  : 263, 275
     .   : milestone, 269,

    section CallTarget+Inlining+NGEN
    This PR (7703) - mean (851ms)  : 829, 873
     .   : milestone, 851,
    master - mean (857ms)  : 836, 879
     .   : milestone, 857,

Loading

@datadog-official

This comment has been minimized.

@gleocadie gleocadie force-pushed the gleocadie/fix-calltacks-merge-crashtracker branch 2 times, most recently from 91706b3 to 42e10e5 Compare October 24, 2025 07:04
@pr-commenter
Copy link

pr-commenter bot commented Oct 24, 2025

Benchmarks

Benchmarks Report for benchmark platform 🐌

Benchmarks for #7703 compared to master:

  • All benchmarks have the same speed
  • 5 benchmarks have fewer allocations
  • 5 benchmarks have more allocations

The following thresholds were used for comparing the benchmark speeds:

  • Mann–Whitney U test with statistical test for significance of 5%
  • Only results indicating a difference greater than 10% and 0.3 ns are considered.

Allocation changes below 0.5% are ignored.

Benchmark details

Benchmarks.Trace.ActivityBenchmark - Same speed ✔️ Fewer allocations 🎉

Fewer allocations 🎉 in #7703

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑net472 6.1 KB 6.06 KB -39 B -0.64%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 10.5μs 59ns 392ns 0 0 0 5.53 KB
master StartStopWithChild netcoreapp3.1 14.6μs 72.2ns 315ns 0 0 0 5.7 KB
master StartStopWithChild net472 22.9μs 125ns 751ns 0.904 0.226 0 6.1 KB
#7703 StartStopWithChild net6.0 11.1μs 62.2ns 394ns 0 0 0 5.52 KB
#7703 StartStopWithChild netcoreapp3.1 14μs 72.1ns 353ns 0 0 0 5.72 KB
#7703 StartStopWithChild net472 22.4μs 109ns 477ns 0.992 0.331 0.11 6.06 KB
Benchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 925μs 172ns 667ns 0 0 0 2.71 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.02ms 92.6ns 347ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.19ms 90.5ns 326ns 0 0 0 3.31 KB
#7703 WriteAndFlushEnrichedTraces net6.0 930μs 189ns 733ns 0 0 0 2.71 KB
#7703 WriteAndFlushEnrichedTraces netcoreapp3.1 1.02ms 376ns 1.3μs 0 0 0 2.7 KB
#7703 WriteAndFlushEnrichedTraces net472 1.18ms 196ns 733ns 0 0 0 3.31 KB
Benchmarks.Trace.Asm.AppSecBodyBenchmark - Unknown 🤷 Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master AllCycleSimpleBody net6.0 N/A N/A N/A NaN NaN NaN 0 b
master AllCycleSimpleBody netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
master AllCycleSimpleBody net472 N/A N/A N/A NaN NaN NaN 0 b
master AllCycleMoreComplexBody net6.0 N/A N/A N/A NaN NaN NaN 0 b
master AllCycleMoreComplexBody netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
master AllCycleMoreComplexBody net472 N/A N/A N/A NaN NaN NaN 0 b
master ObjectExtractorSimpleBody net6.0 318ns 1.74ns 10.4ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 403ns 1.98ns 8.39ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 297ns 0.0826ns 0.309ns 0.0434 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.27μs 34.3ns 191ns 0 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.62μs 36.8ns 160ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.74μs 8.54ns 30.8ns 0.601 0 0 3.8 KB
#7703 AllCycleSimpleBody net6.0 N/A N/A N/A NaN NaN NaN 0 b
#7703 AllCycleSimpleBody netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
#7703 AllCycleSimpleBody net472 N/A N/A N/A NaN NaN NaN 0 b
#7703 AllCycleMoreComplexBody net6.0 N/A N/A N/A NaN NaN NaN 0 b
#7703 AllCycleMoreComplexBody netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
#7703 AllCycleMoreComplexBody net472 N/A N/A N/A NaN NaN NaN 0 b
#7703 ObjectExtractorSimpleBody net6.0 319ns 1.72ns 9.71ns 0 0 0 280 B
#7703 ObjectExtractorSimpleBody netcoreapp3.1 399ns 2.13ns 11.7ns 0 0 0 272 B
#7703 ObjectExtractorSimpleBody net472 300ns 0.0322ns 0.125ns 0.0438 0 0 281 B
#7703 ObjectExtractorMoreComplexBody net6.0 6.27μs 30.5ns 133ns 0 0 0 3.78 KB
#7703 ObjectExtractorMoreComplexBody netcoreapp3.1 7.66μs 37.5ns 155ns 0 0 0 3.69 KB
#7703 ObjectExtractorMoreComplexBody net472 6.8μs 4.58ns 17.7ns 0.578 0 0 3.8 KB
Benchmarks.Trace.Asm.AppSecEncoderBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EncodeArgs net6.0 76.7μs 176ns 657ns 0 0 0 32.4 KB
master EncodeArgs netcoreapp3.1 98μs 102ns 396ns 0 0 0 32.4 KB
master EncodeArgs net472 111μs 12.4ns 48ns 5.01 0 0 32.51 KB
master EncodeLegacyArgs net6.0 142μs 27.2ns 105ns 0 0 0 2.15 KB
master EncodeLegacyArgs netcoreapp3.1 201μs 311ns 1.21μs 0 0 0 2.14 KB
master EncodeLegacyArgs net472 263μs 60.6ns 235ns 0 0 0 2.16 KB
#7703 EncodeArgs net6.0 79.4μs 110ns 425ns 0 0 0 32.4 KB
#7703 EncodeArgs netcoreapp3.1 96.5μs 342ns 1.32μs 0 0 0 32.4 KB
#7703 EncodeArgs net472 109μs 7.33ns 27.4ns 4.88 0 0 32.51 KB
#7703 EncodeLegacyArgs net6.0 150μs 159ns 615ns 0 0 0 2.14 KB
#7703 EncodeLegacyArgs netcoreapp3.1 199μs 718ns 2.78μs 0 0 0 2.14 KB
#7703 EncodeLegacyArgs net472 265μs 130ns 503ns 0 0 0 2.16 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWafRealisticBenchmark net6.0 393μs 42.6ns 154ns 0 0 0 4.55 KB
master RunWafRealisticBenchmark netcoreapp3.1 804μs 12μs 118μs 0 0 0 4.48 KB
master RunWafRealisticBenchmark net472 429μs 43.3ns 168ns 0 0 0 4.66 KB
master RunWafRealisticBenchmarkWithAttack net6.0 284μs 51ns 184ns 0 0 0 2.24 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 665μs 14.1μs 140μs 0 0 0 2.22 KB
master RunWafRealisticBenchmarkWithAttack net472 312μs 28ns 105ns 0 0 0 2.29 KB
#7703 RunWafRealisticBenchmark net6.0 392μs 64.4ns 241ns 0 0 0 4.56 KB
#7703 RunWafRealisticBenchmark netcoreapp3.1 817μs 14.7μs 131μs 0 0 0 4.48 KB
#7703 RunWafRealisticBenchmark net472 427μs 55.7ns 216ns 0 0 0 4.66 KB
#7703 RunWafRealisticBenchmarkWithAttack net6.0 285μs 35.7ns 138ns 0 0 0 2.24 KB
#7703 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 717μs 4.93μs 49.3μs 0 0 0 2.22 KB
#7703 RunWafRealisticBenchmarkWithAttack net472 308μs 28.5ns 110ns 0 0 0 2.29 KB
Benchmarks.Trace.AspNetCoreBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendRequest net6.0 60.4μs 83.4ns 301ns 0 0 0 14.52 KB
master SendRequest netcoreapp3.1 72.4μs 58.6ns 211ns 0 0 0 17.42 KB
master SendRequest net472 0.000773ns 0.000579ns 0.00224ns 0 0 0 0 b
#7703 SendRequest net6.0 61.5μs 28.9ns 104ns 0 0 0 14.52 KB
#7703 SendRequest netcoreapp3.1 71.1μs 351ns 1.49μs 0 0 0 17.42 KB
#7703 SendRequest net472 0.00155ns 0.00108ns 0.00419ns 0 0 0 0 b
Benchmarks.Trace.CharSliceBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7703

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net472 0 b 73 B 73 B
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net472 0 b 47 B 47 B
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net6.0 1 B 3 B 2 B 200.00%

Fewer allocations 🎉 in #7703

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net6.0 6 B 2 B -4 B -66.67%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master OriginalCharSlice net6.0 1.89ms 5.6μs 21.7μs 0 0 0 640.01 KB
master OriginalCharSlice netcoreapp3.1 2.19ms 7.48μs 28μs 0 0 0 640 KB
master OriginalCharSlice net472 2.56ms 223ns 773ns 100 0 0 641.95 KB
master OptimizedCharSlice net6.0 1.35ms 276ns 1.07μs 0 0 0 6 B
master OptimizedCharSlice netcoreapp3.1 1.76ms 206ns 797ns 0 0 0 1 B
master OptimizedCharSlice net472 1.95ms 224ns 839ns 0 0 0 0 b
master OptimizedCharSliceWithPool net6.0 801μs 64.6ns 250ns 0 0 0 1 B
master OptimizedCharSliceWithPool netcoreapp3.1 853μs 151ns 583ns 0 0 0 0 b
master OptimizedCharSliceWithPool net472 1.19ms 164ns 634ns 0 0 0 0 b
#7703 OriginalCharSlice net6.0 1.98ms 860ns 3.33μs 0 0 0 640.01 KB
#7703 OriginalCharSlice netcoreapp3.1 2.1ms 5.11μs 19.8μs 0 0 0 640 KB
#7703 OriginalCharSlice net472 2.64ms 166ns 600ns 100 0 0 641.95 KB
#7703 OptimizedCharSlice net6.0 1.49ms 417ns 1.62μs 0 0 0 2 B
#7703 OptimizedCharSlice netcoreapp3.1 1.68ms 164ns 615ns 0 0 0 1 B
#7703 OptimizedCharSlice net472 1.96ms 237ns 920ns 0 0 0 73 B
#7703 OptimizedCharSliceWithPool net6.0 827μs 50.9ns 197ns 0 0 0 3 B
#7703 OptimizedCharSliceWithPool netcoreapp3.1 840μs 103ns 358ns 0 0 0 0 b
#7703 OptimizedCharSliceWithPool net472 1.13ms 102ns 397ns 0 0 0 47 B
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed ✔️ Fewer allocations 🎉

Fewer allocations 🎉 in #7703

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net6.0 42.52 KB 42.26 KB -261 B -0.61%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 743μs 2.71μs 9.4μs 0 0 0 42.52 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 677μs 931ns 3.61μs 0 0 0 41.99 KB
master WriteAndFlushEnrichedTraces net472 866μs 3.54μs 13.3μs 4.46 0 0 56.06 KB
#7703 WriteAndFlushEnrichedTraces net6.0 681μs 3.3μs 13.2μs 0 0 0 42.26 KB
#7703 WriteAndFlushEnrichedTraces netcoreapp3.1 699μs 3.68μs 19.8μs 0 0 0 41.83 KB
#7703 WriteAndFlushEnrichedTraces net472 861μs 1.83μs 6.6μs 8.33 0 0 56.32 KB
Benchmarks.Trace.DbCommandBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteNonQuery net6.0 1.91μs 10.7ns 46.5ns 0 0 0 1.02 KB
master ExecuteNonQuery netcoreapp3.1 2.51μs 9.59ns 37.1ns 0 0 0 1.02 KB
master ExecuteNonQuery net472 2.93μs 3.36ns 13ns 0.146 0.0146 0 987 B
#7703 ExecuteNonQuery net6.0 1.94μs 6.8ns 26.3ns 0 0 0 1.02 KB
#7703 ExecuteNonQuery netcoreapp3.1 2.59μs 8.04ns 31.1ns 0 0 0 1.02 KB
#7703 ExecuteNonQuery net472 2.91μs 3.03ns 11.7ns 0.143 0.0143 0 987 B
Benchmarks.Trace.ElasticsearchBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master CallElasticsearch net6.0 1.69μs 2.74ns 10.6ns 0 0 0 1.03 KB
master CallElasticsearch netcoreapp3.1 2.22μs 9.04ns 35ns 0 0 0 1.03 KB
master CallElasticsearch net472 3.46μs 4.06ns 15.7ns 0.154 0 0 1.04 KB
master CallElasticsearchAsync net6.0 1.9μs 7.16ns 25.8ns 0 0 0 1.01 KB
master CallElasticsearchAsync netcoreapp3.1 2.27μs 11.6ns 51.9ns 0 0 0 1.08 KB
master CallElasticsearchAsync net472 3.62μs 2.96ns 11.5ns 0.163 0 0 1.1 KB
#7703 CallElasticsearch net6.0 1.76μs 4.32ns 16.7ns 0 0 0 1.03 KB
#7703 CallElasticsearch netcoreapp3.1 2.23μs 9.71ns 36.3ns 0 0 0 1.03 KB
#7703 CallElasticsearch net472 3.56μs 1.2ns 4.17ns 0.161 0 0 1.04 KB
#7703 CallElasticsearchAsync net6.0 1.85μs 8.78ns 36.2ns 0 0 0 1.01 KB
#7703 CallElasticsearchAsync netcoreapp3.1 2.36μs 12ns 53.6ns 0 0 0 1.08 KB
#7703 CallElasticsearchAsync net472 3.81μs 4.16ns 16.1ns 0.171 0 0 1.1 KB
Benchmarks.Trace.GraphQLBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteAsync net6.0 1.9μs 9.18ns 39ns 0 0 0 952 B
master ExecuteAsync netcoreapp3.1 2.43μs 2.82ns 10.9ns 0 0 0 952 B
master ExecuteAsync net472 2.65μs 2.42ns 9.39ns 0.145 0 0 915 B
#7703 ExecuteAsync net6.0 1.98μs 1.98ns 7.41ns 0 0 0 952 B
#7703 ExecuteAsync netcoreapp3.1 2.49μs 7.15ns 27.7ns 0 0 0 952 B
#7703 ExecuteAsync net472 2.6μs 1.65ns 6.17ns 0.144 0 0 915 B
Benchmarks.Trace.HttpClientBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendAsync net6.0 6.79μs 28.2ns 109ns 0 0 0 2.36 KB
master SendAsync netcoreapp3.1 8.62μs 27.3ns 106ns 0 0 0 2.9 KB
master SendAsync net472 12.2μs 12.7ns 49ns 0.487 0 0 3.18 KB
#7703 SendAsync net6.0 6.76μs 11.6ns 40.1ns 0 0 0 2.36 KB
#7703 SendAsync netcoreapp3.1 8.67μs 20ns 77.3ns 0 0 0 2.9 KB
#7703 SendAsync net472 12.3μs 7.24ns 28ns 0.493 0 0 3.18 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7703

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 249.39 KB 257.39 KB 8 KB 3.21%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑netcoreapp3.1 42.68 KB 43.09 KB 408 B 0.96%

Fewer allocations 🎉 in #7703

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 277.52 KB 275.65 KB -1.87 KB -0.67%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net6.0 46.42 KB 44.02 KB -2.41 KB -5.19%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 44.7μs 260ns 2.03μs 0 0 0 46.42 KB
master StringConcatBenchmark netcoreapp3.1 49.2μs 264ns 1.37μs 0 0 0 42.68 KB
master StringConcatBenchmark net472 57μs 292ns 1.37μs 0 0 0 57.34 KB
master StringConcatAspectBenchmark net6.0 467μs 2.17μs 8.4μs 0 0 0 277.52 KB
master StringConcatAspectBenchmark netcoreapp3.1 486μs 1.28μs 4.62μs 0 0 0 249.39 KB
master StringConcatAspectBenchmark net472 408μs 2.22μs 12.5μs 0 0 0 278.53 KB
#7703 StringConcatBenchmark net6.0 45.6μs 247ns 1.95μs 0 0 0 44.02 KB
#7703 StringConcatBenchmark netcoreapp3.1 49.7μs 266ns 2.22μs 0 0 0 43.09 KB
#7703 StringConcatBenchmark net472 57μs 135ns 487ns 0 0 0 57.34 KB
#7703 StringConcatAspectBenchmark net6.0 472μs 2.24μs 8.38μs 0 0 0 275.65 KB
#7703 StringConcatAspectBenchmark netcoreapp3.1 516μs 1.57μs 5.66μs 0 0 0 257.39 KB
#7703 StringConcatAspectBenchmark net472 413μs 2.36μs 18.3μs 0 0 0 278.53 KB
Benchmarks.Trace.ILoggerBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 2.61μs 14.2ns 77.6ns 0 0 0 1.7 KB
master EnrichedLog netcoreapp3.1 3.59μs 11.8ns 45.9ns 0 0 0 1.7 KB
master EnrichedLog net472 3.89μs 5.81ns 22.5ns 0.251 0 0 1.64 KB
#7703 EnrichedLog net6.0 2.62μs 12.4ns 49.7ns 0 0 0 1.7 KB
#7703 EnrichedLog netcoreapp3.1 3.62μs 16.5ns 64.1ns 0 0 0 1.7 KB
#7703 EnrichedLog net472 4.07μs 5.26ns 20.4ns 0.243 0 0 1.64 KB
Benchmarks.Trace.Log4netBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 123μs 113ns 393ns 0 0 0 4.31 KB
master EnrichedLog netcoreapp3.1 128μs 27.2ns 102ns 0 0 0 4.31 KB
master EnrichedLog net472 167μs 41.4ns 160ns 0 0 0 4.52 KB
#7703 EnrichedLog net6.0 123μs 28.4ns 102ns 0 0 0 4.31 KB
#7703 EnrichedLog netcoreapp3.1 131μs 509ns 1.76μs 0 0 0 4.31 KB
#7703 EnrichedLog net472 168μs 34.9ns 130ns 0 0 0 4.52 KB
Benchmarks.Trace.NLogBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 4.99μs 9.17ns 35.5ns 0 0 0 2.26 KB
master EnrichedLog netcoreapp3.1 6.75μs 23.9ns 92.5ns 0 0 0 2.26 KB
master EnrichedLog net472 7.5μs 7.74ns 30ns 0.299 0 0 2.08 KB
#7703 EnrichedLog net6.0 4.96μs 6.02ns 23.3ns 0 0 0 2.26 KB
#7703 EnrichedLog netcoreapp3.1 6.83μs 17ns 65.9ns 0 0 0 2.26 KB
#7703 EnrichedLog net472 7.91μs 5.38ns 20.8ns 0.315 0 0 2.08 KB
Benchmarks.Trace.RedisBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendReceive net6.0 2μs 9.09ns 34ns 0 0 0 1.2 KB
master SendReceive netcoreapp3.1 2.61μs 11.4ns 44.3ns 0 0 0 1.2 KB
master SendReceive net472 3.17μs 3.62ns 14ns 0.188 0 0 1.2 KB
#7703 SendReceive net6.0 1.98μs 10.6ns 55.9ns 0 0 0 1.2 KB
#7703 SendReceive netcoreapp3.1 2.56μs 10.7ns 41.6ns 0 0 0 1.2 KB
#7703 SendReceive net472 3.12μs 6.04ns 23.4ns 0.186 0 0 1.2 KB
Benchmarks.Trace.SerilogBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 4.23μs 21.7ns 99.3ns 0 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 5.68μs 17.1ns 66.3ns 0 0 0 1.63 KB
master EnrichedLog net472 6.78μs 7.65ns 29.6ns 0.304 0 0 2.03 KB
#7703 EnrichedLog net6.0 4.37μs 18.8ns 67.7ns 0 0 0 1.58 KB
#7703 EnrichedLog netcoreapp3.1 5.81μs 10.4ns 39.1ns 0 0 0 1.63 KB
#7703 EnrichedLog net472 6.68μs 4.31ns 16.7ns 0.3 0 0 2.03 KB
Benchmarks.Trace.SpanBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net6.0 776ns 3.76ns 14.6ns 0 0 0 576 B
master StartFinishSpan netcoreapp3.1 981ns 4.35ns 16.8ns 0 0 0 576 B
master StartFinishSpan net472 912ns 0.228ns 0.853ns 0.0913 0 0 578 B
master StartFinishScope net6.0 923ns 4.52ns 20.2ns 0 0 0 696 B
master StartFinishScope netcoreapp3.1 1.2μs 5.45ns 21.1ns 0 0 0 696 B
master StartFinishScope net472 1.14μs 1.13ns 4.38ns 0.104 0 0 658 B
#7703 StartFinishSpan net6.0 800ns 0.107ns 0.416ns 0 0 0 576 B
#7703 StartFinishSpan netcoreapp3.1 957ns 0.457ns 1.65ns 0 0 0 576 B
#7703 StartFinishSpan net472 926ns 0.223ns 0.836ns 0.0881 0 0 578 B
#7703 StartFinishScope net6.0 944ns 0.359ns 1.34ns 0 0 0 696 B
#7703 StartFinishScope netcoreapp3.1 1.18μs 5.14ns 19.9ns 0 0 0 696 B
#7703 StartFinishScope net472 1.14μs 0.39ns 1.46ns 0.103 0 0 658 B
Benchmarks.Trace.TraceAnnotationsBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunOnMethodBegin net6.0 1.07μs 2.23ns 8.65ns 0 0 0 696 B
master RunOnMethodBegin netcoreapp3.1 1.41μs 3.2ns 12.4ns 0 0 0 696 B
master RunOnMethodBegin net472 1.47μs 0.389ns 1.35ns 0.104 0 0 658 B
#7703 RunOnMethodBegin net6.0 1.04μs 5.36ns 26.3ns 0 0 0 696 B
#7703 RunOnMethodBegin netcoreapp3.1 1.41μs 5.39ns 20.9ns 0 0 0 696 B
#7703 RunOnMethodBegin net472 1.45μs 0.6ns 2.32ns 0.101 0 0 658 B

@gleocadie gleocadie added area:crashtracking and removed area:profiler Issues related to the continous-profiler labels Oct 24, 2025
@gleocadie gleocadie force-pushed the gleocadie/fix-calltacks-merge-crashtracker branch from 42e10e5 to a83e850 Compare October 24, 2025 08:02
@github-actions github-actions bot added the area:profiler Issues related to the continous-profiler label Oct 24, 2025
@gleocadie gleocadie force-pushed the gleocadie/fix-calltacks-merge-crashtracker branch from 6dc36ec to 7cd74d5 Compare October 24, 2025 21:00
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.

1 participant