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