RFR: 8187676: Disable harmless uninitialized warnings for two files
Rahul Raghavan
rahul.v.raghavan at oracle.com
Tue Nov 28 12:04:01 UTC 2017
Hi,
Further to below email thread -
https://bugs.openjdk.java.net/browse/JDK-8187676
https://bugs.openjdk.java.net/browse/JDK-8160404
Please note 8187676 task was blocked by related 8160404.
But as mentioned in latest jbs comments of 8160404,
found the build warning with gcc7 persists with latest 8160404-patch.
More work to be done for complete, correct fix of 8160404.
But for now will request to defer 8160404 task to jdk11.
Since 8160404 is taking more time, as Erik suggested earlier,
can we please go ahead, get approval and disable the gcc warnings for
now as part of 8187676 fix -
http://cr.openjdk.java.net/~ehelin/8187676/00/
and re-enable later as part of 8160404 patch.
Understood that now only the problems highlighted by JDK-8187676/8160404
is stopping hotspot from compiling with more recent versions of GCC.
Also as Erik mentioned earlier, disabling these uninitialized warnings
seems to be harmless.
Thanks,
Rahul
On Thursday 21 September 2017 02:32 PM, Erik Helin wrote:
> Ok, lets wait for Rahul's patches. Rahul, when you post your patches, CC
> me and I can check if gcc 7.1.1 still complains :)
>
> Thanks,
> Erik
>
> On 09/19/2017 06:25 PM, Vladimir Kozlov wrote:
>> I would prefer to have general solution Rahul is working on because
>> code is general - not only x86 is affected.
>>
>> Thanks,
>> Vladimir
>>
>> On 9/19/17 7:59 AM, Rahul Raghavan wrote:
>>> Hi Erik,
>>>
>>> Please note that this 8187676 seems to be related to 8160404.
>>> https://bugs.openjdk.java.net/browse/JDK-8160404
>>> (RelocationHolder constructors have bugs)
>>>
>>> As per the latest notes comments added for 8160404-jbs, I will submit
>>> webrev/RFR soon and will request help confirm similar issues with
>>> latest gcc7 gets solved.
>>>
>>> Thanks,
>>> Rahul
>>>
>>> On Tuesday 19 September 2017 07:07 PM, Erik Helin wrote:
>>>> Hi all,
>>>>
>>>> with gcc 7.1.1 from Fedora 26 on x86-64 there are warnings about the
>>>> potential usage of maybe uninitialized memory in
>>>> src/hotspot/cpu/x86/assembler_x86.cpp and in
>>>> src/hotspot/cpu/x86/interp_masm_x86.cpp.
>>>>
>>>> The problems arises from the class RelocationHolder in
>>>> src/hotspot/share/code/relocInfo.hpp which has the private fields:
>>>> enum { _relocbuf_size = 5 };
>>>> void* _relocbuf[ _relocbuf_size ];
>>>>
>>>> and the default constructor for RelocationHolder does not initialize
>>>> the elements of _relocbuf. I _think_ this is an optimization,
>>>> RelocationHolder is used *a lot* and setting the elements of
>>>> RelocationHolder::_relocbuf to NULL (or some other value) in the
>>>> default constructor might result in a performance penalty. Have a
>>>> look in
>>>> build/linux-x86_64-normal-server-fastdebug/hotspot/variant-server/gensrc/adfiles
>>>> and you will see that RelocationHolder is used all over the place :)
>>>>
>>>> AFAICS all users of RelocationHolder::_relocbuf take care to not use
>>>> uninitialized memory, which means that this warning is wrong, so I
>>>> suggest we disable the warning -Wmaybe-uninitialized for
>>>> src/hotspot/cpu/x86/assembler_x86.cpp.
>>>>
>>>> The problem continues because the class Address in
>>>> src/hotspot/cpu/x86/assembler_x86.hpp has a private field,
>>>> `RelocationHolder _rspec;` and the default constructor for Address
>>>> does not initialize _rspec._relocbuf (most likely for performance
>>>> reasons). The class Address also has a default copy constructor,
>>>> which will copy all the elements of _rspec._relocbuf, which will
>>>> result in a read of uninitialized memory. However, this is a benign
>>>> usage of uninitialized memory, since we take no action based on the
>>>> content of the uninitialized memory (it is just copied byte for byte).
>>>>
>>>> So, in this case too, I suggest we disable the warning
>>>> -Wuninitialized for src/hotspot/cpu/x86/assembler_x86.hpp.
>>>>
>>>> What do you think?
>>>>
>>>> Patch:
>>>> http://cr.openjdk.java.net/~ehelin/8187676/00/
>>>>
>>>> --- old/make/hotspot/lib/JvmOverrideFiles.gmk 2017-09-19
>>>> 15:11:45.036108983 +0200
>>>> +++ new/make/hotspot/lib/JvmOverrideFiles.gmk 2017-09-19
>>>> 15:11:44.692107277 +0200
>>>> @@ -32,6 +32,8 @@
>>>> ifeq ($(TOOLCHAIN_TYPE), gcc)
>>>> BUILD_LIBJVM_vmStructs.cpp_CXXFLAGS :=
>>>> -fno-var-tracking-assignments -O0
>>>> BUILD_LIBJVM_jvmciCompilerToVM.cpp_CXXFLAGS :=
>>>> -fno-var-tracking-assignments
>>>> + BUILD_LIBJVM_assembler_x86.cpp_CXXFLAGS := -Wno-maybe-uninitialized
>>>> + BUILD_LIBJVM_interp_masm_x86.cpp_CXXFLAGS := -Wno-uninitialized
>>>> endif
>>>>
>>>> ifeq ($(OPENJDK_TARGET_OS), linux)
>>>>
>>>> Issue:
>>>> https://bugs.openjdk.java.net/browse/JDK-8187676
>>>>
>>>> Testing:
>>>> - Compiles with:
>>>> - gcc 7.1.1 and glibc 2.25 on Fedora 26
>>>> - gcc 4.9.2 and glibc 2.12 on OEL 6.4
>>>> - JPRT
>>>>
>>>> Thanks,
>>>> Erik
More information about the hotspot-dev
mailing list