Skip to content

Use ThreadLocal to setup protection longjmp buffer and fix jmp_buf chaining#615

Draft
zhengyu123 wants to merge 52 commits into
mainfrom
zgu/objmonitor_deflation
Draft

Use ThreadLocal to setup protection longjmp buffer and fix jmp_buf chaining#615
zhengyu123 wants to merge 52 commits into
mainfrom
zgu/objmonitor_deflation

Conversation

@zhengyu123

@zhengyu123 zhengyu123 commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

What does this PR do?:
This PR intents to resolve some of mysterious crashes seen in later releases, e.g. PROF-15206, although, it might not actually solve this particular problem, but I believe it should have positive impact - Cloude and I believe that overwriting JavaThread's exception field is dangerous, in fact, overwriting any JVM data structures are dangerous, because the writes can result in races and readers may see wrong values, that can lead to crashes.

Before introducing Thread Local Handshake in JVM, thread object is usually only read by 'current` thread, so it is relative safe to alter, then restore values inside signal handler, but not any more - a thread may be able to read other thread's states before it decides how to proceed the handshake, so it may read wrong values.

This PR:
Avoid altering JavaThread for jmp_buf
Uses a thread local for storing longjmp buffer and eliminates the dependency on overwriting JavaThread's exception field, so

  • Avoiding other thread reads wrong value of the exception field.
  • longjmp now protects all threads, not just JavaThread - should improve stability.

Chaining jmp_buf
A none signal based sampler can be interrupted by signal based sampler. Therefore, there may be multiple walkVM() calls on stack, each of them sets up a protection jmp_buf for stack walk, the jmp_bufs need to be chained to ensure to jump back to expected location.

Motivation:
Improve profiler's stability.

Additional Notes:
In additional, exception field only exists in JavaThread, but detection code in Profiler is somewhat questionable, especially, for the subclasses of JavaThread

How to test the change?:

  • CI tests
  • New unit tests

For Datadog employees:

  • If this PR touches code that signs or publishes builds or packages, or handles
    credentials of any kind, I've requested a security review (run the dd:platform-security-review
    skill, or file a request via the PSEC review form).
    bewaire also runs automatically on every PR.
  • This PR doesn't touch any of that.
  • JIRA: PROF-15206

Unsure? Have a question? Request a review!

Comment thread ddprof-lib/src/test/cpp/hotspot_crash_protection_ut.cpp Outdated
Comment thread ddprof-lib/src/main/cpp/hotspot/hotspotSupport.cpp Outdated
@datadog-datadog-prod-us1-2

This comment has been minimized.

@dd-octo-sts

dd-octo-sts Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

CI Test Results

Run: #28674156900 | Commit: f477580 | Duration: 13m 52s (longest job)

All 32 test jobs passed

Status Overview

JDK glibc-aarch64/debug glibc-amd64/debug musl-aarch64/debug musl-amd64/debug
8 - - -
8-ibm - - -
8-j9 - -
8-librca - -
8-orcl - - -
11 - - -
11-j9 - -
11-librca - -
17 - -
17-graal - -
17-j9 - -
17-librca - -
21 - -
21-graal - -
21-librca - -
25 - -
25-graal - -
25-librca - -

Legend: ✅ passed | ❌ failed | ⚪ skipped | 🚫 cancelled

Summary: Total: 32 | Passed: 32 | Failed: 0


Updated: 2026-07-03 17:22:25 UTC

zhengyu123 and others added 4 commits June 24, 2026 16:58
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@dd-octo-sts

dd-octo-sts Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Reliability & Chaos Results

All reliability & chaos checks passed Pipeline: https://gitlab.ddbuild.io/DataDog/java-profiler/-/pipelines/122611187

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 6 comments.

Comment thread ddprof-lib/src/main/cpp/hotspot/hotspotSupport.cpp Outdated
Comment thread ddprof-lib/src/main/cpp/hotspot/hotspotSupport.cpp Outdated
Comment thread ddprof-lib/src/main/cpp/hotspot/hotspotSupport.cpp Outdated
Comment thread ddprof-lib/src/main/cpp/hotspot/hotspotSupport.cpp

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated 7 comments.

Comment thread ddprof-lib/src/main/cpp/threadLocal.h Outdated
Comment thread ddprof-lib/src/main/cpp/threadLocal.h Outdated
Comment thread ddprof-lib/src/main/cpp/threadLocal.h Outdated
Comment thread ddprof-lib/src/main/cpp/jvmThread.cpp Outdated
Comment thread ddprof-lib/src/main/cpp/jvmThread.h
Comment thread ddprof-lib/src/main/cpp/hotspot/hotspotSupport.cpp Outdated
zhengyu123 and others added 5 commits June 26, 2026 20:09
@zhengyu123 zhengyu123 changed the title wip: wip: Use TheadLocal to setup protection longjmp buffer Jun 29, 2026
@zhengyu123 zhengyu123 requested a review from Copilot June 29, 2026 13:30

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 10 changed files in this pull request and generated 9 comments.

Comment thread ddprof-lib/src/main/cpp/hotspot/hotspotSupport.h Outdated
Comment thread ddprof-lib/src/main/cpp/jvmThread.cpp Outdated
Comment thread ddprof-lib/src/main/cpp/hotspot/hotspotSupport.cpp Outdated
Comment thread ddprof-lib/src/main/cpp/hotspot/hotspotSupport.cpp Outdated
Comment thread ddprof-lib/src/main/cpp/hotspot/hotspotSupport.cpp Outdated
Comment thread ddprof-lib/src/main/cpp/threadLocal.h Outdated
Comment thread ddprof-lib/src/test/cpp/hotspot_crash_protection_ut.cpp Outdated
Comment thread ddprof-lib/src/test/cpp/hotspot_crash_protection_ut.cpp
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@zhengyu123 zhengyu123 marked this pull request as ready for review July 2, 2026 10:59

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a24ea1519c

ℹ️ 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".

Comment thread ddprof-lib/src/main/cpp/hotspot/hotspotSupport.cpp
@jbachorik jbachorik changed the title Use TheadLocal to setup protection longjmp buffer Use ThreadLocal to setup protection longjmp buffer Jul 2, 2026

@kaahos kaahos left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left some comments, feel free to push back if you disagree with some!

Comment thread ddprof-lib/src/main/cpp/threadLocal.h Outdated
Comment thread ddprof-lib/src/main/cpp/threadLocal.h Outdated
Comment thread ddprof-lib/src/main/cpp/jvmThread.cpp
Comment thread ddprof-lib/src/main/cpp/threadLocalData.h
Comment thread ddprof-lib/src/main/cpp/hotspot/hotspotSupport.cpp Outdated
Comment thread ddprof-lib/src/main/cpp/jvmThread.h Outdated
Comment thread ddprof-lib/src/main/cpp/profiler.cpp
Comment thread ddprof-lib/src/main/cpp/threadLocal.h
zhengyu123 and others added 2 commits July 3, 2026 09:27
Co-authored-by: Paul Fournillon <112829622+kaahos@users.noreply.github.com>
@dd-octo-sts

dd-octo-sts Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit a7af817)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/122529133 Commit: a7af817920dd5fefb3be3795e0ae4662eb373eb7

⚠️ Significant outliers

  • 🔴 future-genetic (JDK 21): runtime +4.7% (2034→2130 ms)
  • ⚠️ future-genetic (JDK 21): wallclock unwinds skipped — latest 0 → dev 2981 (new)
Runtime details (per benchmark × JDK)
Benchmark JDK Latest Dev Δ (dev vs latest) Issues L/D
akka-uct 21 ✅ 10262 ms (7 iters) ✅ 10301 ms (7 iters) ≈ +0.4% (±21.2%) — / —
akka-uct 25 ✅ 8886 ms (8 iters) ✅ 9070 ms (8 iters) ≈ +2.1% (±17.7%) — / —
finagle-chirper 21 ✅ 5963 ms (11 iters) ✅ 5986 ms (11 iters) ≈ +0.4% (±47.6%) ⚠️ W:1 / ⚠️ W:1
finagle-chirper 25 ✅ 5444 ms (12 iters) ✅ 5383 ms (12 iters) ≈ -1.1% (±42.7%) ⚠️ W:1 / ⚠️ W:1
fj-kmeans 21 ✅ 2842 ms (22 iters) ✅ 2832 ms (22 iters) ≈ -0.4% (±4.3%) — / —
fj-kmeans 25 ✅ 2803 ms (22 iters) ✅ 2803 ms (22 iters) ≈ 0% (±4.5%) — / —
future-genetic 21 ✅ 2034 ms (30 iters) ✅ 2130 ms (29 iters) 🔴 +4.7% — / —
future-genetic 25 ✅ 2086 ms (30 iters) ✅ 2022 ms (31 iters) ≈ -3.1% (±4%) — / —
naive-bayes 21 ✅ 1309 ms (44 iters) ✅ 1265 ms (45 iters) ≈ -3.4% (±54.5%) — / —
naive-bayes 25 ✅ 1014 ms (56 iters) ✅ 1019 ms (56 iters) ≈ +0.5% (±55.4%) — / —
reactors 21 ✅ 16988 ms (5 iters) ✅ 17557 ms (5 iters) ≈ +3.3% (±14.2%) — / —
reactors 25 ✅ 18114 ms (5 iters) ✅ 18549 ms (5 iters) ≈ +2.4% (±5.9%) — / —
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 ✅ / ✅ ✅ / ✅ 3 / 4 2312 / 2219 ✅ / ✅ ✅ / ✅
finagle-chirper 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
finagle-chirper 25 ✅ / ✅ ✅ / ✅ 1 / 1 8084 / 8011 ✅ / ✅ ✅ / ✅
fj-kmeans 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
fj-kmeans 25 ✅ / ✅ ✅ / ✅ 3 / 6 1260 / 1266 ✅ / ✅ ✅ / ✅
future-genetic 21 ✅ / ✅ ✅ / ✅ ✅ / 1 ✅ / 2981 ✅ / ✅ ✅ / ✅
future-genetic 25 ✅ / ✅ ✅ / ✅ 1 / 4 2953 / 2907 ✅ / ✅ ✅ / ✅
naive-bayes 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
naive-bayes 25 ✅ / ✅ ✅ / ✅ 3 / 5 3440 / 3493 ✅ / ✅ ✅ / ✅
reactors 21 ✅ / ✅ ✅ / ✅ 2 / ✅ 1735 / ✅ ✅ / ✅ ✅ / ✅
reactors 25 ✅ / ✅ ✅ / ✅ 2 / 1 1845 / 1894 ✅ / ✅ ✅ / ✅

@zhengyu123 zhengyu123 changed the title Use ThreadLocal to setup protection longjmp buffer Use ThreadLocal to setup protection longjmp buffer and fix jmp_buf chaining Jul 3, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2b74f11f84

ℹ️ 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".

Comment thread ddprof-lib/src/main/cpp/vmEntry.cpp Outdated
@dd-octo-sts

dd-octo-sts Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit 2b74f11)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/122551800 Commit: 2b74f11f84ae003f48b61eb1380af84d3ff37ee2

⚠️ Significant outliers

  • 🟢 future-genetic (JDK 21): runtime -5.2% (2193→2079 ms)
Runtime details (per benchmark × JDK)
Benchmark JDK Latest Dev Δ (dev vs latest) Issues L/D
akka-uct 21 ✅ 10405 ms (7 iters) ✅ 10212 ms (7 iters) ≈ -1.9% (±18.7%) — / —
akka-uct 25 ✅ 8888 ms (8 iters) ✅ 8968 ms (8 iters) ≈ +0.9% (±20.5%) — / —
finagle-chirper 21 ✅ 5982 ms (11 iters) ✅ 6077 ms (11 iters) ≈ +1.6% (±48.3%) ⚠️ W:1 / ⚠️ W:1
finagle-chirper 25 ✅ 5483 ms (12 iters) ✅ 5497 ms (12 iters) ≈ +0.3% (±44.1%) ⚠️ W:1 / ⚠️ W:1
fj-kmeans 21 ✅ 2825 ms (22 iters) ✅ 2838 ms (22 iters) ≈ +0.5% (±4.4%) — / —
fj-kmeans 25 ✅ 2821 ms (22 iters) ✅ 2834 ms (22 iters) ≈ +0.5% (±4.8%) — / —
future-genetic 21 ✅ 2193 ms (28 iters) ✅ 2079 ms (30 iters) 🟢 -5.2% — / —
future-genetic 25 ✅ 2000 ms (31 iters) ✅ 2046 ms (30 iters) ≈ +2.3% (±4.5%) — / —
naive-bayes 21 ✅ 1406 ms (41 iters) ✅ 1394 ms (41 iters) ≈ -0.9% (±55.8%) — / —
naive-bayes 25 ✅ 995 ms (57 iters) ✅ 1012 ms (56 iters) ≈ +1.7% (±55.1%) — / —
reactors 21 ✅ 17242 ms (5 iters) ✅ 17835 ms (5 iters) ≈ +3.4% (±10.4%) — / —
reactors 25 ✅ 17618 ms (5 iters) ✅ 18524 ms (5 iters) ≈ +5.1% (±12.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 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
akka-uct 25 ✅ / ✅ ✅ / ✅ 3 / 1 2271 / 2181 ✅ / ✅ ✅ / ✅
finagle-chirper 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
finagle-chirper 25 ✅ / ✅ ✅ / ✅ 4 / 4 8792 / 8233 ✅ / ✅ ✅ / ✅
fj-kmeans 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
fj-kmeans 25 ✅ / ✅ ✅ / ✅ 2 / 2 1262 / 1268 ✅ / ✅ ✅ / ✅
future-genetic 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
future-genetic 25 ✅ / ✅ ✅ / ✅ 1 / ✅ 2882 / 2927 ✅ / ✅ ✅ / ✅
naive-bayes 21 ✅ / ✅ ✅ / ✅ 5 / ✅ 3532 / ✅ ✅ / ✅ ✅ / ✅
naive-bayes 25 ✅ / ✅ ✅ / ✅ 11 / 2 3473 / 3464 ✅ / ✅ ✅ / ✅
reactors 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
reactors 25 ✅ / ✅ ✅ / ✅ ✅ / ✅ 1769 / 1900 ✅ / ✅ ✅ / ✅

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9afed1d10f

ℹ️ 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".

Comment thread ddprof-lib/src/main/cpp/profiler.cpp Outdated
Comment thread ddprof-lib/src/main/cpp/profiler.cpp Outdated
@zhengyu123 zhengyu123 marked this pull request as draft July 3, 2026 12:14
@dd-octo-sts

dd-octo-sts Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit 9afed1d)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/122569372 Commit: 9afed1d10f5814856b7004d2511649abedc015c0

⚠️ Significant outliers

  • ⚠️ future-genetic (JDK 25): wallclock unwinds skipped — latest 0 → dev 2907 (new)
Runtime details (per benchmark × JDK)
Benchmark JDK Latest Dev Δ (dev vs latest) Issues L/D
akka-uct 21 ✅ 10326 ms (7 iters) ✅ 10399 ms (7 iters) ≈ +0.7% (±19.9%) — / —
akka-uct 25 ✅ 9005 ms (8 iters) ✅ 8860 ms (8 iters) ≈ -1.6% (±21.9%) — / —
finagle-chirper 21 ✅ 5979 ms (11 iters) ✅ 5907 ms (11 iters) ≈ -1.2% (±44.8%) ⚠️ W:1 / ⚠️ W:1
finagle-chirper 25 ✅ 5317 ms (12 iters) ✅ 5525 ms (12 iters) ≈ +3.9% (±43%) ⚠️ W:1 / ⚠️ W:1
fj-kmeans 21 ✅ 2826 ms (22 iters) ✅ 2806 ms (22 iters) ≈ -0.7% (±4.3%) — / —
fj-kmeans 25 ✅ 2800 ms (22 iters) ✅ 2813 ms (22 iters) ≈ +0.5% (±4.5%) — / —
future-genetic 21 ✅ 2123 ms (29 iters) ✅ 2129 ms (29 iters) ≈ +0.3% (±4.5%) — / —
future-genetic 25 ✅ 2080 ms (30 iters) ✅ 2124 ms (29 iters) ≈ +2.1% (±4.5%) — / —
naive-bayes 21 ✅ 1302 ms (44 iters) ✅ 1258 ms (45 iters) ≈ -3.4% (±56.9%) — / —
naive-bayes 25 ✅ 1005 ms (57 iters) ✅ 1013 ms (56 iters) ≈ +0.8% (±55.3%) — / —
reactors 21 ✅ 17261 ms (5 iters) ✅ 15983 ms (5 iters) ≈ -7.4% (±11%) — / —
reactors 25 ✅ 18647 ms (5 iters) ✅ 18660 ms (5 iters) ≈ +0.1% (±6.9%) — / —
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 ✅ / ✅ ✅ / ✅ 2 / 2 2338 / 2103 ✅ / ✅ ✅ / ✅
finagle-chirper 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
finagle-chirper 25 ✅ / ✅ ✅ / ✅ 3 / 5 8000 / 8597 ✅ / ✅ ✅ / ✅
fj-kmeans 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
fj-kmeans 25 ✅ / ✅ ✅ / ✅ 2 / 3 1270 / 1265 ✅ / ✅ ✅ / ✅
future-genetic 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
future-genetic 25 ✅ / ✅ ✅ / ✅ ✅ / 2 ✅ / 2907 ✅ / ✅ ✅ / ✅
naive-bayes 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
naive-bayes 25 ✅ / ✅ ✅ / ✅ 5 / 7 3505 / 3465 ✅ / ✅ ✅ / ✅
reactors 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
reactors 25 ✅ / ✅ ✅ / ✅ ✅ / ✅ 1885 / 1891 ✅ / ✅ ✅ / ✅

@dd-octo-sts

dd-octo-sts Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit 0c0e70d)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/122580145 Commit: 0c0e70d656f2f9983e924c08875ff0b271b76775

⚠️ Significant outliers

  • 🔴 future-genetic (JDK 25): runtime +11.1% (1934→2148 ms)
  • 🟢 reactors (JDK 25): runtime -7.4% (18449→17092 ms)
Runtime details (per benchmark × JDK)
Benchmark JDK Latest Dev Δ (dev vs latest) Issues L/D
akka-uct 21 ✅ 10370 ms (7 iters) ✅ 10370 ms (7 iters) ≈ 0% (±21%) — / —
akka-uct 25 ✅ 8760 ms (8 iters) ✅ 8800 ms (8 iters) ≈ +0.5% (±18.1%) — / —
finagle-chirper 21 ✅ 5986 ms (11 iters) ✅ 5960 ms (11 iters) ≈ -0.4% (±45.8%) ⚠️ W:1 / ⚠️ W:1
finagle-chirper 25 ✅ 5436 ms (12 iters) ✅ 5500 ms (12 iters) ≈ +1.2% (±43.6%) ⚠️ W:1 / ⚠️ W:2
fj-kmeans 21 ✅ 2823 ms (22 iters) ✅ 2822 ms (22 iters) ≈ -0% (±4.4%) — / —
fj-kmeans 25 ✅ 2842 ms (22 iters) ✅ 2842 ms (22 iters) ≈ 0% (±4.5%) — / —
future-genetic 21 ✅ 2139 ms (29 iters) ✅ 2078 ms (30 iters) ≈ -2.9% (±4.4%) — / —
future-genetic 25 ✅ 1934 ms (32 iters) ✅ 2148 ms (29 iters) 🔴 +11.1% — / —
naive-bayes 21 ✅ 1240 ms (46 iters) ✅ 1378 ms (42 iters) ≈ +11.1% (±59.1%) — / —
naive-bayes 25 ✅ 1018 ms (56 iters) ✅ 1030 ms (55 iters) ≈ +1.2% (±56.3%) — / —
reactors 21 ✅ 16463 ms (5 iters) ✅ 16779 ms (5 iters) ≈ +1.9% (±13.1%) — / —
reactors 25 ✅ 18449 ms (5 iters) ✅ 17092 ms (5 iters) 🟢 -7.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 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
akka-uct 25 ✅ / ✅ ✅ / ✅ 3 / 2 2295 / 2238 ✅ / ✅ ✅ / ✅
finagle-chirper 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
finagle-chirper 25 ✅ / ✅ ✅ / ✅ 1 / 2 8249 / 8665 ✅ / ✅ ✅ / ✅
fj-kmeans 21 ✅ / ✅ ✅ / ✅ 1 / ✅ 1253 / ✅ ✅ / ✅ ✅ / ✅
fj-kmeans 25 ✅ / ✅ ✅ / ✅ 4 / 3 1292 / 1285 ✅ / ✅ ✅ / ✅
future-genetic 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ 2986 / ✅ ✅ / ✅ ✅ / ✅
future-genetic 25 ✅ / ✅ ✅ / ✅ 2 / 3 2854 / 2900 ✅ / ✅ ✅ / ✅
naive-bayes 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
naive-bayes 25 ✅ / ✅ ✅ / ✅ 4 / 4 3477 / 3462 ✅ / ✅ ✅ / ✅
reactors 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
reactors 25 ✅ / ✅ ✅ / ✅ ✅ / 1 1885 / 1710 ✅ / ✅ ✅ / ✅

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 46 out of 46 changed files in this pull request and generated 2 comments.

Comment thread ddprof-lib/src/main/cpp/jvmThread.h
Comment thread ddprof-lib/src/main/cpp/hotspot/hotspotSupport.cpp
@dd-octo-sts

dd-octo-sts Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit 321bd18)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/122611145 Commit: 321bd18e84227a2ae8ff62aa761a52a31ebd3df1

⚠️ Significant outliers

  • 🟢 future-genetic (JDK 25): runtime -4.9% (2072→1970 ms)
  • ⚠️ future-genetic (JDK 25): wallclock unwinds skipped — latest 0 → dev 2820 (new)
Runtime details (per benchmark × JDK)
Benchmark JDK Latest Dev Δ (dev vs latest) Issues L/D
akka-uct 21 ✅ 10366 ms (7 iters) ✅ 10423 ms (7 iters) ≈ +0.5% (±22.2%) — / —
akka-uct 25 ✅ 8898 ms (8 iters) ✅ 8789 ms (8 iters) ≈ -1.2% (±18.5%) — / —
finagle-chirper 21 ✅ 5943 ms (11 iters) ✅ 6022 ms (11 iters) ≈ +1.3% (±47.2%) ⚠️ W:1 / ⚠️ W:1
finagle-chirper 25 ✅ 5389 ms (12 iters) ✅ 5334 ms (12 iters) ≈ -1% (±42%) ⚠️ W:1 / ⚠️ W:1
fj-kmeans 21 ✅ 2833 ms (22 iters) ✅ 2823 ms (22 iters) ≈ -0.4% (±4.4%) — / —
fj-kmeans 25 ✅ 2816 ms (22 iters) ✅ 2828 ms (22 iters) ≈ +0.4% (±4.8%) — / —
future-genetic 21 ✅ 2101 ms (30 iters) ✅ 2084 ms (30 iters) ≈ -0.8% (±4.6%) — / —
future-genetic 25 ✅ 2072 ms (30 iters) ✅ 1970 ms (31 iters) 🟢 -4.9% — / —
naive-bayes 21 ✅ 1274 ms (45 iters) ✅ 1272 ms (45 iters) ≈ -0.2% (±56.1%) — / —
naive-bayes 25 ✅ 1015 ms (56 iters) ✅ 1008 ms (57 iters) ≈ -0.7% (±54.8%) — / —
reactors 25 ✅ 18282 ms (5 iters) ✅ 17987 ms (5 iters) ≈ -1.6% (±4.3%) — / —
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 ✅ / ✅ ✅ / ✅ 7 / 1 2210 / 2284 ✅ / ✅ ✅ / ✅
finagle-chirper 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
finagle-chirper 25 ✅ / ✅ ✅ / ✅ 2 / ✅ 8223 / 8078 ✅ / ✅ ✅ / ✅
fj-kmeans 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
fj-kmeans 25 ✅ / ✅ ✅ / ✅ 3 / 5 1270 / 1282 ✅ / ✅ ✅ / ✅
future-genetic 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ 3036 / ✅ ✅ / ✅ ✅ / ✅
future-genetic 25 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / 2820 ✅ / ✅ ✅ / ✅
naive-bayes 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
naive-bayes 25 ✅ / ✅ ✅ / ✅ 5 / 7 3468 / 3511 ✅ / ✅ ✅ / ✅
reactors 25 ✅ / ✅ ✅ / ✅ 1 / ✅ 1891 / ✅ ✅ / ✅ ✅ / ✅

@dd-octo-sts

dd-octo-sts Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (commit e4b9719)

Pipeline: https://gitlab.ddbuild.io/DataDog/apm-reliability/benchmarking-platform/-/pipelines/122633659 Commit: e4b97194a1bd758dfffcb77ab669046e94fe63bc

⚠️ Significant outliers

  • 🟢 fj-kmeans (JDK 21): runtime -5% (2875→2730 ms)
  • 🔴 fj-kmeans (JDK 25): runtime +7.9% (2633→2842 ms)
  • ⚠️ reactors (JDK 21): wallclock unwinds skipped — latest 0 → dev 1597 (new)
Runtime details (per benchmark × JDK)
Benchmark JDK Latest Dev Δ (dev vs latest) Issues L/D
akka-uct 21 ✅ 10389 ms (7 iters) ✅ 10329 ms (7 iters) ≈ -0.6% (±20.8%) — / —
akka-uct 25 ✅ 8966 ms (8 iters) ✅ 8809 ms (8 iters) ≈ -1.8% (±20.3%) — / —
finagle-chirper 21 ✅ 6023 ms (11 iters) ✅ 6002 ms (11 iters) ≈ -0.3% (±44.9%) ⚠️ W:1 / ⚠️ W:1
finagle-chirper 25 ✅ 5457 ms (12 iters) ✅ 5438 ms (12 iters) ≈ -0.3% (±43.4%) ⚠️ W:1 / ⚠️ W:1
fj-kmeans 21 ✅ 2875 ms (22 iters) ✅ 2730 ms (23 iters) 🟢 -5% — / —
fj-kmeans 25 ✅ 2633 ms (24 iters) ✅ 2842 ms (22 iters) 🔴 +7.9% — / —
future-genetic 21 ✅ 2133 ms (29 iters) ✅ 2080 ms (30 iters) ≈ -2.5% (±4.2%) — / —
future-genetic 25 ✅ 2070 ms (30 iters) ✅ 2141 ms (29 iters) ≈ +3.4% (±4.3%) — / —
naive-bayes 21 ✅ 1221 ms (46 iters) ✅ 1277 ms (45 iters) ≈ +4.6% (±57.5%) — / —
naive-bayes 25 ✅ 1034 ms (55 iters) ✅ 1018 ms (56 iters) ≈ -1.5% (±55.8%) — / —
reactors 21 ✅ 16041 ms (5 iters) ✅ 15714 ms (5 iters) ≈ -2% (±17.4%) — / —
reactors 25 ✅ 17707 ms (5 iters) ✅ 17823 ms (5 iters) ≈ +0.7% (±11.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 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
akka-uct 25 ✅ / ✅ ✅ / ✅ 1 / 4 2466 / 2284 ✅ / ✅ ✅ / ✅
finagle-chirper 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
finagle-chirper 25 ✅ / ✅ ✅ / ✅ 1 / 1 8316 / 8172 ✅ / ✅ ✅ / ✅
fj-kmeans 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
fj-kmeans 25 ✅ / ✅ ✅ / ✅ 2 / 4 1298 / 1271 ✅ / ✅ ✅ / ✅
future-genetic 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
future-genetic 25 ✅ / ✅ ✅ / ✅ 3 / 1 2914 / 2977 ✅ / ✅ ✅ / ✅
naive-bayes 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / ✅
naive-bayes 25 ✅ / ✅ ✅ / ✅ 4 / 1 3478 / 3494 ✅ / ✅ ✅ / ✅
reactors 21 ✅ / ✅ ✅ / ✅ ✅ / ✅ ✅ / 1597 ✅ / ✅ ✅ / ✅
reactors 25 ✅ / ✅ ✅ / ✅ ✅ / 2 1765 / 1822 ✅ / ✅ ✅ / ✅

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants