Details
-
Bug
-
Resolution: Fixed
-
P4
-
8u172
-
Zero
-
b01
-
generic
-
linux
Backports
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8208896 | 8u201 | Severin Gehwolf | P4 | Resolved | Fixed | b01 |
JDK-8216716 | emb-8u201 | Severin Gehwolf | P4 | Resolved | Fixed | master |
Description
The in code in JDK 8 in src/os_cpu/linux_zero/vm/os_linux_zero.cpp around line 408 reads:
extern "C" {
int SpinPause() {
}
That function is supposed to return int, but doesn't. Hence, it's UB and the compiler is free to do anything.
This causes weird crashes for bootcycle-images builds with newer GCC compilers (perhaps GCC 8). One instance is this on 32bit arm for example:
openjdk/build/jdk8.build/bootcycle-build/langtools/btclasses/_the.BUILD_TOOLS_batch (from /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/langtools/make/tools/compileproperties/CompileProperties.java) (/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/langtools/make/tools/compileproperties/CompileProperties.java /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/langtools/make/tools/genstubs/GenStubs.java newer)
+ /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/build/jdk8.build/images/j2sdk-image/bin/javac -XDignore.symbol.file=true -g -Xlint:all,-deprecation -Werror -g -Xprefer:source -implicit:none -sourcepath /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/langtools/make/tools:/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/langtools/src/share/classes -d /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/build/jdk8.build/bootcycle-build/langtools/btclasses @/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/build/jdk8.build/bootcycle-build/langtools/btclasses/_the.BUILD_TOOLS_batch.tmp
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (os_linux_zero.cpp:254), pid=30774, tid=0xa37ff460
# fatal error: caught unhandled signal 11
#
# JRE version: OpenJDK Runtime Environment (8.0_171-b10) (build 1.8.0_171-b10)
# Java VM: OpenJDK Zero VM (25.171-b10 interpreted mode linux-arm )
# Core dump written. Default location: /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/langtools/make/core or core.30774
#
# An error report file with more information is saved as:
# /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/langtools/make/hs_err_pid30774.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#
/bin/bash: line 1: 30774 Aborted (core dumped) /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/build/jdk8.build/images/j2sdk-image/bin/javac -XDignore.symbol.file=true -g -Xlint:all,-deprecation -Werror -g -Xprefer:source -implicit:none -sourcepath "/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/langtools/make/tools:/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/langtools/src/share/classes" -d /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/build/jdk8.build/bootcycle-build/langtools/btclasses @/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/build/jdk8.build/bootcycle-build/langtools/btclasses/_the.BUILD_TOOLS_batch.tmp
gmake[2]: *** No rule to make target 'all', needed by 'default'. Stop.
gmake[2]: Leaving directory '/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/langtools/make'
gmake[1]: *** [/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk//make/Main.gmk:84: langtools-only] Error 2
gmake[1]: Leaving directory '/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk'
make: *** [/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk//make/Main.gmk:178: bootcycle-images-only] Error 2
This has been fixed in JDK 9+ viaJDK-8143245, but that seems unsuitable for a backport.
extern "C" {
int SpinPause() {
}
That function is supposed to return int, but doesn't. Hence, it's UB and the compiler is free to do anything.
This causes weird crashes for bootcycle-images builds with newer GCC compilers (perhaps GCC 8). One instance is this on 32bit arm for example:
openjdk/build/jdk8.build/bootcycle-build/langtools/btclasses/_the.BUILD_TOOLS_batch (from /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/langtools/make/tools/compileproperties/CompileProperties.java) (/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/langtools/make/tools/compileproperties/CompileProperties.java /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/langtools/make/tools/genstubs/GenStubs.java newer)
+ /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/build/jdk8.build/images/j2sdk-image/bin/javac -XDignore.symbol.file=true -g -Xlint:all,-deprecation -Werror -g -Xprefer:source -implicit:none -sourcepath /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/langtools/make/tools:/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/langtools/src/share/classes -d /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/build/jdk8.build/bootcycle-build/langtools/btclasses @/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/build/jdk8.build/bootcycle-build/langtools/btclasses/_the.BUILD_TOOLS_batch.tmp
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (os_linux_zero.cpp:254), pid=30774, tid=0xa37ff460
# fatal error: caught unhandled signal 11
#
# JRE version: OpenJDK Runtime Environment (8.0_171-b10) (build 1.8.0_171-b10)
# Java VM: OpenJDK Zero VM (25.171-b10 interpreted mode linux-arm )
# Core dump written. Default location: /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/langtools/make/core or core.30774
#
# An error report file with more information is saved as:
# /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/langtools/make/hs_err_pid30774.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#
/bin/bash: line 1: 30774 Aborted (core dumped) /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/build/jdk8.build/images/j2sdk-image/bin/javac -XDignore.symbol.file=true -g -Xlint:all,-deprecation -Werror -g -Xprefer:source -implicit:none -sourcepath "/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/langtools/make/tools:/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/langtools/src/share/classes" -d /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/build/jdk8.build/bootcycle-build/langtools/btclasses @/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/build/jdk8.build/bootcycle-build/langtools/btclasses/_the.BUILD_TOOLS_batch.tmp
gmake[2]: *** No rule to make target 'all', needed by 'default'. Stop.
gmake[2]: Leaving directory '/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk/langtools/make'
gmake[1]: *** [/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk//make/Main.gmk:84: langtools-only] Error 2
gmake[1]: Leaving directory '/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk'
make: *** [/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.171-4.b10.fc29.arm/openjdk//make/Main.gmk:178: bootcycle-images-only] Error 2
This has been fixed in JDK 9+ via
Attachments
Issue Links
- backported by
-
JDK-8208896 [Zero] Undefined behaviour in src/os_cpu/linux_zero/vm/os_linux_zero.cpp
-
- Resolved
-
-
JDK-8216716 [Zero] Undefined behaviour in src/os_cpu/linux_zero/vm/os_linux_zero.cpp
-
- Resolved
-
- relates to
-
JDK-8143245 Zero build requires disabled warnings
-
- Resolved
-