JDK-8254611 : x86_32: Call to IRT::at_unwind clobbers rthread after JDK-8253180
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 16
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2020-10-12
  • Updated: 2021-01-13
  • Resolved: 2020-10-13
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 16
16 b20Fixed
Related Reports
Relates :  
Description
There are massive x86_32 failures in tier1, most often taking the form of NPE with "There cannot be a NullPointerException".

$ CONF=linux-x86-server-fastdebug make clean images run-test TEST=hotspot:tier1

TEST: compiler/c2/Test6910605_2.java
TEST JDK: /home/shade/trunks/jdk/build/linux-x86-server-fastdebug/images/jdk

...
Caused by: java.lang.NullPointerException: There cannot be a NullPointerException at bci 19 of method int jdk.internal.org.objectweb.asm.SymbolTable.hash(int, java.lang.String, java.lang.String, java.lang.String)

Bisection points to JDK-8253180.

This also reproduces only intermittently, when a lot of tests are running. Re-running the tests individually make them pass.
Comments
Changeset: 90de2894 Author: Aleksey Shipilev <shade@openjdk.org> Date: 2020-10-13 05:47:03 +0000 URL: https://git.openjdk.java.net/jdk/commit/90de2894
13-10-2020

I think I know why: in InterpreterMacroAssembler::remove_activation, there is a new call_VM InterpreterRuntime::at_unwind, which broke the rthread (rcx) that x86_32 needs later. x86_64 is not affected, because it carries it in r15_thread.
12-10-2020