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