Execution problems with Atomic Operations on OpenJDK10 for ARM5 Soft Float

David Holmes david.holmes at oracle.com
Thu Apr 5 03:39:19 UTC 2018


On 5/04/2018 1:30 PM, bren at juanantonio.info wrote:
> Hi David,
> 
> Many thanks for the comments.
> 
> In relation to the ARMV5 support, in the past Oracle released a version 
> for Mindstorms:
> http://www.oracle.com/technetwork/java/embedded/downloads/javase/javaseemeddedev3-1982511.html 
> 
> 
> but if you observe that release was Java 8.

Yes we started scaling back Java SE Embedded after 8 GA. Later 8u 
versions do not support the same set of platforms. Java SE Embedded does 
not exist in 9+

David
-----

> For Java 9, we could build JDK and JRI (Java Runtime Images)
> https://github.com/ev3dev-lang-java/openjdk-ev3/releases/tag/v0.4.5
> 
> I wish with your local path suggestion, we could build OpenJDK 10.
> Later, we will try with OpenJDK11.
> 
> I have to see how to automate the whole process on Travis CI.
> 
> Cheers
> 
> Juan Antonio
> 
> El 2018-04-05 04:23, David Holmes escribió:
>> On 5/04/2018 11:26 AM, bren at juanantonio.info wrote:
>>> Good night David,
>>>
>>> It is the first time that I report a Bug on OpenJDK and I didn´t 
>>> receive any notification so I didn´t know the status of the Issue 
>>> that I reported.
>>
>> Sorry about that. You should have received some form of notification.
>>
>>> Many thanks with the link about the Platforms supported:
>>> http://www.oracle.com/technetwork/java/javase/documentation/jdk10certconfig-4417031.html 
>>> We will try to do Compilation with the solution.
>>>
>>> --- a/src/hotspot/cpu/arm/vm_version_arm_32.cpp
>>> +++ b/src/hotspot/cpu/arm/vm_version_arm_32.cpp
>>> @@ -298,6 +298,15 @@
>>>       FLAG_SET_DEFAULT(UseUnalignedAccesses, false);
>>>     }
>>>
>>> + if (arm_arch() == 5) {
>>> + if (FLAG_IS_DEFAULT(AssumeMP)) {
>>> + FLAG_SET_DEFAULT(AssumeMP, false);
>>> + else if (AssumeMP) {
>>> + warning("AssumeMP can not be true for ARMv5 as there is only 
>>> uniprocessor support");
>>> + FLAG_SET_DEFAULT(AssumeMP, false);
>>> + }
>>> + }
>>> +
>>>     _is_initialized = true;
>>>   }
>>>
>>> Runtime workaround: java -XX:-AssumeMP
>>>
>>> In our case, I would like to continue maintaining this support for 
>>> the Device.
>>> What is the advice that you could give us?
>>
>> You would have to keep the local copy of your source code patched and
>> produce your own builds. But if you also try to update with the
>> mainline OpenJDK code then you will very soon hit problems. In fact
>> I'd be very surprised if this works today, even if it builds, as we
>> have not provided any updates to ARM32 in a long time. The only
>> supported way to run on ARM32 is using the Zero interpreter as Adrian
>> replied.
>>
>>> What is AssumeMP?
>>
>> Assume Multi-Processor.
>>
>> When running on a MP system the VM has to use and generate code that
>> provides the correct level of atomicity and memory consistency - none
>> of which is necessary on a uniprocessor system. MP systems are the
>> norm and in the rare case we issue the additional memory
>> synchronization instructions they should be no-ops on a uniprocessor,
>> so we are heading towards stripping out uniprocessor support and only
>> build in MP support so that we don't need dynamic checks through the
>> code to see if we are MP or not. Switching AssumeMP to true was the
>> first step in that process (and avoided problems where the VM may be
>> started with only one processor available but then had additional ones
>> added later.)
>>
>> In any case there has never been any support for ARMv5 multiprocessors.
>>
>> Cheers,
>> David
>>
>>> For education, this device is pretty interesting for the whole Java 
>>> community, this is the reason.
>>
>>
>>> I will inform with the results.
>>>
>>> Many thanks in advance.
>>>
>>> Cheers
>>>
>>> Juan Antonio
>>>
>>> El 2018-04-05 00:12, David Holmes escribió:
>>>> Hi,
>>>>
>>>> This was already reported as:
>>>>
>>>> https://bugs.openjdk.java.net/browse/JDK-8200580
>>>>
>>>> to which I have responded and closed the bug as this is not a
>>>> supported platform.
>>>>
>>>> As per the bug report this may be due to the change to AssumeMP to be
>>>> true, but there is no MP support for ARMv5.
>>>>
>>>> David
>>>>
>>>> On 4/04/2018 8:29 PM, bren at juanantonio.info wrote:
>>>>> Good morning,
>>>>>
>>>>> Mi name is Juan Antonio Breña Moral, I am developing a set of Java 
>>>>> libraries for Lego Mindstorms EV3, an ARM5 robotics device and 
>>>>> recently, we build OpenJDK 9 with success but with OpenJDK 10, we 
>>>>> have found some problems when we execute some Java programs.
>>>>>
>>>>> Repository to build OpenJDK 9/10 for ARM5 Soft Float:
>>>>> https://github.com/ev3dev-lang-java/openjdk-ev3
>>>>>
>>>>> To test the JVM, I am using the following repo to test the VM:
>>>>> https://github.com/ev3dev-lang-java/vmbenchmarks
>>>>>
>>>>> And this is the output with the error:
>>>>>
>>>>> robot at ev3dev:~$ java -jar benchmarks.jar -f 1
>>>>> WARNING: An illegal reflective access operation has occurred
>>>>> WARNING: Illegal reflective access by org.openjdk.jmh.util.Utils 
>>>>> (file:/home/robot/benchmarks.jar) to field java.io.Console.cs
>>>>> WARNING: Please consider reporting this to the maintainers of 
>>>>> org.openjdk.jmh.util.Utils
>>>>> WARNING: Use --illegal-access=warn to enable warnings of further 
>>>>> illegal reflective access operations
>>>>> WARNING: All illegal access operations will be denied in a future 
>>>>> release
>>>>> =============== DEBUG MESSAGE: Atomic load(jlong) unsupported on 
>>>>> this platform ================
>>>>>
>>>>> =============== DEBUG MESSAGE: Atomic store(jlong) unsupported on 
>>>>> this platform ================
>>>>>
>>>>>
>>>>> =============== DEBUG MESSAGE: Atomic load(jlong) unsupported on 
>>>>> this platform ================
>>>>>
>>>>> [thread 4430 also had an error]
>>>>> [error occurred during error reporting ((null)), id 0xe0000000]
>>>>>
>>>>> =============== DEBUG MESSAGE: Atomic store(jlong) unsupported on 
>>>>> this platform ================
>>>>>
>>>>>
>>>>> [error occurred during error reporting (printing fatal error 
>>>>> message), id 0xe0000000]
>>>>>
>>>>> =============== DEBUG MESSAGE: Atomic store(jlong) unsupported on 
>>>>> this platform ================
>>>>>
>>>>>
>>>>> [error occurred during error reporting (printing type of error), id 
>>>>> 0xe0000000]
>>>>>
>>>>> =============== DEBUG MESSAGE: Atomic store(jlong) unsupported on 
>>>>> this platform ================
>>>>>
>>>>>
>>>>> [error occurred during error reporting (printing stack bounds), id 
>>>>> 0xe0000000]
>>>>>
>>>>> =============== DEBUG MESSAGE: Atomic store(jlong) unsupported on 
>>>>> this platform ================
>>>>>
>>>>>
>>>>> [error occurred during error reporting (printing native stack), id 
>>>>> 0xe0000000]
>>>>>
>>>>> =============== DEBUG MESSAGE: Atomic store(jlong) unsupported on 
>>>>> this platform ================
>>>>>
>>>>>
>>>>> [error occurred during error reporting (printing Java stack), id 
>>>>> 0xe0000000]
>>>>>
>>>>> =============== DEBUG MESSAGE: Atomic store(jlong) unsupported on 
>>>>> this platform ================
>>>>>
>>>>>
>>>>> [error occurred during error reporting (printing target Java thread 
>>>>> stack), id 0xe0000000]
>>>>>
>>>>> =============== DEBUG MESSAGE: Atomic store(jlong) unsupported on 
>>>>> this platform ================
>>>>>
>>>>>
>>>>> [error occurred during error reporting (printing siginfo), id 
>>>>> 0xe0000000]
>>>>>
>>>>> =============== DEBUG MESSAGE: Atomic store(jlong) unsupported on 
>>>>> this platform ================
>>>>>
>>>>>
>>>>> [error occurred during error reporting (CDS archive access 
>>>>> warning), id 0xe0000000]
>>>>>
>>>>> =============== DEBUG MESSAGE: Atomic store(jlong) unsupported on 
>>>>> this platform ================
>>>>>
>>>>>
>>>>> [error occurred during error reporting (printing register info), id 
>>>>> 0xe0000000]
>>>>>
>>>>> =============== DEBUG MESSAGE: Atomic store(jlong) unsupported on 
>>>>> this platform ================
>>>>>
>>>>>
>>>>> [Too many errors, abort]
>>>>> Aborted
>>>>>
>>>>> I think that in OpenJDK10 changed something in compare to OpenJDK9 
>>>>> in relation to ARM5 support.
>>>>>
>>>>> Any idea?
>>>>>
>>>>> Many thanks in advance.
>>>>>
>>>>> Cheers
>>>>>
>>>>> Juan Antonio
>>>>>


More information about the build-dev mailing list