RFR: 8281829: runtime/CommandLine/OptionsValidation/TestOptionsWithRanges.java fails after JDK-8281467

Jie Fu jiefu at openjdk.java.net
Tue Feb 15 14:59:30 UTC 2022


Hi all,

runtime/CommandLine/OptionsValidation/TestOptionsWithRanges.java fails due to SIGFPE after JDK-8281467 with release VMs.
It can be reproduced by running `java -XX:+UnlockExperimentalVMOptions -XX:CodeEntryAlignment=4294967296` with release VMs.

This is because `CodeEntryAlignment` would be converted from `intx` to `int` at line 825.

 824   address generate_fp_mask(const char *stub_name, int64_t mask) {
 825     __ align(CodeEntryAlignment);
 826     StubCodeMark mark(this, "StubRoutines", stub_name);
 827     address start = __ pc();
 828
 829     __ emit_data64( mask, relocInfo::none );
 830     __ emit_data64( mask, relocInfo::none );
 831
 832     return start;
 833   }


Then at line 1187, `modulus` would become 0 after the conversion of `CodeEntryAlignment`, which leads to SIGFPE at line 1191.

1184 void MacroAssembler::align(int modulus) {
1185   // 8273459: Ensure alignment is possible with current segment alignment
1186   assert(modulus <= CodeEntryAlignment, "Alignment must be <= CodeEntryAlignment");
1187   align(modulus, offset());
1188 }
1189
1190 void MacroAssembler::align(int modulus, int target) {
1191   if (target % modulus != 0) {
1192     nop(modulus - (target % modulus));
1193   }
1194 }


The fix just adding a rule (`CodeEntryAlignment <= CodeCacheSegmentSize`) in `CodeEntryAlignmentConstraintFunc`.

This is fine because we already has that rule in `CodeCacheSegmentSizeConstraintFunc`.
And this is necessary since `CodeCacheSegmentSizeConstraintFunc` won't be called in release VMs.

Thanks.
Best regards,
Jie

-------------

Commit messages:
 - 8281829: runtime/CommandLine/OptionsValidation/TestOptionsWithRanges.java fails after JDK-8281467

Changes: https://git.openjdk.java.net/jdk/pull/7480/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=7480&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8281829
  Stats: 10 lines in 1 file changed: 9 ins; 0 del; 1 mod
  Patch: https://git.openjdk.java.net/jdk/pull/7480.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/7480/head:pull/7480

PR: https://git.openjdk.java.net/jdk/pull/7480


More information about the hotspot-compiler-dev mailing list