JDK-8160363: assert(discovered->is_oop_or_null()) failed: Expected an oop or NULL for discovered field at 0x0000000000000000
Yasumasa Suenaga
yasuenag at gmail.com
Tue Jun 28 03:39:35 UTC 2016
Hi Kim,
I can avoid this error with makefile fix in [1].
If [1] is merged, I want to stop to work for this issue.
Thanks,
Yasumasa
[1] http://mail.openjdk.java.net/pipermail/hotspot-dev/2016-June/023696.html
On 2016/06/28 5:24, Kim Barrett wrote:
>> On Jun 27, 2016, at 10:41 AM, Yasumasa Suenaga <yasuenag at gmail.com> wrote:
>>
>> Hi all,
>>
>> This review request relates to JDK-8160310: HotSpot cannot be built with GCC 6 .
>>
>> I encountered VM crash when I compiled OpenJDK 9 with GCC 6
>> on Fedora 24 x64.
>>
>> Address of pointer was expected (0x0), however is_oop_or_null() did not work.
>> I do not understand why current code did not work, however it works fine as below:
>>
>> http://cr.openjdk.java.net/~ysuenaga/JDK-8160363/webrev.00/
>
> The change consists of:
> src/share/vm/oops/oop.inline.hpp
> 542 return this == NULL ? true : is_oop(ignore_mark_word);
> replaced by
> 542 return (this == NULL) || is_oop(ignore_mark_word);
>
> The expression "this == NULL" can be assumed to be false, since
> invocation of the member function on a null pointer is undefined
> behavior.
>
> I have no idea why the code change affects behavior. I would expect
> in either case that this would be treated as just calling is_oop.
> Indeed, the whole concept of is_oop_or_null seems broken. I filed:
> https://bugs.openjdk.java.net/browse/JDK-8160399
>
> I suspect this problem is also arising due to the missing build system
> changes for gcc 6 from Andrew Hughes that I mentioned in the
> discussion of JDK-8160357. I suspect a missing
> -fno-delete-null-pointer-checks is the problem here.
>
More information about the hotspot-dev
mailing list