-
Notifications
You must be signed in to change notification settings - Fork 722
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Prevent javacore generation from interfering with stack walker #18711
Conversation
Add a flag to getOwnedObjectMonitors to prevent the stack walker from asserting and marking the thread stack corrupt. Also remove the private flag for stack corruption - it has served no purpose for many releases. Signed-off-by: Graham Chapman <[email protected]>
@keithc-ca Please verify that my removal of the private flag won't break DDR. |
This is related to RTC story 150400. |
I don't see any potential problems for DDR. Please identify the assertion(s) that will be avoided by this change. |
It avoids the "invalid JIT return address" assertion if the stack walker is called from getOwnedObjectMonitors with the reportErrors flag FALSE (at the moment, only javacore generation calls this way). |
Actually, I take that back. We should keep Add to
and don't change |
The tag bit is meaningless - stacks are never corrupt when running, and the tagging of foreign threads in the javacore writer is both unsafe an incorrect. DDR should not be processing this flag at all. |
If the flag is set - even if it was in error - DDR should not ignore it. |
No - the only possible result of the check is that the stack walk will fail in DDR (assuming any code in DDR even checks the return value), which serves no useful purpose. Hiding a possibly bad stack from the debug tools is the precise opposite of what we want. |
Agreed. One can use the |
Jenkins test sanity alinux jdk17 |
Add a flag to getOwnedObjectMonitors to prevent the stack walker from asserting and marking the thread stack corrupt.
Also remove the private flag for stack corruption - it has served no purpose for many releases.
Internal 150400, 150750.