[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-serviceability-dev
Subject: RFR: 8293006: sun/tools/jhsdb/JStackStressTest.java fails with "UnalignedAddressException: 8baadbabe
From: Chris Plummer <cjplummer () openjdk ! org>
Date: 2022-08-30 23:37:05
Message-ID: 30MiZ6W_yFw0pgh8t8LUcoeUPllcUgjlUmzIE7-UJhU=.46a806ca-006e-43be-b1db-76277242f2b9 () github ! com
[Download RAW message or body]
The root cause of this CR is that we are trying to access the java heap during the \
middle of a GC. This particular test is prone to that happening since it runs jstack \
4 times on the debuggee as it starts up (the debuggee is jshell, so it does a lot of \
initialization on startup).
SA needs to deal with potentially bad references to java objects. These might come \
from VM structs (such as the JavaThread reference to its java Thread instance), or a \
java object reference from a field of another java objects. There's always the \
possibility that these can be invalid. We work around this in most of our testing by \
getting the debuggee into a steady state so no GC can be in progress.
For the most part SA is pretty good about dealing with these bad object refernces, \
and fails gracefully with an exception, but otherwise continues to run. However, this \
test exposed some holes that resulted in (1) way to many exception stack traces and \
(2) exiting the SA tool rather than trying to continue.
The main fix is in JavaThread.printThreadInfo() where we now do a better job of \
dealing with exceptions if any of the java objects references are not valid. Even \
without access to the Thread instance, we can still produce a stack trace, but it \
will be missing things like the thread name and priority. This is a lot better than \
just giving up with the first exception.
The other changes are for the most part just improvements in the error output, and \
getting rid of the printStackTrace() that was cluttering up the output.
-------------
Commit messages:
- When dumping the stack, be more cautious with references to java objects that \
might not be valid due to a GC in progress.
Changes: https://git.openjdk.org/jdk/pull/10088/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=10088&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8293006
Stats: 77 lines in 5 files changed: 38 ins; 0 del; 39 mod
Patch: https://git.openjdk.org/jdk/pull/10088.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/10088/head:pull/10088
PR: https://git.openjdk.org/jdk/pull/10088
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic