JDK-8178723 : Workaround for failure of CRC32C intrinsic on x86 machines without CLMUL support (JDK-8178720)
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 9
  • Priority: P1
  • Status: Closed
  • Resolution: Fixed
  • CPU: x86
  • Submitted: 2017-04-13
  • Updated: 2019-09-13
  • Resolved: 2017-04-19
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 10 JDK 9
10Fixed 9 b167Fixed
Related Reports
Relates :  
Description
This is a workaround for JDK-8178720. The workaround proposes the following:
(1) Disable the CRC32C intrinsic on x86 machines without CLMUL support
(2) Pushes the modified TestCRC32.java and TestCRC32C.java tests provided by Lutz Schmidt [~lucy]
Comments
Fix verified by regression test.
07-08-2017

Thank you, Vladimir and Igor, for approving this fix.
18-04-2017

Approved for JDK 9. Need SQE approval too.
18-04-2017

Fix Request: On machines without CLMUL support, the CRC32C intrinsic can cause data corruption for all programs that use the CRC32C intrinsic. This is a workaround that disables the intrinsic on affected machines (until a proper fix is found in the context of JDK-8178720). With the workaround in place, the affected method is not intrinsified (e.g., it's treated as an ordinary Java method and executed as defined in the class library source code). The risk of the workaround is therefore low. The patch for this workaround modifies two existing tests to better cover the affected functionality. The workaround was reviewed by [~kvn]. The changes to the tests were originally part of JDK-8176580 and were reviewed by [~simonis], [~mdoerr], and [~aph]. The test changes are contributed by [~lucy]. Here is the reviewed (and ready-to-push) webrev: http://cr.openjdk.java.net/~zmajo/8178723/webrev.01/
18-04-2017

ILW=crash, all usages of CRC32C intrinsic, run with -XX:-UseCRC32CIntrinsics=HHM=P1
13-04-2017