-
Notifications
You must be signed in to change notification settings - Fork 6.1k
8255741: Zero: print signal name in unhandled signal handler #1001
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
8255741: Zero: print signal name in unhandled signal handler #1001
Conversation
|
👋 Welcome back shade! A progress list of the required criteria for merging this PR into |
Webrevs
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Okay I guess, but note that I am currently rewriting all that coding for https://bugs.openjdk.java.net/browse/JDK-8255711 . Which would, as a side effect, fix this bug too.
(The real bug here is that we invoke fatal() instead of calling VMError::report_and_die(), which means we won't see the real register content from the fault point in the hs-err file).
See current draft: #982
Part of the change will be to heave fatal error handler invocation out of platform dependent up to shared code (and note how I took explicit care to preserve robot and cat on zero :) .
Cheers, Thomas
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
|
@shipilev This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be: You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been 60 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details. ➡️ To integrate this PR with the above commit message to the |
|
Mailing list message from Thomas St��fe on hotspot-runtime-dev: Sure, push away, I approved both fixes. #982 would be backportable too but Thanks, Thomas On Mon, Nov 2, 2020 at 12:01 PM Aleksey Shipilev <shade at openjdk.java.net> |
|
/integrate |
|
@shipilev Since your change was applied there have been 73 commits pushed to the
Your commit was automatically rebased without conflicts. Pushed as commit aa2862a. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
…g to pointer In the cases like: ``` UNSAFE.putLong(address + off1 + 1030, lseed); UNSAFE.putLong(address + 1023, lseed); UNSAFE.putLong(address + off2 + 1001, lseed); ``` Unsafe intrinsifies direct memory access using a long as the base address, generating a `CastX2P` node converting long to pointer in C2. Then we get optoassembly code like: ``` ldr R10, [R15, openjdk#120] # int ! Field: address ldr R11, [R16, openjdk#136] # int ! Field: off1 ldr R12, [R16, openjdk#144] # int ! Field: off2 add R11, R11, R10 mov R11, R11 # long -> ptr add R12, R12, R10 mov R10, R10 # long -> ptr add R11, R11, openjdk#1030 # ptr str R17, [R11] # int add R10, R10, openjdk#1023 # ptr str R17, [R10] # int mov R10, R12 # long -> ptr add R10, R10, openjdk#1001 # ptr str R17, [R10] # int ``` In aarch64, the conversion from long to pointer could be a nop but C2 doesn't know it. On the existing code, we do nothing for `mov dst src` only when `dst` == `src` [1], then we have assembly: ``` ldr x10, [x15,openjdk#120] ldp x11, x12, [x16,openjdk#136] add x11, x11, x10 add x12, x12, x10 add x11, x11, #0x406 str x17, [x11] add x10, x10, #0x3ff str x17, [x10] mov x10, x12 <--- extra register copy add x10, x10, #0x3e9 str x17, [x10] ``` There is still one extra register copy, which we're trying to remove in this patch. This patch folds `CastX2P` into memory operands by introducing `indirectX2P` and `indOffX2P`. We also create a new opclass `iRegPorL2P` to remove extra copies from `CastX2P` in pointer addition. Tier 1~3 passed on aarch64. No obvious change in size of libjvm.so [1] https://github.com/openjdk/jdk/blob/5c612c230b0a852aed5fd36e58b82ebf2e1838af/src/hotspot/cpu/aarch64/aarch64.ad#L7906
At least one test --
runtime/Safepoint/TestAbortVMOnSafepointTimeout.java-- fails on Zero with:The test expects "SIGKILL (sent by kill)" in the test output.
Additional testing:
TestAbortVMOnSafepointTimeout.javanow passes on Linux x86_64 Zero.Progress
Testing
Issue
Reviewers
Download
$ git fetch https://git.openjdk.java.net/jdk pull/1001/head:pull/1001$ git checkout pull/1001