RFR: 8198564: Multiple crashes on SPARC
Volker Simonis
volker.simonis at gmail.com
Fri Feb 23 10:29:11 UTC 2018
I also think that the change looks good.
But while we're on it, I'd suggest to also check in the test that we
only store '1' or '0' to boolean arrays. I.e. something like:
o->bool_at_put(3, 255);
ASSERT_EQ((jboolean)1, o->bool_at(3));
Thanks,
Volker
On Fri, Feb 23, 2018 at 10:42 AM, Erik Österlund
<erik.osterlund at oracle.com> wrote:
> Hi Roman,
>
> Looks good.
>
> Thanks,
> /Erik
>
> On 2018-02-23 08:35, Roman Kennke wrote:
>>
>> Hmm, looks like missing include to typeArrayOop.inline.hpp to me.
>> Cannot verify, because it builds for me. Can you try the following? It
>> also fixes the T_BOOLEAN -> T_SHORT copy+paste mistake from the same
>> original patch.
>>
>> Differential:
>> http://cr.openjdk.java.net/~rkennke/8198564/webrev.02.diff/
>> Full:
>> http://cr.openjdk.java.net/~rkennke/8198564/webrev.02/
>>
>> Roman
>>
>>
>>
>> On Fri, Feb 23, 2018 at 8:06 AM, David Holmes <david.holmes at oracle.com>
>> wrote:
>>>
>>> Testing not at all happy with the gtest:
>>>
>>> test/hotspot/gtest/oops/test_typeArrayOop.cpp:43: undefined reference to
>>> `typeArrayOopDesc::bool_at(int) const'
>>>
>>> This is linux-x64 but was on on linux-x64-debug. All other platforms
>>> failed
>>> except Windows.
>>>
>>> David
>>> -----
>>>
>>> jib >
>>>
>>> /scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/build/linux-x64/hotspot/variant-server/libjvm/gtest/objs/test_typeArrayOop.o:
>>> In function `typeArrayOopDesc_bool_at_put_test_vm_Test::TestBody()':
>>> jib >
>>>
>>> /scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/open/test/hotspot/gtest/oops/test_typeArrayOop.cpp:43:
>>> undefined reference to `typeArrayOopDesc::bool_at(int) const'
>>> jib >
>>>
>>> /scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/open/test/hotspot/gtest/oops/test_typeArrayOop.cpp:44:
>>> undefined reference to `typeArrayOopDesc::bool_at(int) const'
>>> jib >
>>>
>>> /scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/open/test/hotspot/gtest/oops/test_typeArrayOop.cpp:45:
>>> undefined reference to `typeArrayOopDesc::bool_at(int) const'
>>> jib >
>>>
>>> /scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/open/test/hotspot/gtest/oops/test_typeArrayOop.cpp:46:
>>> undefined reference to `typeArrayOopDesc::bool_at(int) const'
>>> jib >
>>>
>>> /scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/open/test/hotspot/gtest/oops/test_typeArrayOop.cpp:47:
>>> undefined reference to `typeArrayOopDesc::bool_at(int) const'
>>> jib >
>>>
>>> /scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/build/linux-x64/hotspot/variant-server/libjvm/gtest/objs/test_typeArrayOop.o:/scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/open/test/hotspot/gtest/oops/test_typeArrayOop.cpp:48:
>>> more undefined references to `typeArrayOopDesc::bool_at(int) const'
>>> follow
>>> jib >
>>>
>>> /scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/build/linux-x64/hotspot/variant-server/libjvm/gtest/objs/test_typeArrayOop.o:
>>> In function `typeArrayOopDesc_bool_at_put_test_vm_Test::TestBody()':
>>> jib >
>>>
>>> /scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/open/test/hotspot/gtest/oops/test_typeArrayOop.cpp:52:
>>> undefined reference to `typeArrayOopDesc::bool_at_put(int, unsigned
>>> char)'
>>> jib >
>>>
>>> /scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/open/test/hotspot/gtest/oops/test_typeArrayOop.cpp:53:
>>> undefined reference to `typeArrayOopDesc::bool_at_put(int, unsigned
>>> char)'
>>> jib >
>>>
>>> /scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/open/test/hotspot/gtest/oops/test_typeArrayOop.cpp:54:
>>> undefined reference to `typeArrayOopDesc::bool_at_put(int, unsigned
>>> char)'
>>> jib >
>>>
>>> /scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/open/test/hotspot/gtest/oops/test_typeArrayOop.cpp:55:
>>> undefined reference to `typeArrayOopDesc::bool_at_put(int, unsigned
>>> char)'
>>> jib >
>>>
>>> /scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/open/test/hotspot/gtest/oops/test_typeArrayOop.cpp:57:
>>> undefined reference to `typeArrayOopDesc::bool_at(int) const'
>>> jib >
>>>
>>> /scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/open/test/hotspot/gtest/oops/test_typeArrayOop.cpp:58:
>>> undefined reference to `typeArrayOopDesc::bool_at(int) const'
>>> jib >
>>>
>>> /scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/open/test/hotspot/gtest/oops/test_typeArrayOop.cpp:59:
>>> undefined reference to `typeArrayOopDesc::bool_at(int) const'
>>> jib >
>>>
>>> /scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/open/test/hotspot/gtest/oops/test_typeArrayOop.cpp:60:
>>> undefined reference to `typeArrayOopDesc::bool_at(int) const'
>>> jib >
>>>
>>> /scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/open/test/hotspot/gtest/oops/test_typeArrayOop.cpp:61:
>>> undefined reference to `typeArrayOopDesc::bool_at(int) const'
>>> jib >
>>>
>>> /scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/build/linux-x64/hotspot/variant-server/libjvm/gtest/objs/test_typeArrayOop.o:/scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/open/test/hotspot/gtest/oops/test_typeArrayOop.cpp:62:
>>> more undefined references to `typeArrayOopDesc::bool_at(int) const'
>>> follow
>>> jib > collect2: error: ld returned 1 exit status
>>> jib > make[3]: ***
>>>
>>> [/scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/build/linux-x64/hotspot/variant-server/libjvm/gtest/libjvm.so]
>>> Error 1
>>> jib > lib/CompileGtest.gmk:65: recipe for target
>>>
>>> '/scratch/opt/mach5/mesos/work_dir/slaves/9190d864-6621-4810-ba08-d8d8c75ba674-S640/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/fae00af9-2147-45bf-864e-34d221d02d20/runs/e790f2be-503e-4692-ac72-e0671344e9e0/workspace/build/linux-x64/hotspot/variant-server/libjvm/gtest/libjvm.so'
>>> failed
>>>
>>>
>>> On 23/02/2018 2:31 PM, David Holmes wrote:
>>>>
>>>> I'm putting it through same testing as CI - which of course should have
>>>> been done before this was pushed.
>>>>
>>>> Will advise on result.
>>>>
>>>> David
>>>>
>>>> On 23/02/2018 8:03 AM, Stefan Karlsson wrote:
>>>>>
>>>>> On 2018-02-22 22:26, Roman Kennke wrote:
>>>>>>
>>>>>> My change to typeArrayOop.hpp
>>>>>> (https://bugs.openjdk.java.net/browse/JDK-8197999) seems to have
>>>>>> caused some regressions, esp. on SPARC. The issue is that I'm
>>>>>> accidentally calling Access::store_at() with a type of jint and thus
>>>>>> generates a memory access wider than a jboolean. It seems to cause
>>>>>> SIGBUS on SPARC, but may also simply override adjacent array elements.
>>>>>>
>>>>>> With some help by Stefan Karlsson, I made a little gtest (ok, he wrote
>>>>>> most of it, I only modified it to actually fail without the bugfix).
>>>>>>
>>>>>> http://cr.openjdk.java.net/~rkennke/8198564/webrev.01
>>>>>
>>>>>
>>>>> Looks good.
>>>>>
>>>>> The test is a bit hacky and probably uses undefined behavior, so I'm
>>>>> not
>>>>> sure it will hold over time. But right now it manages to reproduce the
>>>>> bug,
>>>>> which is good.
>>>>>
>>>>>> Would be good if somebody with access to SPARC could test it there,
>>>>>> and if ok, push it?
>>>>>
>>>>>
>>>>> I won't have time to run this through our test machinery today. Anyone
>>>>> else?
>>>>>
>>>>> Thanks,
>>>>> StefanK
>>>>>>
>>>>>>
>>>>>> Thank you,
>>>>>> Roman
>>>>>
>>>>>
>>>>>
>
More information about the hotspot-runtime-dev
mailing list