RFR: 8255343: java/util/stream/SpliteratorTest.java fails on 32-bit platforms with "Misaligned access at address: 12"
Maurizio Cimadamore
mcimadamore at openjdk.java.net
Fri Oct 23 15:42:35 UTC 2020
On Fri, 23 Oct 2020 15:37:03 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:
>>> I can fix the whole thing thus, without problem listing the test then. Agree?
>>
>> Yes - another thing worth considering though is: if 32bit alignment is the best we can ask a 32bit VM (e.g. a 32bit VM doesn't really 64-bit align a double[] it seems, from what you are getting), then I think an even better fix would be to just make the constants JAVA_LONG and JAVA_DOUBLE aligned to 32 or 64 depending on the platform (and leave the test unchanged).
>
>> Yes - another thing worth considering though is: if 32bit alignment is the best we can ask a 32bit VM (e.g. a 32bit VM doesn't really 64-bit align a double[] it seems, from what you are getting), then I think an even better fix would be to just make the constants JAVA_LONG and JAVA_DOUBLE aligned to 32 or 64 depending on the platform (and leave the test unchanged).
>
> Please see the new revision. It passes `java/util/stream` tests on both `x86_32` and `x86_64`.
>
> What 32-bit VM is able to do is implementation-dependent, no? I do wonder if long[]/double[] have to be aligned by 8 anyway, since we can do a VarHandle atomic access over its elements, and it is supposed to go correctly. Let's figure that out separately? Filed [JDK-8255350](https://bugs.openjdk.java.net/browse/JDK-8255350).
Looks good to me
-------------
PR: https://git.openjdk.java.net/jdk/pull/836
More information about the core-libs-dev
mailing list