Skip to content

[crashtracker] Add command line option to pass the thread context#8244

Draft
gleocadie wants to merge 9 commits intomasterfrom
gleocadie/add-alpine-support-for-crashtracker-2
Draft

[crashtracker] Add command line option to pass the thread context#8244
gleocadie wants to merge 9 commits intomasterfrom
gleocadie/add-alpine-support-for-crashtracker-2

Conversation

@gleocadie
Copy link
Collaborator

Summary of changes

Reason for change

Implementation details

Test coverage

Other details

@dd-trace-dotnet-ci-bot
Copy link

dd-trace-dotnet-ci-bot bot commented Feb 26, 2026

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing This PR (8244) and master.

✅ No regressions detected - check the details below

Full Metrics Comparison

FakeDbCommand

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration75.09 ± (75.07 - 75.36) ms73.73 ± (73.75 - 74.09) ms-1.8%
.NET Framework 4.8 - Bailout
duration79.17 ± (79.06 - 79.39) ms78.32 ± (78.07 - 78.39) ms-1.1%
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1084.74 ± (1085.98 - 1091.80) ms1066.48 ± (1067.14 - 1073.38) ms-1.7%
.NET Core 3.1 - Baseline
process.internal_duration_ms22.84 ± (22.80 - 22.88) ms22.50 ± (22.46 - 22.54) ms-1.5%
process.time_to_main_ms86.51 ± (86.33 - 86.69) ms84.49 ± (84.32 - 84.65) ms-2.3%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.92 ± (10.92 - 10.92) MB10.92 ± (10.92 - 10.93) MB+0.0%✅⬆️
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms22.80 ± (22.75 - 22.84) ms22.42 ± (22.37 - 22.46) ms-1.7%
process.time_to_main_ms88.18 ± (87.97 - 88.40) ms85.85 ± (85.65 - 86.04) ms-2.6%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.95 ± (10.95 - 10.96) MB10.96 ± (10.95 - 10.96) MB+0.0%✅⬆️
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms239.09 ± (235.14 - 243.05) ms252.53 ± (248.93 - 256.14) ms+5.6%✅⬆️
process.time_to_main_ms492.10 ± (491.42 - 492.79) ms486.09 ± (485.43 - 486.75) ms-1.2%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed47.59 ± (47.56 - 47.61) MB47.63 ± (47.60 - 47.65) MB+0.1%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.2%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms21.73 ± (21.69 - 21.77) ms21.32 ± (21.28 - 21.36) ms-1.9%
process.time_to_main_ms75.69 ± (75.51 - 75.87) ms73.74 ± (73.56 - 73.92) ms-2.6%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.64 ± (10.64 - 10.64) MB10.64 ± (10.63 - 10.64) MB-0.0%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms21.60 ± (21.55 - 21.65) ms21.26 ± (21.21 - 21.32) ms-1.5%
process.time_to_main_ms76.71 ± (76.52 - 76.90) ms75.58 ± (75.41 - 75.76) ms-1.5%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.67 ± (10.67 - 10.68) MB10.75 ± (10.75 - 10.75) MB+0.7%✅⬆️
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms257.69 ± (254.48 - 260.90) ms251.78 ± (248.48 - 255.07) ms-2.3%
process.time_to_main_ms476.91 ± (476.21 - 477.61) ms466.87 ± (466.30 - 467.44) ms-2.1%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed48.31 ± (48.29 - 48.33) MB48.41 ± (48.38 - 48.43) MB+0.2%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.1%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms19.74 ± (19.71 - 19.78) ms19.46 ± (19.43 - 19.49) ms-1.4%
process.time_to_main_ms74.80 ± (74.64 - 74.95) ms73.04 ± (72.89 - 73.19) ms-2.3%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.68 ± (7.67 - 7.68) MB7.67 ± (7.66 - 7.67) MB-0.1%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms19.67 ± (19.62 - 19.71) ms19.72 ± (19.67 - 19.77) ms+0.3%✅⬆️
process.time_to_main_ms75.29 ± (75.15 - 75.43) ms75.34 ± (75.15 - 75.54) ms+0.1%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.76 ± (7.75 - 7.77) MB7.73 ± (7.72 - 7.73) MB-0.4%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms190.96 ± (190.26 - 191.66) ms189.61 ± (188.80 - 190.42) ms-0.7%
process.time_to_main_ms456.81 ± (456.13 - 457.48) ms451.58 ± (450.67 - 452.48) ms-1.1%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed36.12 ± (36.09 - 36.16) MB36.13 ± (36.10 - 36.16) MB+0.0%✅⬆️
runtime.dotnet.threads.count27 ± (27 - 27)27 ± (27 - 27)+0.0%✅⬆️

HttpMessageHandler

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration194.26 ± (194.27 - 195.06) ms193.87 ± (193.63 - 194.59) ms-0.2%
.NET Framework 4.8 - Bailout
duration198.90 ± (198.73 - 199.42) ms197.66 ± (197.44 - 198.21) ms-0.6%
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1148.23 ± (1150.99 - 1159.20) ms1146.64 ± (1148.52 - 1156.61) ms-0.1%
.NET Core 3.1 - Baseline
process.internal_duration_ms188.69 ± (188.26 - 189.13) ms188.09 ± (187.67 - 188.51) ms-0.3%
process.time_to_main_ms81.92 ± (81.67 - 82.17) ms81.52 ± (81.28 - 81.76) ms-0.5%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.12 ± (16.10 - 16.15) MB16.16 ± (16.13 - 16.19) MB+0.2%✅⬆️
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (20 - 20)+0.5%✅⬆️
.NET Core 3.1 - Bailout
process.internal_duration_ms188.22 ± (187.89 - 188.55) ms187.83 ± (187.55 - 188.12) ms-0.2%
process.time_to_main_ms82.78 ± (82.63 - 82.93) ms82.90 ± (82.76 - 83.05) ms+0.1%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.19 ± (16.16 - 16.22) MB16.23 ± (16.19 - 16.26) MB+0.2%✅⬆️
runtime.dotnet.threads.count21 ± (21 - 21)21 ± (21 - 21)+0.8%✅⬆️
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms442.28 ± (439.99 - 444.56) ms438.49 ± (436.40 - 440.58) ms-0.9%
process.time_to_main_ms477.87 ± (477.18 - 478.57) ms475.45 ± (474.92 - 475.98) ms-0.5%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed57.99 ± (57.87 - 58.12) MB57.98 ± (57.86 - 58.10) MB-0.0%
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 30)+0.1%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms193.51 ± (193.06 - 193.96) ms192.66 ± (192.17 - 193.14) ms-0.4%
process.time_to_main_ms71.37 ± (71.13 - 71.60) ms70.71 ± (70.53 - 70.89) ms-0.9%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.18 ± (16.05 - 16.30) MB16.40 ± (16.33 - 16.47) MB+1.4%✅⬆️
runtime.dotnet.threads.count19 ± (18 - 19)19 ± (19 - 19)+1.1%✅⬆️
.NET 6 - Bailout
process.internal_duration_ms192.04 ± (191.72 - 192.36) ms191.50 ± (191.14 - 191.86) ms-0.3%
process.time_to_main_ms72.03 ± (71.90 - 72.16) ms71.51 ± (71.36 - 71.66) ms-0.7%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.31 ± (16.22 - 16.41) MB16.30 ± (16.18 - 16.42) MB-0.1%
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (19 - 20)-1.1%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms452.30 ± (450.16 - 454.43) ms455.61 ± (453.83 - 457.40) ms+0.7%✅⬆️
process.time_to_main_ms452.33 ± (451.79 - 452.88) ms453.48 ± (452.83 - 454.14) ms+0.3%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed58.11 ± (58.01 - 58.22) MB58.04 ± (57.92 - 58.15) MB-0.1%
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)+0.3%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms190.22 ± (189.91 - 190.53) ms190.37 ± (189.99 - 190.76) ms+0.1%✅⬆️
process.time_to_main_ms70.24 ± (70.04 - 70.43) ms70.05 ± (69.85 - 70.24) ms-0.3%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.70 ± (11.68 - 11.72) MB11.79 ± (11.76 - 11.82) MB+0.8%✅⬆️
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)+0.2%✅⬆️
.NET 8 - Bailout
process.internal_duration_ms189.65 ± (189.35 - 189.95) ms190.26 ± (189.86 - 190.65) ms+0.3%✅⬆️
process.time_to_main_ms71.23 ± (71.09 - 71.37) ms71.22 ± (71.08 - 71.36) ms-0.0%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.78 ± (11.75 - 11.81) MB11.78 ± (11.75 - 11.81) MB+0.0%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)+0.0%✅⬆️
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms370.27 ± (368.82 - 371.71) ms365.80 ± (364.30 - 367.30) ms-1.2%
process.time_to_main_ms435.29 ± (434.68 - 435.89) ms435.78 ± (435.18 - 436.37) ms+0.1%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed47.78 ± (47.74 - 47.81) MB47.77 ± (47.73 - 47.80) MB-0.0%
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)+0.5%✅⬆️
Comparison explanation

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

Duration charts
FakeDbCommand (.NET Framework 4.8)
gantt
    title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8244) - mean (74ms)  : 71, 76
    master - mean (75ms)  : 73, 77

    section Bailout
    This PR (8244) - mean (78ms)  : 77, 80
    master - mean (79ms)  : 78, 81

    section CallTarget+Inlining+NGEN
    This PR (8244) - mean (1,070ms)  : 1025, 1116
    master - mean (1,089ms)  : 1047, 1130

Loading
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 (8244) - mean (114ms)  : 110, 118
    master - mean (117ms)  : 113, 120

    section Bailout
    This PR (8244) - mean (115ms)  : 112, 118
    master - mean (118ms)  : 115, 121

    section CallTarget+Inlining+NGEN
    This PR (8244) - mean (769ms)  : 713, 825
    master - mean (766ms)  : 708, 823

Loading
FakeDbCommand (.NET 6)
gantt
    title Execution time (ms) FakeDbCommand (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8244) - mean (102ms)  : 98, 105
    master - mean (104ms)  : 101, 107

    section Bailout
    This PR (8244) - mean (103ms)  : 101, 106
    master - mean (105ms)  : 103, 107

    section CallTarget+Inlining+NGEN
    This PR (8244) - mean (754ms)  : 696, 811
    master - mean (768ms)  : 707, 828

Loading
FakeDbCommand (.NET 8)
gantt
    title Execution time (ms) FakeDbCommand (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8244) - mean (100ms)  : 97, 104
    master - mean (103ms)  : 100, 105

    section Bailout
    This PR (8244) - mean (103ms)  : 100, 105
    master - mean (103ms)  : 101, 105

    section CallTarget+Inlining+NGEN
    This PR (8244) - mean (676ms)  : 648, 704
    master - mean (681ms)  : 651, 712

Loading
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 (8244) - mean (194ms)  : 189, 199
    master - mean (195ms)  : 191, 199

    section Bailout
    This PR (8244) - mean (198ms)  : 194, 201
    master - mean (199ms)  : 196, 202

    section CallTarget+Inlining+NGEN
    This PR (8244) - mean (1,153ms)  : 1093, 1212
    master - mean (1,155ms)  : 1095, 1215

Loading
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 (8244) - mean (278ms)  : 271, 286
    master - mean (279ms)  : 272, 286

    section Bailout
    This PR (8244) - mean (279ms)  : 274, 283
    master - mean (279ms)  : 275, 284

    section CallTarget+Inlining+NGEN
    This PR (8244) - mean (944ms)  : 909, 979
    master - mean (950ms)  : 913, 986

Loading
HttpMessageHandler (.NET 6)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8244) - mean (271ms)  : 265, 277
    master - mean (274ms)  : 268, 279

    section Bailout
    This PR (8244) - mean (271ms)  : 265, 278
    master - mean (272ms)  : 269, 276

    section CallTarget+Inlining+NGEN
    This PR (8244) - mean (939ms)  : 909, 969
    master - mean (934ms)  : 903, 965

Loading
HttpMessageHandler (.NET 8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8244) - mean (270ms)  : 265, 276
    master - mean (270ms)  : 265, 275

    section Bailout
    This PR (8244) - mean (271ms)  : 265, 277
    master - mean (270ms)  : 266, 275

    section CallTarget+Inlining+NGEN
    This PR (8244) - mean (833ms)  : 816, 851
    master - mean (836ms)  : 813, 859

Loading

@pr-commenter
Copy link

pr-commenter bot commented Feb 26, 2026

Benchmarks

Benchmark execution time: 2026-03-06 07:53:57

Comparing candidate commit 789a0f4 in PR branch gleocadie/add-alpine-support-for-crashtracker-2 with baseline commit 76f3785 in branch master.

Found 10 performance improvements and 6 performance regressions! Performance is the same for 160 metrics, 16 unstable metrics.

scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.ObjectExtractorSimpleBody net6.0

  • 🟩 execution_time [-20.734ms; -14.739ms] or [-9.559%; -6.796%]

scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.ObjectExtractorSimpleBody netcoreapp3.1

  • 🟩 execution_time [-22.059ms; -16.519ms] or [-10.126%; -7.583%]

scenario:Benchmarks.Trace.Asm.AppSecEncoderBenchmark.EncodeLegacyArgs net6.0

  • 🟩 execution_time [-18.619ms; -18.387ms] or [-9.397%; -9.280%]

scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces net6.0

  • 🟩 execution_time [-29.830ms; -25.636ms] or [-14.397%; -12.373%]

scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces netcoreapp3.1

  • 🟩 execution_time [-32.015ms; -30.926ms] or [-18.497%; -17.868%]

scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice netcoreapp3.1

  • 🟥 throughput [-180.123op/s; -129.726op/s] or [-34.828%; -25.083%]

scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool net6.0

  • 🟥 execution_time [+55.665µs; +59.522µs] or [+5.355%; +5.726%]
  • 🟥 throughput [-52.120op/s; -48.858op/s] or [-5.418%; -5.079%]

scenario:Benchmarks.Trace.ElasticsearchBenchmark.CallElasticsearchAsync net472

  • 🟩 throughput [+27094.599op/s; +29275.854op/s] or [+9.592%; +10.364%]

scenario:Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark netcoreapp3.1

  • 🟥 throughput [-366.658op/s; -192.733op/s] or [-17.428%; -9.161%]

scenario:Benchmarks.Trace.Log4netBenchmark.EnrichedLog net472

  • 🟩 execution_time [-12.803ms; -12.339ms] or [-6.339%; -6.109%]

scenario:Benchmarks.Trace.Log4netBenchmark.EnrichedLog netcoreapp3.1

  • 🟥 execution_time [+42.245ms; +43.987ms] or [+26.497%; +27.590%]

scenario:Benchmarks.Trace.SingleSpanAspNetCoreBenchmark.SingleSpanAspNetCore net6.0

  • 🟥 execution_time [+13.511ms; +14.914ms] or [+17.331%; +19.130%]

scenario:Benchmarks.Trace.SpanBenchmark.StartFinishSpan net6.0

  • 🟩 execution_time [-15.831ms; -12.238ms] or [-7.471%; -5.775%]

scenario:Benchmarks.Trace.SpanBenchmark.StartFinishSpan netcoreapp3.1

  • 🟩 execution_time [-17.043ms; -11.289ms] or [-8.023%; -5.314%]

scenario:Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin net6.0

  • 🟩 execution_time [-21.166ms; -15.413ms] or [-9.837%; -7.163%]

@gleocadie gleocadie force-pushed the gleocadie/add-alpine-support-for-crashtracker-2 branch 10 times, most recently from 7b5ad83 to be99586 Compare February 27, 2026 18:08
@gleocadie gleocadie force-pushed the gleocadie/add-alpine-support-for-crashtracker-2 branch 3 times, most recently from ab97ee2 to 6fc748b Compare March 5, 2026 16:08
@gleocadie gleocadie force-pushed the gleocadie/add-alpine-support-for-crashtracker-2 branch from 6fc748b to 789a0f4 Compare March 6, 2026 07:11
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.

1 participant