Compile error in codeBlob.cpp when building JDK-11 for Windows-32
Magnus Ihse Bursie
magnus.ihse.bursie at oracle.com
Fri Sep 14 08:37:20 UTC 2018
On 2018-09-14 10:03, Robert Lichtenberger wrote:
> I have tried to build a Windows 32-bit JDK-11. While I was successful in
> building a 64-bit Windows JDK, the attempt for 32-bit failed:
>
> Here's what I did:
>
> $ bash configure --with-boot-jdk=/cygdrive/c/jdk-10.0.2
> --disable-warnings-as-errors --with-target-bits=32
> ...
>
> ====================================================
> The existing configuration has been successfully updated in
> /cygdrive/c/jdk/jdk11/build/windows-x86-normal-server-release
> using configure arguments '--with-boot-jdk=/cygdrive/c/jdk-10.0.2
> --disable-warnings-as-errors --with-target-bits=32'.
>
> Configuration summary:
> * Debug level: release
> * HS debug level: product
> * JVM variants: server
> * JVM features: server: 'cds cmsgc compiler1 compiler2 epsilongc g1gc
> jfr jni-check jvmti management nmt parallelgc serialgc services vm-structs'
> * OpenJDK target: OS: windows, CPU architecture: x86, address length: 32
> * Version string: 11-internal+0-adhoc.synedra.jdk11 (11-internal)
>
> Tools summary:
> * Environment: cygwin version 2.10.0(0.325/5/3) (root at
> /cygdrive/c/cygwin64)
> * Boot JDK: openjdk version "10.0.2" 2018-07-17 OpenJDK Runtime
> Environment 18.3 (build 10.0.2+13) OpenJDK 64-Bit Server VM 18.3 (build
> 10.0.2+13, mixed mode) (at /cygdrive/c/jdk-10.0.2)
> * Toolchain: microsoft (Microsoft Visual Studio 2017)
> * C Compiler: Version 19.15.26729 (at
> /cygdrive/c/progra~2/micros~1/2017/commun~1/vc/tools/msvc/1415~1.267/bin/hostx86/x86/cl)
> * C++ Compiler: Version 19.15.26729 (at
> /cygdrive/c/progra~2/micros~1/2017/commun~1/vc/tools/msvc/1415~1.267/bin/hostx86/x86/cl)
>
> Build performance summary:
> * Cores to use: 2
> * Memory limit: 16383 MB
> ...
>
> $ time make CONF=windows-x86-normal-server-release all
> Building target 'all' in configuration 'windows-x86-normal-server-release'
> c:/jdk/jdk11/src/hotspot/share/code/codeBlob.cpp(229): error C2956:
> sized deallocation function 'operator delete(void*, size_t)' would be
> chosen as placement deallocation function.
> predefined C++ types (compiler internal)(44): note: see declaration of
> 'operator delete'
> c:/jdk/jdk11/src/hotspot/share/code/codeBlob.cpp(250): error C2956:
> sized deallocation function 'operator delete(void*, size_t)' would be
> chosen as placement deallocation function.
> predefined C++ types (compiler internal)(44): note: see declaration of
> 'operator delete'
> c:/jdk/jdk11/src/hotspot/share/code/codeBlob.cpp(289): error C2956:
> sized deallocation function 'operator delete(void*, size_t)' would be
> chosen as placement deallocation function.
> predefined C++ types (compiler internal)(44): note: see declaration of
> 'operator delete'
> c:/jdk/jdk11/src/hotspot/share/code/codeBlob.cpp(312): error C2956:
> sized deallocation function 'operator delete(void*, size_t)' would be
> chosen as placement deallocation function.
> predefined C++ types (compiler internal)(44): note: see declaration of
> 'operator delete'
> c:/jdk/jdk11/src/hotspot/share/code/codeBlob.cpp(333): error C2956:
> sized deallocation function 'operator delete(void*, size_t)' would be
> chosen as placement deallocation function.
> predefined C++ types (compiler internal)(44): note: see declaration of
> 'operator delete'
> c:/jdk/jdk11/src/hotspot/share/code/codeBlob.cpp(372): error C2956:
> sized deallocation function 'operator delete(void*, size_t)' would be
> chosen as placement deallocation function.
> predefined C++ types (compiler internal)(44): note: see declaration of
> 'operator delete'
> c:/jdk/jdk11/src/hotspot/share/code/codeBlob.cpp(437): error C2956:
> sized deallocation function 'operator delete(void*, size_t)' would be
> chosen as placement deallocation function.
> predefined C++ types (compiler internal)(44): note: see declaration of
> 'operator delete'
> c:/jdk/jdk11/src/hotspot/share/code/codeBlob.cpp(470): error C2956:
> sized deallocation function 'operator delete(void*, size_t)' would be
> chosen as placement deallocation function.
> predefined C++ types (compiler internal)(44): note: see declaration of
> 'operator delete'
> c:/jdk/jdk11/src/hotspot/share/code/codeBlob.cpp(506): error C2956:
> sized deallocation function 'operator delete(void*, size_t)' would be
> chosen as placement deallocation function.
> predefined C++ types (compiler internal)(44): note: see declaration of
> 'operator delete'
> c:/jdk/jdk11/src/hotspot/share/code/codeBlob.cpp(541): error C2956:
> sized deallocation function 'operator delete(void*, size_t)' would be
> chosen as placement deallocation function.
> predefined C++ types (compiler internal)(44): note: see declaration of
> 'operator delete'
> make[3]: *** [lib/CompileJvm.gmk:151:
> /cygdrive/c/jdk/jdk11/build/windows-x86-normal-server-release/hotspot/variant-server/libjvm/objs/codeBlob.obj]
> Error 1
> make[2]: *** [make/Main.gmk:257: hotspot-server-libs] Error 2
> make[2]: *** Waiting for unfinished jobs....
>
> ERROR: Build failed for target 'all' in configuration
> 'windows-x86-normal-server-release' (exit code 2)
This is most likely due to some issue on new/delete operators works,
which are undergoing changes in the language. That is, a code issue on
hotspot.
I don't know why you are seeing this on windows-x86 though.
https://msdn.microsoft.com/en-us/library/mt723604.aspx suggests that you
can disable this check by -Zc:sizedDealloc-. Do this by "configure
--with-extra-cxxflags=Zc:sizedDealloc-".
> On a meta-level: Is a JDK for Windows 32-bit just built no longer or is
> it completely abandoned as a platform?
Oracle is not building 32-bit Windows regularly, and I don't think
anyone else is doing that. (Perhaps AdoptOpenJDK?) In such a scenario,
the code quickly bit rots. There has been no decision as of yet to
remove the code from the code base, but unless someone steps up to
maintain the code base, it's unlikely to survive in the long term.
/Magnus
More information about the build-dev
mailing list