RE: Build failure "/mnt/data/home/software/openjdk/src/hotspot/share/gc/parallel/objectStartArray.cpp:106:56: error: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘class HeapWord’ with ‘private’ member ‘HeapWord::i’ [-Werror=class-memacc
Andrew Luo
andrewluotechnologies at outlook.com
Mon Dec 31 20:08:48 UTC 2018
Hi Karl,
Can you run gcc --version and tell us the version of GCC that you are using?
I'm guessing this was added in a newer version of GCC (class-memaccess was added in GCC 8), and can probably be worked around using -Wno-error=class-memaccess. That's not saying I don't think we should fix this, just suggesting a workaround for now if you want to compile on GCC 8 before this is fixed. Although I believe that per the C++ standard you are allowed to memcpy/memset trivial classes (clang only warns on non-trivial classes: https://reviews.llvm.org/D45310) so GCC's warning seems to be a bit too broad.
Are you interested in contributing a fix to this as well - if not I can work on this later this week as well.
(By the way, your link https://gitlab.com/krichter/openjdk/-/jobs/140219987 requires signing in).
Thanks,
-Andrew
-----Original Message-----
From: jdk-dev <jdk-dev-bounces at openjdk.java.net> On Behalf Of Karl-Philipp Richter
Sent: Monday, December 31, 2018 11:51 AM
To: jdk-dev at openjdk.java.net
Subject: Build failure "/mnt/data/home/software/openjdk/src/hotspot/share/gc/parallel/objectStartArray.cpp:106:56: error: ‘void* memset(void*, int, size_t)’ writing to an object of type ‘class HeapWord’ with ‘private’ member ‘HeapWord::i’ [-Werror=class-memacce...
Hi,
Building jdk/jdk on Ubuntu 18.10 fails due to
```
/builds/krichter/openjdk/src/hotspot/share/gc/parallel/objectStartArray.cpp:
In member function 'void ObjectStartArray::set_covered_region(MemRegion)':
/builds/krichter/openjdk/src/hotspot/share/gc/parallel/objectStartArray.cpp:106:56:
error: 'void* memset(void*, int, size_t)' writing to an object of type 'class HeapWord' with 'private' member 'HeapWord::i'
[-Werror=class-memaccess]
memset(_blocks_region.end(), clean_block, expand_by);
^ In file included from /builds/krichter/openjdk/src/hotspot/share/utilities/align.hpp:28,
from
/builds/krichter/openjdk/src/hotspot/share/runtime/globals.hpp:29,
from
/builds/krichter/openjdk/src/hotspot/share/memory/allocation.hpp:28,
from
/builds/krichter/openjdk/src/hotspot/share/classfile/classLoaderData.hpp:28,
from
/builds/krichter/openjdk/src/hotspot/share/precompiled/precompiled.hpp:34:
/builds/krichter/openjdk/src/hotspot/share/utilities/globalDefinitions.hpp:175:7:
note: 'class HeapWord' declared here
class HeapWord {
^~~~~~~~
/builds/krichter/openjdk/src/hotspot/share/gc/parallel/objectStartArray.cpp:
In member function 'void ObjectStartArray::reset()':
/builds/krichter/openjdk/src/hotspot/share/gc/parallel/objectStartArray.cpp:124:73:
error: 'void* memset(void*, int, size_t)' writing to an object of type 'class HeapWord' with 'private' member 'HeapWord::i'
[-Werror=class-memaccess]
memset(_blocks_region.start(), clean_block, _blocks_region.byte_size());
^ In file included from /builds/krichter/openjdk/src/hotspot/share/utilities/align.hpp:28,
from
/builds/krichter/openjdk/src/hotspot/share/runtime/globals.hpp:29,
from
/builds/krichter/openjdk/src/hotspot/share/memory/allocation.hpp:28,
from
/builds/krichter/openjdk/src/hotspot/share/classfile/classLoaderData.hpp:28,
from
/builds/krichter/openjdk/src/hotspot/share/precompiled/precompiled.hpp:34:
/builds/krichter/openjdk/src/hotspot/share/utilities/globalDefinitions.hpp:175:7:
note: 'class HeapWord' declared here
class HeapWord {
^~~~~~~~
cc1plus: all warnings being treated as errors
make[3]: *** [lib/CompileJvm.gmk:174:
/builds/krichter/openjdk/build/linux-x86_64-server-release/hotspot/variant-server/libjvm/objs/objectStartArray.o]
Error 1
make[2]: *** [make/Main.gmk:257: hotspot-server-libs] Error 2
ERROR: Build failed for target 'default (exploded-image)' in configuration 'linux-x86_64-server-release' (exit code 2) ```
A detailed build log can be found at
https://gitlab.com/krichter/openjdk/-/jobs/140219987. The setup shows the failure for Ubuntu 19.04-daily as well. I can produce the failure on Ubuntu 18.10 locally as well.
experienced with jdk-13+1-59-g2472bccc3c7
-Kalle
More information about the jdk-dev
mailing list