Hi,
First of all, I want to apologize because I know this problem will be difficult to analyze for 2 reasons:
- I cannot reproduce it when I want (it appears sometimes (rarely) when the application starts).
- I cannot furnish the code of the application, and since I cannot reproduce the problem because I have no idea where it comes from, neither can I give you sample code to experience it.
Still, I will try to give you all the information I can about which functionalities I am using.
Main program features:
- JavaFx application, using a SwingNode to display the JMap.
- A tpk initializing the JMap (see attachment "DefaultNoBasemap.tpk")
- MGRS grid is displayed using JMap.getGrid().setType(GridType.MGRS)
- A few GraphicsLayer are added to the JMap too, to display some points with an icon.
Release environment (app is launched out of any IDE environment):
The same error has been seen on different computers using different environments:
- Windows XP 32bits, Seven 32bits, Seven 64bits, Windows 8 64bits
- always using JDK 1.8u45 32bits (even on 64bits OS)
- ArcGIS Runtime for Java 10.2.3 (32bits client)
And now... What does the problem look like?
When the application starts, windows reports an application crash (see attachment "Error_1_outOf_2.png" and "Error_2_outOf_2.png").
The computers are using a French version of windows; still we can see on the report a few elements:
- Module default name: runtimecore_java.dll
- Module default version: 10.2.3.594
- Exception code: c0000005
- Exception interval: 0014ed21
- And a few more pieces of information (see attachment)
Please, would someone have any idea of the problem nature I got myself in?
I feel like all alone on the WWW when I look for this problem using my favorite navigator.
I am really looking forward to hearing from anyone about this!!
Please give me a hint; any clue would be welcome, of what I could possibly do wrong, to obtain this exception code.
Best regards,
Pierre BEULE.
Solved! Go to Solution.
Hi everyone,
Just wanted to share the moment I said... "YESSSSS !" with all of you since..............We think we found the problems! Yes, "problems" because there were several reasons for the JVM crashes.
- - - - PROBLEM 1 - - - -
In fact, the first one was me asking for the MGRS grid to be displayed just after adding an "ArcGISLocalTiledLayer" BUT without waiting for the JMap to be ready. -> If you want to avoid random JVM crashed, you need to display the grid of your choice once the JMap is ready AND in the Swing thread (that's very important).
Remark 1: see JMap javadoc to know how to listen for the MapReady event.
Remark 2: you may use one of the methods "SwingUtilities.invoke.......()" to do an action in the Swing catch event thread.
- - - - PROBLEM 2 - - - -
Another problem was me using the static method "GeometryEngine.project()" from several threads. I founded this issue analyzing JVM crash reports (see file attached). We can see this method directly use the "runtimecore_java.dll" to operate. We can also see the crashed do not occurred in the same thread... so my guess is: when 2 threads used it at the same time, my JVM crashed randomly in one of them.
-> Since I decided to call the static "GeometryEngine.project()" method in the Swing catch event thread, my JVM no longer crashed.
Remark: at least, this behavior appeared on jdk1.8.45 (32bits) and ArcGIS 10.2.3 (32bits)
- - - Additional information for ESRI to analyze the problem (if necessary) - - -
This crashed have always been observed when starting the app. I think "GeometryEngine.project()" is a static method which should not depend of any JMap's state. Still, beware that my JMap was probably initializing itself asynchronously with the TPK while I was calling this static method.
Also, beware that I use two instances of JMap in my application, and they probably were initializing themselves at the same time (I create and setup them one after the other in the same thread).
- - - - Conclusion - - - -
if you observe a JVM crash repporting a problem with "runtime_core.dll" think about 2 things:
- How many threads are using the ArcGIS library ?!
- Is your JMap ready ?!
Well, hope this can help someone...someday!
I also wanted to thanks Kerstin EBERT whose professionalism has no limits. She helped me all the time listening to me without even seeing a line of code. She gave me this tip to wait JMap is ready to manage the MGRS grid.
Best regards,
Pierre BEULE
Hello Pierre,
This looks like a very complex and serious issue you're encountering. Have you opened an incident through a Technical Support channel? Getting this officially looked at would be best, and it would get you the most timely and efficient resolution. Hopefully soon.
Hello Eric,
Thank you for answering me so fast.
You are completely right; after your response, I decided to write to support@esrifrance.fr.
I will keep you informed here of what will happen.
Still, if someone does have any idea or just a clue of what could possibly happen to obtain this exception code, please speak loudly 🙂
Regards,
Pierre BEULE.
Hi everyone,
I managed to get in touch with someone of esrifrance technical staff. Sadly, we didn't manage to find the reason of the problem - difficult when it's not happening systematically + the computer it's happening on is not linked to the internet making the screen sharing impossible...
Still, I was adding an ArcGISLocalTiledLayer and then asking for the MGRS grid to be displayed. Since I no longer ask for the MGRS grid to be displayed when starting the app - using map.getGrid().setType(GridType.MGRS) - I never managed to reproduce the problem (at least for now!). I am wondering if this could not be the cause.
I may try to perform additional tests if I have time to do it (with the grid visible):
- Changing the tpk I'm using
- Force the layer initialization with Layer.initializeASync
- Try to use another format (mpk) to initialize the JMap
Does someone have any idea (or plausible explanation) ?
Regards,
Pierre BEULE
Hi everyone,
Just wanted to share the moment I said... "YESSSSS !" with all of you since..............We think we found the problems! Yes, "problems" because there were several reasons for the JVM crashes.
- - - - PROBLEM 1 - - - -
In fact, the first one was me asking for the MGRS grid to be displayed just after adding an "ArcGISLocalTiledLayer" BUT without waiting for the JMap to be ready. -> If you want to avoid random JVM crashed, you need to display the grid of your choice once the JMap is ready AND in the Swing thread (that's very important).
Remark 1: see JMap javadoc to know how to listen for the MapReady event.
Remark 2: you may use one of the methods "SwingUtilities.invoke.......()" to do an action in the Swing catch event thread.
- - - - PROBLEM 2 - - - -
Another problem was me using the static method "GeometryEngine.project()" from several threads. I founded this issue analyzing JVM crash reports (see file attached). We can see this method directly use the "runtimecore_java.dll" to operate. We can also see the crashed do not occurred in the same thread... so my guess is: when 2 threads used it at the same time, my JVM crashed randomly in one of them.
-> Since I decided to call the static "GeometryEngine.project()" method in the Swing catch event thread, my JVM no longer crashed.
Remark: at least, this behavior appeared on jdk1.8.45 (32bits) and ArcGIS 10.2.3 (32bits)
- - - Additional information for ESRI to analyze the problem (if necessary) - - -
This crashed have always been observed when starting the app. I think "GeometryEngine.project()" is a static method which should not depend of any JMap's state. Still, beware that my JMap was probably initializing itself asynchronously with the TPK while I was calling this static method.
Also, beware that I use two instances of JMap in my application, and they probably were initializing themselves at the same time (I create and setup them one after the other in the same thread).
- - - - Conclusion - - - -
if you observe a JVM crash repporting a problem with "runtime_core.dll" think about 2 things:
- How many threads are using the ArcGIS library ?!
- Is your JMap ready ?!
Well, hope this can help someone...someday!
I also wanted to thanks Kerstin EBERT whose professionalism has no limits. She helped me all the time listening to me without even seeing a line of code. She gave me this tip to wait JMap is ready to manage the MGRS grid.
Best regards,
Pierre BEULE