Add J9/OpenJ9 crash tracking support#10496
Conversation
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
BenchmarksStartupParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 63 metrics, 8 unstable metrics. Startup time reports for insecure-bankgantt
title insecure-bank - global startup overhead: candidate=1.59.0-SNAPSHOT~6964036f1f, baseline=1.60.0-SNAPSHOT~b90494a942
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.077 s) : 0, 1077040
Total [baseline] (8.782 s) : 0, 8781973
Agent [candidate] (1.072 s) : 0, 1072015
Total [candidate] (8.759 s) : 0, 8759337
section iast
Agent [baseline] (1.234 s) : 0, 1233583
Total [baseline] (9.386 s) : 0, 9385686
Agent [candidate] (1.232 s) : 0, 1231604
Total [candidate] (9.344 s) : 0, 9343613
gantt
title insecure-bank - break down per module: candidate=1.59.0-SNAPSHOT~6964036f1f, baseline=1.60.0-SNAPSHOT~b90494a942
dateFormat X
axisFormat %s
section tracing
crashtracking [baseline] (1.198 ms) : 0, 1198
crashtracking [candidate] (1.199 ms) : 0, 1199
BytebuddyAgent [baseline] (636.095 ms) : 0, 636095
BytebuddyAgent [candidate] (633.753 ms) : 0, 633753
AgentMeter [baseline] (29.418 ms) : 0, 29418
AgentMeter [candidate] (29.205 ms) : 0, 29205
GlobalTracer [baseline] (260.082 ms) : 0, 260082
GlobalTracer [candidate] (259.094 ms) : 0, 259094
AppSec [baseline] (33.308 ms) : 0, 33308
AppSec [candidate] (33.035 ms) : 0, 33035
Debugger [baseline] (61.96 ms) : 0, 61960
Debugger [candidate] (64.343 ms) : 0, 64343
Remote Config [baseline] (641.397 µs) : 0, 641
Remote Config [candidate] (629.424 µs) : 0, 629
Telemetry [baseline] (12.471 ms) : 0, 12471
Telemetry [candidate] (11.423 ms) : 0, 11423
Flare Poller [baseline] (6.263 ms) : 0, 6263
Flare Poller [candidate] (3.82 ms) : 0, 3820
section iast
crashtracking [baseline] (1.174 ms) : 0, 1174
crashtracking [candidate] (1.174 ms) : 0, 1174
BytebuddyAgent [baseline] (797.497 ms) : 0, 797497
BytebuddyAgent [candidate] (796.951 ms) : 0, 796951
AgentMeter [baseline] (11.274 ms) : 0, 11274
AgentMeter [candidate] (11.212 ms) : 0, 11212
GlobalTracer [baseline] (248.535 ms) : 0, 248535
GlobalTracer [candidate] (248.469 ms) : 0, 248469
AppSec [baseline] (32.52 ms) : 0, 32520
AppSec [candidate] (35.483 ms) : 0, 35483
Debugger [baseline] (67.663 ms) : 0, 67663
Debugger [candidate] (63.629 ms) : 0, 63629
Remote Config [baseline] (537.841 µs) : 0, 538
Remote Config [candidate] (533.17 µs) : 0, 533
Telemetry [baseline] (8.599 ms) : 0, 8599
Telemetry [candidate] (8.534 ms) : 0, 8534
Flare Poller [baseline] (3.504 ms) : 0, 3504
Flare Poller [candidate] (3.459 ms) : 0, 3459
IAST [baseline] (27.023 ms) : 0, 27023
IAST [candidate] (26.959 ms) : 0, 26959
Startup time reports for petclinicgantt
title petclinic - global startup overhead: candidate=1.59.0-SNAPSHOT~6964036f1f, baseline=1.60.0-SNAPSHOT~b90494a942
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.071 s) : 0, 1071481
Total [baseline] (10.742 s) : 0, 10741656
Agent [candidate] (1.065 s) : 0, 1065180
Total [candidate] (10.921 s) : 0, 10921230
section appsec
Agent [baseline] (1.239 s) : 0, 1238571
Total [baseline] (11.029 s) : 0, 11028522
Agent [candidate] (1.242 s) : 0, 1241696
Total [candidate] (11.059 s) : 0, 11059387
section iast
Agent [baseline] (1.233 s) : 0, 1232747
Total [baseline] (11.213 s) : 0, 11212867
Agent [candidate] (1.241 s) : 0, 1240968
Total [candidate] (11.147 s) : 0, 11146733
section profiling
Agent [baseline] (1.195 s) : 0, 1195224
Total [baseline] (10.886 s) : 0, 10885598
Agent [candidate] (1.19 s) : 0, 1190025
Total [candidate] (10.989 s) : 0, 10988634
gantt
title petclinic - break down per module: candidate=1.59.0-SNAPSHOT~6964036f1f, baseline=1.60.0-SNAPSHOT~b90494a942
dateFormat X
axisFormat %s
section tracing
crashtracking [baseline] (1.18 ms) : 0, 1180
crashtracking [candidate] (1.177 ms) : 0, 1177
BytebuddyAgent [baseline] (632.959 ms) : 0, 632959
BytebuddyAgent [candidate] (629.884 ms) : 0, 629884
AgentMeter [baseline] (29.006 ms) : 0, 29006
AgentMeter [candidate] (28.953 ms) : 0, 28953
GlobalTracer [baseline] (258.78 ms) : 0, 258780
GlobalTracer [candidate] (257.831 ms) : 0, 257831
AppSec [baseline] (33.046 ms) : 0, 33046
AppSec [candidate] (32.693 ms) : 0, 32693
Debugger [baseline] (61.933 ms) : 0, 61933
Debugger [candidate] (61.162 ms) : 0, 61162
Remote Config [baseline] (646.478 µs) : 0, 646
Remote Config [candidate] (633.344 µs) : 0, 633
Telemetry [baseline] (12.465 ms) : 0, 12465
Telemetry [candidate] (11.4 ms) : 0, 11400
Flare Poller [baseline] (6.165 ms) : 0, 6165
Flare Poller [candidate] (6.114 ms) : 0, 6114
section appsec
crashtracking [baseline] (1.182 ms) : 0, 1182
crashtracking [candidate] (1.179 ms) : 0, 1179
BytebuddyAgent [baseline] (657.773 ms) : 0, 657773
BytebuddyAgent [candidate] (660.164 ms) : 0, 660164
AgentMeter [baseline] (11.969 ms) : 0, 11969
AgentMeter [candidate] (11.97 ms) : 0, 11970
GlobalTracer [baseline] (258.664 ms) : 0, 258664
GlobalTracer [candidate] (258.181 ms) : 0, 258181
AppSec [baseline] (167.585 ms) : 0, 167585
AppSec [candidate] (168.146 ms) : 0, 168146
Debugger [baseline] (67.083 ms) : 0, 67083
Debugger [candidate] (67.341 ms) : 0, 67341
Remote Config [baseline] (654.537 µs) : 0, 655
Remote Config [candidate] (644.706 µs) : 0, 645
Telemetry [baseline] (9.488 ms) : 0, 9488
Telemetry [candidate] (9.719 ms) : 0, 9719
Flare Poller [baseline] (3.68 ms) : 0, 3680
Flare Poller [candidate] (3.855 ms) : 0, 3855
IAST [baseline] (25.226 ms) : 0, 25226
IAST [candidate] (25.164 ms) : 0, 25164
section iast
crashtracking [baseline] (1.183 ms) : 0, 1183
crashtracking [candidate] (1.18 ms) : 0, 1180
BytebuddyAgent [baseline] (796.122 ms) : 0, 796122
BytebuddyAgent [candidate] (801.899 ms) : 0, 801899
AgentMeter [baseline] (11.243 ms) : 0, 11243
AgentMeter [candidate] (11.521 ms) : 0, 11521
GlobalTracer [baseline] (248.358 ms) : 0, 248358
GlobalTracer [candidate] (249.321 ms) : 0, 249321
AppSec [baseline] (33.98 ms) : 0, 33980
AppSec [candidate] (32.598 ms) : 0, 32598
Debugger [baseline] (66.835 ms) : 0, 66835
Debugger [candidate] (69.199 ms) : 0, 69199
Remote Config [baseline] (542.588 µs) : 0, 543
Remote Config [candidate] (544.233 µs) : 0, 544
Telemetry [baseline] (8.743 ms) : 0, 8743
Telemetry [candidate] (8.623 ms) : 0, 8623
Flare Poller [baseline] (3.515 ms) : 0, 3515
Flare Poller [candidate] (3.502 ms) : 0, 3502
IAST [baseline] (26.941 ms) : 0, 26941
IAST [candidate] (27.244 ms) : 0, 27244
section profiling
crashtracking [baseline] (1.224 ms) : 0, 1224
crashtracking [candidate] (1.218 ms) : 0, 1218
BytebuddyAgent [baseline] (685.046 ms) : 0, 685046
BytebuddyAgent [candidate] (681.483 ms) : 0, 681483
AgentMeter [baseline] (8.638 ms) : 0, 8638
AgentMeter [candidate] (8.62 ms) : 0, 8620
GlobalTracer [baseline] (216.849 ms) : 0, 216849
GlobalTracer [candidate] (215.966 ms) : 0, 215966
AppSec [baseline] (32.735 ms) : 0, 32735
AppSec [candidate] (32.419 ms) : 0, 32419
Debugger [baseline] (68.168 ms) : 0, 68168
Debugger [candidate] (67.315 ms) : 0, 67315
Remote Config [baseline] (613.783 µs) : 0, 614
Remote Config [candidate] (630.361 µs) : 0, 630
Telemetry [baseline] (8.894 ms) : 0, 8894
Telemetry [candidate] (9.01 ms) : 0, 9010
Flare Poller [baseline] (3.77 ms) : 0, 3770
Flare Poller [candidate] (3.791 ms) : 0, 3791
ProfilingAgent [baseline] (99.233 ms) : 0, 99233
ProfilingAgent [candidate] (99.807 ms) : 0, 99807
Profiling [baseline] (99.803 ms) : 0, 99803
Profiling [candidate] (100.375 ms) : 0, 100375
LoadParameters
See matching parameters
SummaryFound 3 performance improvements and 2 performance regressions! Performance is the same for 16 metrics, 15 unstable metrics.
Request duration reports for insecure-bankgantt
title insecure-bank - request duration [CI 0.99] : candidate=1.59.0-SNAPSHOT~6964036f1f, baseline=1.60.0-SNAPSHOT~b90494a942
dateFormat X
axisFormat %s
section baseline
no_agent (1.176 ms) : 1164, 1187
. : milestone, 1176,
iast (3.32 ms) : 3270, 3369
. : milestone, 3320,
iast_FULL (5.688 ms) : 5632, 5745
. : milestone, 5688,
iast_GLOBAL (3.558 ms) : 3497, 3618
. : milestone, 3558,
profiling (2.156 ms) : 2137, 2175
. : milestone, 2156,
tracing (1.789 ms) : 1774, 1803
. : milestone, 1789,
section candidate
no_agent (1.181 ms) : 1169, 1192
. : milestone, 1181,
iast (3.227 ms) : 3181, 3274
. : milestone, 3227,
iast_FULL (5.749 ms) : 5691, 5807
. : milestone, 5749,
iast_GLOBAL (3.435 ms) : 3386, 3484
. : milestone, 3435,
profiling (1.979 ms) : 1961, 1998
. : milestone, 1979,
tracing (1.791 ms) : 1777, 1806
. : milestone, 1791,
Request duration reports for petclinicgantt
title petclinic - request duration [CI 0.99] : candidate=1.59.0-SNAPSHOT~6964036f1f, baseline=1.60.0-SNAPSHOT~b90494a942
dateFormat X
axisFormat %s
section baseline
no_agent (17.39 ms) : 17214, 17565
. : milestone, 17390,
appsec (18.641 ms) : 18456, 18825
. : milestone, 18641,
code_origins (17.71 ms) : 17533, 17886
. : milestone, 17710,
iast (17.627 ms) : 17450, 17803
. : milestone, 17627,
profiling (19.67 ms) : 19467, 19874
. : milestone, 19670,
tracing (17.776 ms) : 17601, 17951
. : milestone, 17776,
section candidate
no_agent (19.283 ms) : 19085, 19481
. : milestone, 19283,
appsec (18.369 ms) : 18183, 18554
. : milestone, 18369,
code_origins (17.618 ms) : 17443, 17793
. : milestone, 17618,
iast (17.583 ms) : 17404, 17762
. : milestone, 17583,
profiling (18.626 ms) : 18440, 18812
. : milestone, 18626,
tracing (17.635 ms) : 17463, 17807
. : milestone, 17635,
DacapoParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 11 metrics, 1 unstable metrics. Execution time for biojavagantt
title biojava - execution time [CI 0.99] : candidate=1.59.0-SNAPSHOT~6964036f1f, baseline=1.60.0-SNAPSHOT~b90494a942
dateFormat X
axisFormat %s
section baseline
no_agent (15.455 s) : 15455000, 15455000
. : milestone, 15455000,
appsec (14.781 s) : 14781000, 14781000
. : milestone, 14781000,
iast (18.153 s) : 18153000, 18153000
. : milestone, 18153000,
iast_GLOBAL (17.892 s) : 17892000, 17892000
. : milestone, 17892000,
profiling (14.993 s) : 14993000, 14993000
. : milestone, 14993000,
tracing (14.753 s) : 14753000, 14753000
. : milestone, 14753000,
section candidate
no_agent (14.844 s) : 14844000, 14844000
. : milestone, 14844000,
appsec (14.925 s) : 14925000, 14925000
. : milestone, 14925000,
iast (17.97 s) : 17970000, 17970000
. : milestone, 17970000,
iast_GLOBAL (17.746 s) : 17746000, 17746000
. : milestone, 17746000,
profiling (15.376 s) : 15376000, 15376000
. : milestone, 15376000,
tracing (14.704 s) : 14704000, 14704000
. : milestone, 14704000,
Execution time for tomcatgantt
title tomcat - execution time [CI 0.99] : candidate=1.59.0-SNAPSHOT~6964036f1f, baseline=1.60.0-SNAPSHOT~b90494a942
dateFormat X
axisFormat %s
section baseline
no_agent (1.478 ms) : 1466, 1489
. : milestone, 1478,
appsec (3.797 ms) : 3576, 4018
. : milestone, 3797,
iast (2.258 ms) : 2189, 2328
. : milestone, 2258,
iast_GLOBAL (2.303 ms) : 2233, 2373
. : milestone, 2303,
profiling (2.113 ms) : 2056, 2170
. : milestone, 2113,
tracing (2.058 ms) : 2005, 2112
. : milestone, 2058,
section candidate
no_agent (1.475 ms) : 1464, 1487
. : milestone, 1475,
appsec (3.767 ms) : 3546, 3988
. : milestone, 3767,
iast (2.263 ms) : 2193, 2332
. : milestone, 2263,
iast_GLOBAL (2.302 ms) : 2232, 2372
. : milestone, 2302,
profiling (2.083 ms) : 2028, 2138
. : milestone, 2083,
tracing (2.067 ms) : 2013, 2121
. : milestone, 2067,
|
Adapt J9JavacoreParser and tests to updated crash tracking DTOs: - SigInfo now requires 5 parameters (added code, action, address) - StackFrame now requires 7 parameters (added buildId, buildIdType, fileType, relativeAddress) - ProcInfo.pid changed from String to int - Test assertions updated for field rename (file -> path) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Integrate BuildIdCollector into J9JavacoreParser to extract build IDs from native libraries in crash reports, matching HotspotCrashLogParser: - Added BuildIdCollector for async build ID extraction from ELF binaries - Modified parseNativeStackFrame() to collect library names from native frames - Enriched stack frames with build IDs, file types, and build ID types - Added 5-second timeout for build ID collection completion J9 javacores include native stack frames like [libcrash.so+0x1d7d] which now get enriched with GNU build IDs when available, improving crash symbolication and debugging capabilities. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Code review fixes: - Extract relative address from native stack frames ([lib+0xoffset]) - Add safe integer parsing for PID to handle malformed javacores Matches HotspotCrashLogParser patterns for consistency. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Remove obsolete comment about J9 handling from Agent.java - Separate J9 (javacore) and HotSpot (hs_err) config paths clearly - Update javadoc to reflect actual initialization order - Remove proactive script deployment when -Xdump not configured J9 VMs use javacore format exclusively, not hs_err, so config should only include javacore_path for J9 environments. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
PerfectSlayer
left a comment
There was a problem hiding this comment.
Looking good. Left a suggestion about promoting markdown to common docs.
| @@ -0,0 +1,236 @@ | |||
| # Manual Crash Tracking Setup | |||
There was a problem hiding this comment.
❔ question: Should this doc move to the /docs root folder? It could be useful to share it more widely than "agent" developers.
There was a problem hiding this comment.
Sure, I can move the document up.
| -jar your-application.jar | ||
| ``` | ||
|
|
||
| **Important:** Note the backslash (`\`) before `%pid` - this escapes the space and is required. |
There was a problem hiding this comment.
🎯 suggestion: GitHub has custom markdown for this kind of comment: https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts
If you're interested, there are few places to update in this file.
505a5c0 to
38b8253
Compare
What Does This Do
Adds crash tracking support for J9/OpenJ9 JVMs (IBM Semeru, Eclipse OpenJ9). This includes:
J9JavacoreParserto parse J9 javacore dump filesInitializer.java-Xdump:java:file=Motivation
Previously, crash tracking only supported HotSpot-based JVMs. J9/OpenJ9 JVMs use a different crash dump format (javacore files) and require manual configuration of
-Xdump:toolsince this cannot be set at runtime. This PR extends crash tracking to support J9/OpenJ9, enabling crash reporting for users running on IBM Semeru or Eclipse OpenJ9.Additional Notes
-Xdump:tool:events=gpf+abort,exec=...)dd-java-agent/agent-crashtracking/doc/manual-crash-tracking-setup.mdContributor Checklist
type:and (comp:orinst:) labels in addition to any useful labelsclose,fixor any linking keywords when referencing an issue.Use
solvesinstead, and assign the PR milestone to the issueJira ticket: APMLP-1013