Uh oh!
There was an error while loading. Please reload this page.
fix(profiler): guard line-number-table copy against stale jmethodID - #647
Conversation
CI Test ResultsRun:#29345212506 | Commit:
Status Overview
Legend: ✅ passed | ❌ failed | ⚪ skipped | 🚫 cancelled Summary: Total: 32 | Passed: 32 | Failed: 0 Updated: 2026-07-14 15:44:48 UTC |
Benchmark Results (commit 36f4468)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/124068415 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 21 | ✅ 10326 ms (21 iters) | ✅ 10289 ms (21 iters) | ≈ -0.4% (±11.2%) | — / — |
| akka-uct | 25 | ✅ 8965 ms (24 iters) | ✅ 8824 ms (24 iters) | ≈ -1.6% (±9.7%) | — / — |
| finagle-chirper | 21 | ✅ 6017 ms (33 iters) | ✅ 6003 ms (33 iters) | ≈ -0.2% (±25.4%) | |
| finagle-chirper | 25 | ✅ 5479 ms (36 iters) | ✅ 5525 ms (36 iters) | ≈ +0.8% (±24.9%) | |
| fj-kmeans | 21 | ✅ 2825 ms (66 iters) | ✅ 2711 ms (69 iters) | 🟢 -4% | — / — |
| fj-kmeans | 25 | ✅ 2813 ms (66 iters) | ✅ 2820 ms (66 iters) | ≈ +0.2% (±2.6%) | — / — |
| future-genetic | 25 | ✅ 2126 ms (87 iters) | ✅ 2027 ms (91 iters) | 🟢 -4.7% | — / — |
| naive-bayes | 21 | ✅ 1264 ms (135 iters) | ✅ 1289 ms (133 iters) | ≈ +2% (±33.3%) | — / — |
| naive-bayes | 25 | ✅ 1009 ms (169 iters) | ✅ 1018 ms (168 iters) | ≈ +0.9% (±32.2%) | — / — |
| reactors | 21 | ✅ 16193 ms (15 iters) | ✅ 16743 ms (15 iters) | ≈ +3.4% (±7.3%) | — / — |
| reactors | 25 | ✅ 18502 ms (15 iters) | ✅ 18476 ms (15 iters) | ≈ -0.1% (±4.8%) | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 1 | 1952 / 1969 | ✅ / ✅ | ✅ / ✅ |
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 1 | 2077 / 2368 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | 3 / 4 | 8413 / 8843 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 8590 / 8627 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 1 | 1261 / 1237 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 4 | 2893 / 2959 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 1 | 2868 / 2862 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 2 | 3473 / 3538 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 5 | 3507 / 3483 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 2 | 1661 / 1582 | ✅ / ✅ | ✅ / ✅ |
| reactors | 25 | ✅ / ✅ | ✅ / ✅ | 1 / ✅ | 1975 / 1867 | ✅ / ✅ | ✅ / ✅ |
This comment has been minimized.
This comment has been minimized.
Benchmark Results (commit e5ef83e)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/124087303 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 21 | ✅ 10327 ms (21 iters) | ✅ 10396 ms (21 iters) | ≈ +0.7% (±10.9%) | — / — |
| akka-uct | 25 | ✅ 8806 ms (24 iters) | ✅ 8888 ms (24 iters) | ≈ +0.9% (±11%) | — / — |
| finagle-chirper | 21 | ✅ 5982 ms (33 iters) | ✅ 6066 ms (33 iters) | ≈ +1.4% (±25.2%) | |
| finagle-chirper | 25 | ✅ 5471 ms (36 iters) | ✅ 5502 ms (36 iters) | ≈ +0.6% (±24.4%) | |
| fj-kmeans | 21 | ✅ 2715 ms (68 iters) | ✅ 2762 ms (68 iters) | ≈ +1.7% (±2.7%) | — / — |
| fj-kmeans | 25 | ✅ 2849 ms (66 iters) | ✅ 2840 ms (66 iters) | ≈ -0.3% (±2.6%) | — / — |
| future-genetic | 21 | ✅ 2048 ms (91 iters) | ✅ 2129 ms (87 iters) | 🔴 +4% | — / — |
| future-genetic | 25 | ✅ 2085 ms (89 iters) | ✅ 2033 ms (92 iters) | ≈ -2.5% (±2.6%) | — / — |
| naive-bayes | 21 | ✅ 1269 ms (135 iters) | ✅ 1265 ms (135 iters) | ≈ -0.3% (±32.8%) | — / — |
| naive-bayes | 25 | ✅ 1004 ms (170 iters) | ✅ 1017 ms (168 iters) | ≈ +1.3% (±31.7%) | — / — |
| reactors | 21 | ✅ 16602 ms (15 iters) | ✅ 15968 ms (15 iters) | ≈ -3.8% (±7.8%) | — / — |
| reactors | 25 | ✅ 18322 ms (15 iters) | ✅ 18907 ms (15 iters) | ≈ +3.2% (±4.6%) | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ |
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | 4 / 4 | 2184 / 2291 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | 4 / 2 | 8712 / 8658 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | 8439 / 8434 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 1 | 1239 / 1267 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 3 | 1288 / 1274 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 1 | 2973 / 2888 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 1 | 2926 / 2837 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | 11 / 3 | 3532 / 3526 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / ✅ | ✅ / ✅ | 6 / 3 | 3456 / 3462 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 2 | 1715 / 1428 | ✅ / ✅ | ✅ / ✅ |
| reactors | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 1909 / 1913 | ✅ / ✅ | ✅ / ✅ |
jbachorik
commented
Jul 10, 2026
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:e5ef83e276
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Reliability & Chaos Results✅ All reliability & chaos checks passed Pipeline: https://gitlab.ddbuild.io/DataDog/java-profiler/-/pipelines/124389630 |
Benchmark Results (commit 30240b5)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/124264493 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 21 | ✅ 10246 ms (21 iters) | ✅ 10423 ms (21 iters) | ≈ +1.7% (±11%) | — / — |
| akka-uct | 25 | ✅ 8914 ms (24 iters) | ✅ 8770 ms (24 iters) | ≈ -1.6% (±9.5%) | — / — |
| finagle-chirper | 21 | ✅ 5984 ms (33 iters) | ✅ 5971 ms (33 iters) | ≈ -0.2% (±25.6%) | |
| finagle-chirper | 25 | ✅ 5551 ms (36 iters) | ✅ 5523 ms (36 iters) | ≈ -0.5% (±24.4%) | |
| fj-kmeans | 21 | ✅ 2700 ms (70 iters) | ✅ 2855 ms (66 iters) | 🔴 +5.7% | — / — |
| fj-kmeans | 25 | ✅ 2833 ms (66 iters) | ✅ 2827 ms (66 iters) | ≈ -0.2% (±2.6%) | — / — |
| future-genetic | 21 | ✅ 2125 ms (87 iters) | ✅ 2090 ms (90 iters) | ≈ -1.6% (±2.8%) | — / — |
| future-genetic | 25 | ✅ 2064 ms (90 iters) | ✅ 2119 ms (88 iters) | 🔴 +2.7% | — / — |
| naive-bayes | 21 | ✅ 1253 ms (137 iters) | ✅ 1270 ms (134 iters) | ≈ +1.4% (±33.4%) | — / — |
| naive-bayes | 25 | ✅ 1015 ms (169 iters) | ✅ 1023 ms (168 iters) | ≈ +0.8% (±31.7%) | — / — |
| reactors | 21 | ✅ 16578 ms (15 iters) | ✅ 16507 ms (15 iters) | ≈ -0.4% (±7.5%) | — / — |
| reactors | 25 | ✅ 18580 ms (15 iters) | ✅ 18707 ms (15 iters) | ≈ +0.7% (±4.7%) | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 21 | ✅ / ✅ | ✅ / ✅ | 2 / 2 | 2041 / 1997 | ✅ / ✅ | ✅ / ✅ |
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | 3 / 2 | 2237 / 2223 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | 5 / 4 | 8657 / 8429 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 1 | 8454 / 8533 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | 2 / ✅ | 1305 / 1290 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | 4 / 2 | 1302 / 1246 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | 1 / ✅ | 3043 / 2981 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 2 | 2984 / 2830 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | 5 / 8 | 3573 / 3525 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / ✅ | ✅ / ✅ | 4 / 4 | 3491 / 3514 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | 3 / 3 | 1688 / 1828 | ✅ / ✅ | ✅ / ✅ |
| reactors | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | 1887 / 1943 | ✅ / ✅ | ✅ / ✅ |
Benchmark Results (commit 50fdaf5)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/124272420 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 21 | ✅ 10256 ms (21 iters) | ✅ 10414 ms (21 iters) | ≈ +1.5% (±12.2%) | — / — |
| akka-uct | 25 | ✅ 8870 ms (24 iters) | ✅ 8851 ms (24 iters) | ≈ -0.2% (±10%) | — / — |
| finagle-chirper | 21 | ✅ 5890 ms (33 iters) | ✅ 5948 ms (33 iters) | ≈ +1% (±24.7%) | |
| finagle-chirper | 25 | ✅ 5500 ms (36 iters) | ✅ 5489 ms (36 iters) | ≈ -0.2% (±24.1%) | |
| fj-kmeans | 21 | ✅ 2758 ms (68 iters) | ✅ 2758 ms (68 iters) | ≈ 0% (±2.7%) | — / — |
| fj-kmeans | 25 | ✅ 2807 ms (67 iters) | ✅ 2812 ms (66 iters) | ≈ +0.2% (±2.6%) | — / — |
| future-genetic | 21 | ✅ 2033 ms (91 iters) | ✅ 2092 ms (89 iters) | 🔴 +2.9% | — / — |
| future-genetic | 25 | ✅ 2092 ms (88 iters) | ✅ 2070 ms (89 iters) | ≈ -1.1% (±2.6%) | — / — |
| naive-bayes | 21 | ✅ 1287 ms (133 iters) | ✅ 1246 ms (137 iters) | ≈ -3.2% (±32.1%) | — / — |
| naive-bayes | 25 | ✅ 1018 ms (168 iters) | ✅ 1007 ms (170 iters) | ≈ -1.1% (±31.3%) | — / — |
| reactors | 21 | ✅ 16641 ms (15 iters) | ✅ 16053 ms (15 iters) | ≈ -3.5% (±8.5%) | — / — |
| reactors | 25 | ✅ 18163 ms (15 iters) | ✅ 18590 ms (15 iters) | ≈ +2.4% (±5.4%) | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 2 | 1978 / 1925 | ✅ / ✅ | ✅ / ✅ |
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 3 | 2362 / 2350 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | 3 / 1 | 8426 / 8414 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 25 | ✅ / ✅ | ✅ / ✅ | 1 / ✅ | 8204 / 8727 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | 4 / 1 | 1279 / 1286 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 5 | 1272 / 1269 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 3030 / 3054 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 1 | 2889 / 2862 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | 2 / 5 | 3496 / 3533 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / ✅ | ✅ / ✅ | 3 / 6 | 3484 / 3505 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 1735 / 1587 | ✅ / ✅ | ✅ / ✅ |
| reactors | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 2 | 1865 / 1879 | ✅ / ✅ | ✅ / ✅ |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:940a14e3f1
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Uh oh!
There was an error while loading. Please reload this page.
Benchmark Results (commit 940a14e)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/124292080 Commit: ✅ Within expected boundariesNo significant runtime deltas (all within run-to-run noise) and no internal-counter outliers. Runtime details (per benchmark × JDK)
Internal counter details (ddprof)ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
|
Added commit 95a3498: gates Unrelated root cause to the line-number-table fix above, found while investigating a J9 debug-lane CI abort in Fixing in the PR because the failure was virtually blocking getting the clean CI run. Reproduced on the exact CI toolchain (JDK21 build JDK, Semeru 8.0.462/OpenJ9 0.53.0 test JDK): unpatched code crashed 1/2 iterations of |
Benchmark Results (commit 60f1f83)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/124300350 Commit: ✅ Within expected boundariesNo significant runtime deltas (all within run-to-run noise) and no internal-counter outliers. Runtime details (per benchmark × JDK)
Internal counter details (ddprof)ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
|
Benchmark Results (commit 9b861da)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/124308819 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 21 | ✅ 10371 ms (21 iters) | ✅ 10358 ms (21 iters) | ≈ -0.1% (±11.1%) | — / — |
| akka-uct | 25 | ✅ 8922 ms (24 iters) | ✅ 8802 ms (24 iters) | ≈ -1.3% (±10.7%) | — / — |
| finagle-chirper | 21 | ✅ 5949 ms (33 iters) | ✅ 5981 ms (33 iters) | ≈ +0.5% (±25.1%) | |
| finagle-chirper | 25 | ✅ 5485 ms (36 iters) | ✅ 5469 ms (36 iters) | ≈ -0.3% (±23.6%) | |
| fj-kmeans | 21 | ✅ 2715 ms (70 iters) | ✅ 2696 ms (70 iters) | ≈ -0.7% (±2.7%) | — / — |
| fj-kmeans | 25 | ✅ 2821 ms (66 iters) | ✅ 2802 ms (66 iters) | ≈ -0.7% (±2.6%) | — / — |
| future-genetic | 21 | ✅ 2125 ms (87 iters) | ✅ 2147 ms (86 iters) | ≈ +1% (±2.8%) | — / — |
| future-genetic | 25 | ✅ 2045 ms (91 iters) | ✅ 2129 ms (87 iters) | 🔴 +4.1% | — / — |
| naive-bayes | 21 | ✅ 1258 ms (136 iters) | ✅ 1239 ms (138 iters) | ≈ -1.5% (±32.4%) | — / — |
| naive-bayes | 25 | ✅ 1023 ms (167 iters) | ✅ 1000 ms (170 iters) | ≈ -2.2% (±31%) | — / — |
| reactors | 21 | ✅ 15794 ms (15 iters) | ✅ 16692 ms (15 iters) | ≈ +5.7% (±8%) | — / — |
| reactors | 25 | ✅ 18882 ms (15 iters) | ✅ 18768 ms (15 iters) | ≈ -0.6% (±3.1%) | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / 5 | 2009 / 1899 | ✅ / ✅ | ✅ / ✅ |
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 3 | 2191 / 2266 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | 2 / 6 | 8352 / 8248 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 8470 / 8222 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 1284 / 1294 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 1268 / 1264 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | 2 / 3 | 3021 / 3009 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 1 | 2932 / 2903 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | 4 / 1 | 3534 / 3563 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 4 | 3449 / 3449 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 1 | 1511 / 1853 | ✅ / ✅ | ✅ / ✅ |
| reactors | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 2 | 1947 / 1908 | ✅ / ✅ | ✅ / ✅ |
Benchmark Results (commit 4a9fba4)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/124315244 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 21 | ✅ 10260 ms (21 iters) | ✅ 10237 ms (21 iters) | ≈ -0.2% (±11.6%) | — / — |
| akka-uct | 25 | ✅ 8875 ms (24 iters) | ✅ 8843 ms (24 iters) | ≈ -0.4% (±9.5%) | — / — |
| finagle-chirper | 21 | ✅ 6017 ms (33 iters) | ✅ 6005 ms (33 iters) | ≈ -0.2% (±25.5%) | |
| finagle-chirper | 25 | ✅ 5423 ms (36 iters) | ✅ 5454 ms (36 iters) | ≈ +0.6% (±24.2%) | |
| fj-kmeans | 21 | ✅ 2714 ms (69 iters) | ✅ 2841 ms (66 iters) | 🔴 +4.7% | — / — |
| fj-kmeans | 25 | ✅ 2819 ms (66 iters) | ✅ 2822 ms (66 iters) | ≈ +0.1% (±2.6%) | — / — |
| future-genetic | 21 | ✅ 2084 ms (90 iters) | ✅ 2161 ms (86 iters) | 🔴 +3.7% | — / — |
| future-genetic | 25 | ✅ 1975 ms (93 iters) | ✅ 2065 ms (89 iters) | 🔴 +4.6% | — / — |
| naive-bayes | 21 | ✅ 1224 ms (139 iters) | ✅ 1272 ms (134 iters) | ≈ +3.9% (±33.2%) | — / — |
| naive-bayes | 25 | ✅ 1011 ms (169 iters) | ✅ 1003 ms (170 iters) | ≈ -0.8% (±31.3%) | — / — |
| reactors | 21 | ✅ 16324 ms (15 iters) | ✅ 16116 ms (15 iters) | ≈ -1.3% (±7.5%) | — / — |
| reactors | 25 | ✅ 18316 ms (15 iters) | ✅ 18171 ms (15 iters) | ≈ -0.8% (±4.5%) | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 1 | 1979 / 1997 | ✅ / ✅ | ✅ / ✅ |
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 2117 / 2196 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | 3 / 2 | 8475 / 8556 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 2 | 8375 / 8142 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | 5 / 4 | 1259 / 1253 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 4 | 1258 / 1260 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / 3 | 3054 / 2990 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 2 | 2774 / 2868 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | 2 / 7 | 3520 / 3509 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 4 | 3509 / 3493 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / 2 | 1543 / 1657 | ✅ / ✅ | ✅ / ✅ |
| reactors | 25 | ✅ / ✅ | ✅ / ✅ | 3 / 2 | 1834 / 1837 | ✅ / ✅ | ✅ / ✅ |
rkennke
left a comment
There was a problem hiding this comment.
Took a thorough pass — the core fix is correct, minimal, and consistent with the #537 string-probe hardening; the death-test's volatile-sink-vs-DCE handling and the dual SIGSEGV/SIGBUS registration are nice touches. Two small things inline, plus one question:
The isRawPointer HotSpot gating looks like a genuinely separate defect from the line-number-table memcpy crash — different symptom, different VM (OpenJ9 vs stock HotSpot), different file, and the title/JIRA (PROF-15385) only mention the memcpy. Was there a reason to fold it in here rather than split it into its own PR? Both trace back to stale-jmethodID handling so I'm fine either way — just want to make sure the J9 fix gets its own visibility/traceability.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Benchmark Results (commit 4a30289)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/124389768 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 21 | ✅ 10481 ms (21 iters) | ✅ 10325 ms (21 iters) | ≈ -1.5% (±11.6%) | — / — |
| akka-uct | 25 | ✅ 8706 ms (24 iters) | ✅ 8864 ms (24 iters) | ≈ +1.8% (±10.8%) | — / — |
| finagle-chirper | 21 | ✅ 5972 ms (33 iters) | ✅ 5995 ms (33 iters) | ≈ +0.4% (±25.3%) | |
| finagle-chirper | 25 | ✅ 5413 ms (36 iters) | ✅ 5436 ms (36 iters) | ≈ +0.4% (±24.4%) | |
| fj-kmeans | 21 | ✅ 2740 ms (69 iters) | ✅ 2828 ms (66 iters) | 🔴 +3.2% | — / — |
| fj-kmeans | 25 | ✅ 2743 ms (68 iters) | ✅ 2813 ms (66 iters) | ≈ +2.6% (±2.8%) | — / — |
| future-genetic | 21 | ✅ 2073 ms (89 iters) | ✅ 2144 ms (87 iters) | 🔴 +3.4% | — / — |
| future-genetic | 25 | ✅ 2079 ms (89 iters) | ✅ 2076 ms (89 iters) | ≈ -0.1% (±2.6%) | — / — |
| naive-bayes | 21 | ✅ 1281 ms (133 iters) | ✅ 1264 ms (136 iters) | ≈ -1.3% (±32%) | — / — |
| naive-bayes | 25 | ✅ 1006 ms (169 iters) | ✅ 1016 ms (168 iters) | ≈ +1% (±32.1%) | — / — |
| reactors | 21 | ✅ 17040 ms (15 iters) | ✅ 15890 ms (15 iters) | ≈ -6.7% (±8.5%) | — / — |
| reactors | 25 | ✅ 18695 ms (15 iters) | ✅ 18872 ms (15 iters) | ≈ +0.9% (±5.5%) | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 1 | 1997 / 1940 | ✅ / ✅ | ✅ / ✅ |
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 2 | 2319 / 2386 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | 5 / 1 | 8773 / 8404 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 25 | ✅ / ✅ | ✅ / ✅ | 1 / ✅ | 8178 / 8303 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | 4 / 4 | 1305 / 1272 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 2 | 1280 / 1267 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 2 | 2933 / 2947 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | 2869 / 2898 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | 4 / 3 | 3463 / 3525 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / ✅ | ✅ / ✅ | 3 / 6 | 3424 / 3498 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | 3 / ✅ | 1696 / 1602 | ✅ / ✅ | ✅ / ✅ |
| reactors | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 2 | 1845 / 1904 | ✅ / ✅ | ✅ / ✅ |
@rkennke Actually, extracted to a separate PR (#658) for posterity |
Benchmark Results (commit a37e7ec)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/124483891 Commit: ✅ Within expected boundariesNo significant runtime deltas (all within run-to-run noise) and no internal-counter outliers. Runtime details (per benchmark × JDK)
Internal counter details (ddprof)ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
|
fillJavaMethodInfo() memcpy'd the JVMTI-returned line-number table without probing it first, unlike the sibling class/method name+sig strings hardened in #537. Crash reported in production as SIGSEGV in Lookup::resolveMethod on stock HotSpot JDK 11.
…hodID-churn stress test The EXPECT_DEATH reproducer silently passed on -O3 builds because the optimizer eliminated the dead memcpy/free once owned_table's contents were never observed; a forced volatile read fixes that. Also adds a JUnit stress test that races class-unload churn against profiler dump/resolve and asserts native whitebox counters actually observed a stale jmethodID, not just that the JVM didn't crash. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Fixes review comment: the counter-delta check is best-effort — a healthy host that doesn't race unload tightly enough shouldn't flake CI. Switch it to Assumptions.assumeTrue so a missed race reports as skipped rather than failed.
init/analyze must stay on the same codeql-action version or analyze rejects init's config; group them in dependabot.yml so bumps land together atomically instead of drifting across separate PRs.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Mirrors safefetch_ut.cpp: the safefetch trampoline can fault with SIGBUS instead of SIGSEGV depending on platform, so both handlers must be registered to avoid crashing the gtest binary.
…/memcpy() A corrupted GetLineNumberTable() pointer for a stale jmethodID could pair with a corrupted size, driving an unbounded byte count into the readability probe. Cap it at 65535 (JVM spec's max code_length) and treat oversized values like an unreadable pointer.
…ment A corrupted negative size out-param fell through both branches, leaving line_number_table non-null and untrusted for Deallocate().
a37e7ec to
de7bcd8CompareBenchmark Results (commit de7bcd8)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/124497122 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 21 | ✅ 10395 ms (21 iters) | ✅ 10325 ms (21 iters) | ≈ -0.7% (±11.9%) | — / — |
| fj-kmeans | 21 | ✅ 2825 ms (66 iters) | ✅ 2799 ms (66 iters) | ≈ -0.9% (±2.5%) | — / — |
| fj-kmeans | 25 | ✅ 2837 ms (66 iters) | ✅ 2805 ms (66 iters) | ≈ -1.1% (±2.6%) | — / — |
| future-genetic | 21 | ✅ 2078 ms (89 iters) | ✅ 2091 ms (88 iters) | ≈ +0.6% (±2.8%) | — / — |
| future-genetic | 25 | ✅ 2020 ms (92 iters) | ✅ 2066 ms (89 iters) | ≈ +2.3% (±2.5%) | — / — |
| reactors | 21 | ✅ 15705 ms (16 iters) | ✅ 17378 ms (15 iters) | 🔴 +10.7% | — / — |
| reactors | 25 | ✅ 18547 ms (15 iters) | ✅ 17977 ms (15 iters) | ≈ -3.1% (±4.8%) | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 1 | 1954 / 1985 | ✅ / ✅ | ✅ / ✅ |
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 3 | 2359 / 2267 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | 4 / ✅ | 8994 / ✅ | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 1 | 8626 / 8459 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | 5 / 1 | 1256 / 1249 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 2 | 1274 / 1263 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | 2 / 1 | 2920 / 2864 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | 3 / 1 | 2849 / 2852 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / ✅ | ✅ / ✅ | 3 / 1 | 3468 / 3467 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / 3 | 1597 / 1889 | ✅ / ✅ | ✅ / ✅ |
| reactors | 25 | ✅ / ✅ | ✅ / ✅ | 1 / ✅ | 1861 / 1823 | ✅ / ✅ | ✅ / ✅ |
Benchmark Results (commit 6c0bae9)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/124510325 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 21 | ✅ 10227 ms (21 iters) | ✅ 10299 ms (21 iters) | ≈ +0.7% (±11.6%) | — / — |
| akka-uct | 25 | ✅ 8837 ms (24 iters) | ✅ 8984 ms (24 iters) | ≈ +1.7% (±10.6%) | — / — |
| finagle-chirper | 21 | ✅ 5988 ms (33 iters) | ✅ 5949 ms (33 iters) | ≈ -0.7% (±24.9%) | |
| finagle-chirper | 25 | ✅ 5491 ms (36 iters) | ✅ 5491 ms (36 iters) | ≈ 0% (±24.9%) | |
| fj-kmeans | 21 | ✅ 2697 ms (70 iters) | ✅ 2812 ms (66 iters) | 🔴 +4.3% | — / — |
| fj-kmeans | 25 | ✅ 2773 ms (68 iters) | ✅ 2765 ms (68 iters) | ≈ -0.3% (±2.8%) | — / — |
| future-genetic | 21 | ✅ 2124 ms (87 iters) | ✅ 2085 ms (89 iters) | ≈ -1.8% (±2.7%) | — / — |
| future-genetic | 25 | ✅ 2083 ms (89 iters) | ✅ 2044 ms (91 iters) | ≈ -1.9% (±2.6%) | — / — |
| naive-bayes | 21 | ✅ 1302 ms (132 iters) | ✅ 1243 ms (137 iters) | ≈ -4.5% (±31.8%) | — / — |
| naive-bayes | 25 | ✅ 1005 ms (170 iters) | ✅ 1023 ms (167 iters) | ≈ +1.8% (±32.5%) | — / — |
| reactors | 21 | ✅ 15518 ms (16 iters) | ✅ 15636 ms (15 iters) | ≈ +0.8% (±8.2%) | — / — |
| reactors | 25 | ✅ 18182 ms (15 iters) | ✅ 18242 ms (15 iters) | ≈ +0.3% (±4.2%) | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 21 | ✅ / ✅ | ✅ / ✅ | 3 / 4 | 1877 / 2019 | ✅ / ✅ | ✅ / ✅ |
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | 3 / 3 | 2344 / 2393 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | 4 / ✅ | 8459 / 8370 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 8274 / 8291 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | 2 / 3 | 1289 / 1249 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 3 | 1277 / 1272 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | 1 / ✅ | 2992 / 3025 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 3 | 2947 / 2968 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / 4 | 3514 / 3484 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / ✅ | ✅ / ✅ | 6 / 4 | 3475 / 3491 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 1540 / 1529 | ✅ / ✅ | ✅ / ✅ |
| reactors | 25 | ✅ / ✅ | ✅ / ✅ | 2 / ✅ | 1858 / 1791 | ✅ / ✅ | ✅ / ✅ |
Uh oh!
There was an error while loading. Please reload this page.
…opy() isReadableRange() + memcpy still races if the probed memory changes mapping between the check and the copy. Use SafeAccess::safeCopy() instead, which fault-protects each read as it happens.
Benchmark Results (commit f4ee43a)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/124544793 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 21 | ✅ 10336 ms (21 iters) | ✅ 10190 ms (21 iters) | ≈ -1.4% (±10.9%) | — / — |
| akka-uct | 25 | ✅ 8817 ms (24 iters) | ✅ 8964 ms (24 iters) | ≈ +1.7% (±10.1%) | — / — |
| finagle-chirper | 21 | ✅ 5942 ms (33 iters) | ✅ 5963 ms (33 iters) | ≈ +0.4% (±25.3%) | |
| finagle-chirper | 25 | ✅ 5453 ms (36 iters) | ✅ 5455 ms (36 iters) | ≈ +0% (±24.1%) | |
| fj-kmeans | 21 | ✅ 2767 ms (67 iters) | ✅ 2714 ms (69 iters) | ≈ -1.9% (±2.7%) | — / — |
| fj-kmeans | 25 | ✅ 2843 ms (66 iters) | ✅ 2838 ms (66 iters) | ≈ -0.2% (±2.7%) | — / — |
| future-genetic | 21 | ✅ 2098 ms (88 iters) | ✅ 2078 ms (89 iters) | ≈ -1% (±2.8%) | — / — |
| future-genetic | 25 | ✅ 2104 ms (88 iters) | ✅ 2017 ms (92 iters) | 🟢 -4.1% | — / — |
| naive-bayes | 21 | ✅ 1259 ms (136 iters) | ✅ 1302 ms (131 iters) | ≈ +3.4% (±33.5%) | — / — |
| naive-bayes | 25 | ✅ 1015 ms (169 iters) | ✅ 1014 ms (169 iters) | ≈ -0.1% (±31.3%) | — / — |
| reactors | 21 | ✅ 16885 ms (15 iters) | ✅ 16926 ms (15 iters) | ≈ +0.2% (±7.8%) | — / — |
| reactors | 25 | ✅ 18291 ms (15 iters) | ✅ 18680 ms (15 iters) | ≈ +2.1% (±5.2%) | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 2 | 2014 / 1910 | ✅ / ✅ | ✅ / ✅ |
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | 3 / 2 | 1971 / 2318 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 25 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 8420 / 8573 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / 1 | 1241 / 1257 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | 2 / ✅ | 1281 / 1295 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | 3 / 1 | 3004 / 2971 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 1 | 2883 / 2848 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | 2 / 4 | 3533 / 3533 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / ✅ | ✅ / ✅ | 5 / 3 | 3487 / 3515 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | 3 / 2 | 1619 / 1734 | ✅ / ✅ | ✅ / ✅ |
| reactors | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 1 | 1866 / 1865 | ✅ / ✅ | ✅ / ✅ |
Uh oh!
There was an error while loading. Please reload this page.
…sert on dealloc failure
rkennke
left a comment
There was a problem hiding this comment.
Looks good to me, thank you!
Benchmark Results (commit 47b8b58)Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/124565177 Commit:
|
| Benchmark | JDK | Latest | Dev | Δ (dev vs latest) | Issues L/D |
|---|---|---|---|---|---|
| akka-uct | 21 | ✅ 10221 ms (21 iters) | ✅ 10315 ms (21 iters) | ≈ +0.9% (±10.8%) | — / — |
| akka-uct | 25 | ✅ 8917 ms (24 iters) | ✅ 8942 ms (24 iters) | ≈ +0.3% (±10.6%) | — / — |
| finagle-chirper | 21 | ✅ 6035 ms (33 iters) | ✅ 5963 ms (33 iters) | ≈ -1.2% (±25.4%) | |
| finagle-chirper | 25 | ✅ 5486 ms (36 iters) | ✅ 5544 ms (36 iters) | ≈ +1.1% (±24.6%) | |
| fj-kmeans | 21 | ✅ 2771 ms (67 iters) | ✅ 2772 ms (67 iters) | ≈ +0% (±2.7%) | — / — |
| fj-kmeans | 25 | ✅ 2787 ms (68 iters) | ✅ 2841 ms (66 iters) | ≈ +1.9% (±2.8%) | — / — |
| future-genetic | 21 | ✅ 2091 ms (88 iters) | ✅ 2233 ms (83 iters) | 🔴 +6.8% | — / — |
| future-genetic | 25 | ✅ 2064 ms (90 iters) | ✅ 2007 ms (92 iters) | 🟢 -2.8% | — / — |
| naive-bayes | 21 | ✅ 1264 ms (136 iters) | ✅ 1290 ms (133 iters) | ≈ +2.1% (±32.6%) | — / — |
| naive-bayes | 25 | ✅ 975 ms (174 iters) | ✅ 1045 ms (164 iters) | ≈ +7.2% (±33.1%) | — / — |
| reactors | 21 | ✅ 15750 ms (15 iters) | ✅ 16108 ms (15 iters) | ≈ +2.3% (±6%) | — / — |
| reactors | 25 | ✅ 18027 ms (15 iters) | ✅ 18694 ms (15 iters) | ≈ +3.7% (±4.5%) | — / — |
Internal counter details (ddprof)
ddprof internal counters, latest / dev (✅ = 0, · = unavailable):
| Benchmark | JDK | Dropped rec | Dropped jvmti | Dropped trace | Skipped WC | AGCT fail | Unwind fail |
|---|---|---|---|---|---|---|---|
| akka-uct | 21 | ✅ / ✅ | ✅ / ✅ | 2 / 1 | 2089 / 1945 | ✅ / ✅ | ✅ / ✅ |
| akka-uct | 25 | ✅ / ✅ | ✅ / ✅ | 3 / 1 | 2180 / 2162 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 21 | ✅ / ✅ | ✅ / ✅ | 3 / 3 | 8336 / 8737 | ✅ / ✅ | ✅ / ✅ |
| finagle-chirper | 25 | ✅ / ✅ | ✅ / ✅ | 1 / ✅ | 8531 / 8773 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 21 | ✅ / ✅ | ✅ / ✅ | 2 / 4 | 1269 / 1270 | ✅ / ✅ | ✅ / ✅ |
| fj-kmeans | 25 | ✅ / ✅ | ✅ / ✅ | 2 / ✅ | 1293 / 1271 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 21 | ✅ / ✅ | ✅ / ✅ | 1 / 2 | 2931 / 3002 | ✅ / ✅ | ✅ / ✅ |
| future-genetic | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 3 | 2898 / 2793 | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ |
| naive-bayes | 25 | ✅ / ✅ | ✅ / ✅ | 2 / 2 | 3435 / 3496 | ✅ / ✅ | ✅ / ✅ |
| reactors | 21 | ✅ / ✅ | ✅ / ✅ | ✅ / ✅ | 1512 / 1619 | ✅ / ✅ | ✅ / ✅ |
| reactors | 25 | ✅ / ✅ | ✅ / ✅ | 1 / 2 | 1865 / 1881 | ✅ / ✅ | ✅ / ✅ |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
jbachorik
commented
Jul 14, 2026
Thanks for the reviews! |
What does this PR do?:
Guards the JVMTI line-number-table copy in
Lookup::fillJavaMethodInfo(flightRecorder.cpp) withSafeAccess::isReadableRange()beforememcpy-ing it, instead of dereferencing the pointer unconditionally. Also boundsline_number_table_sizebefore it's trusted to compute a byte range: sizes aboveMAX_LINE_NUMBER_TABLE_ENTRIES(65535, the JVM spec's maxcode_length) or negative are rejected outright, since a corrupted pointer from a stale jmethodID is just as likely to be paired with a corrupted size. Adds aLINE_NUMBER_TABLE_UNREADABLEcounter for observability when either guard trips.Motivation:
Production crash report: SIGSEGV in
__memcpy_evex_unaligned_erms, insideLookup::resolveMethod(inlinedfillJavaMethodInfo), duringFlightRecorder::dump. Confirmed on stock HotSpot JDK 11.fillJavaMethodInfocallsGetLineNumberTable()on ajmethodIDcaptured asynchronously at sample time, which can point at an already-unloaded class by the time the dump thread processes it (the TOCTOU race already documented a few lines above this call, re:GetMethodDeclaringClass). The siblingclass_name/method_name/method_sigstrings returned by the preceding JVMTI calls are already probed withSafeAccess::isReadableRangefor exactly this reason (#537 /ef13aa29f), but the line-number-table pointer and its paired size were copied/trusted unguarded. This PR closes that gap.Additional Notes:
lineNumberTableCopy_ut.cpp) isolates the copy step from JVMTI/JNI (impractical to fake a live JVM in a plain gtest) by exercising the identical copy pattern against a realmmap'd-then-munmap'd page, standing in for "GetLineNumberTable() returned a bad pointer" regardless of the precise reason. Verified independently outside gtest too: the unguarded pattern segfaults (exit 139) and the guarded pattern exits cleanly.JMethodIDInvalidationStressTest.java, a JUnit stress test that races class-unload churn (via disposable classloaders + a dedicated GC-pressure thread) against concurrentdump()/resolveMethod()calls, and asserts via native whitebox counters that a stale jmethodID was actually observed and safely guarded during the run — not just that the JVM didn't crash. The counter-delta check is a JUnit assumption (skip, not fail) since hitting the race within the window is host/JVM-discretionary.AGENTS.md(a short "CI / Automation Script Changes" guardrails section) picked up from other work on this branch; it is not part of the PROF-15385 fix itself but the gap was identified during the reviews and the addition is cheap/small enough not to disturb the main PR.How to test the change?:
./gradlew :ddprof-lib:gtestDebug_lineNumberTableCopy_ut— 3 tests: unguarded pattern crashes as expected (EXPECT_DEATH), guarded pattern skips the copy safely when the source is unmapped/oversized, guarded pattern still copies correctly for valid data../gradlew testDebug -Ptests=JMethodIDInvalidationStressTest— stress test racing class-unload churn against profiler dump/resolve.For Datadog employees:
credentials of any kind, I've requested a security review (run the
dd:platform-security-reviewskill, or file a request via the PSEC review form).
bewairealso runs automatically on every PR.Unsure? Have a question? Request a review!