Execution problems with Atomic Operations on OpenJDK10 for ARM5 Soft Float

bren at juanantonio.info bren at juanantonio.info
Thu Apr 5 03:30:57 UTC 2018


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.

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