Exception on using hotspot compiler

Lebeda, Borys BLebeda at luxoft.com
Fri Jun 17 12:42:55 UTC 2016


Hello everyone,

We are running a tomcat 6 on server with Java 8 on ARM device:

root at phyFLEX-i:~ uname -a
Linux phyFLEX-i.MX6 3.0.43-tpcom_run2-PD13.2.4 #1 SMP PREEMPT Fri Jun 10 11:55:37 CEST 2016 armv7l GNU/Linux

root at phyFLEX-i:/usr/tomcat/lib  /usr/java/ejre1.8.0_65/bin/java -cp catalina.jar org.apache.catalina.util.ServerInfo
Server version: Apache Tomcat/6.0.36
Server built:   Oct 16 2012 09:59:09
Server number:  6.0.36.0
OS Name:        Linux
OS Version:     3.0.43-tpcom_run2-PD13.2.4
Architecture:   arm
JVM Version:    1.8.0_65-b17
JVM Vendor:     Oracle Corporation

root at phyFLEX-i:~ /usr/java/ejre1.8.0_65/bin/java -version
java version "1.8.0_65"
Java(TM) SE Embedded Runtime Environment (build 1.8.0_65-b17, headless)
Java HotSpot(TM) Embedded Client VM (build 25.65-b01, mixed mode)

During work of the application there are bunch of error constantly appear in the dmesg log: unhandled page fault and undefined instructions. Yet the application on tomcat works correctly.

With _JAVA_OPTIONS -Xint there is no exception at all.
With _JAVA_OPTIONS -Xcomp there are even more of them
With _JAVA_OPTIONS -Xcomp -Xbatch returns the same result as -XComp

Here is the sample of undefined instructions:
[ 1929.280395] Code: e590c004 e15c0008 0a000000 eaf2da0f (e7f000f0)
[ 1929.299220] java (2566): undefined instruction: pc=2b7504c0
[ 1929.304821] Code: e590c004 e15c0008 0a000000 eaf2adef (e7f000f0)
[ 1929.328355] java (2566): undefined instruction: pc=2b7504c0
[ 1929.334510] Code: e590c004 e15c0008 0a000000 eaf2adef (e7f000f0)
[ 1929.342659] java (2566): undefined instruction: pc=2b7412c0
[ 1929.348784] Code: e590c004 e15c0008 0a000000 eaf2ea6f (e7f000f0)
[ 1929.355993] java (2566): undefined instruction: pc=2b7412c0
[ 1929.362188] Code: e590c004 e15c0008 0a000000 eaf2ea6f (e7f000f0)
[ 1929.375402] java (2566): undefined instruction: pc=2b7412c0
[ 1929.381460] Code: e590c004 e15c0008 0a000000 eaf2ea6f (e7f000f0)
[ 1929.388276] java (2566): undefined instruction: pc=2b7412c0
[ 1929.393876] Code: e590c004 e15c0008 0a000000 eaf2ea6f (e7f000f0)

Here is the sample fot he unhandled page fault:
[  161.903357] java: unhandled page fault (11) at 0x00000004, code 0x017
[  161.903378] pgd = 9b010000
[  161.906101] [00000004] *pgd=2aeae831, *pte=00000000, *ppte=00000000
[  161.912523]
[  161.914028] Pid: 1945, comm:                 java
[  161.918798] CPU: 0    Not tainted  (3.0.43-tpcom_run2-PD13.2.4 #1)
[  161.925000] PC is at 0x2b401a28
[  161.928203] LR is at 0x2b3f39b4
[  161.931363] pc : [<2b401a28>]    lr : [<2b3f39b4>]    psr: 40000010
[  161.931369] sp : 2b385074  ip : 2b2b6e6c  fp : 2b385098
[  161.942921] r10: 00017800  r9 : 32bf46d8  r8 : 2b3850a0
[  161.948208] r7 : 32bf46b3  r6 : 2b2b9058  r5 : 32bf5988  r4 : 00000000
[  161.954753] r3 : 70000001  r2 : 00000000  r1 : 00000007  r0 : 00000000
[  161.961343] Flags: nZcv  IRQs on  FIQs on  Mode USER_32  ISA ARM  Segment user
[  161.968629] Control: 10c53c7d  Table: 2b01004a  DAC: 00000015
[  161.974415] [<80356cb8>] (show_regs+0x0/0x50) from [<80362538>] (__do_user_fault+0x9c/0xa8)
[  161.982860]  r4:9b0607c0 r3:8004d4e8
[  161.989245] [<8036249c>] (__do_user_fault+0x0/0xa8) from [<80362774>] (do_page_fault+0x230/0x3a8)
[  161.998181]  r7:00000004 r6:9b0607c0 r5:9a7289c0 r4:9b083fb0
[  162.003964] [<80362544>] (do_page_fault+0x0/0x3a8) from [<8034f4b8>] (do_DataAbort+0x3c/0x248)
[  162.012656] [<8034f47c>] (do_DataAbort+0x0/0x248) from [<80355a08>] (ret_from_exception+0x0/0x40)
[  162.021591] Exception stack(0x9b083fb0 to 0x9b083ff8)
[  162.026662] 3fa0:                                     00000000 00000007 00000000 70000001
[  162.034909] 3fc0: 00000000 32bf5988 2b2b9058 32bf46b3 2b3850a0 32bf46d8 00017800 2b385098
[  162.043288] 3fe0: 2b2b6e6c 2b385074 2b3f39b4 2b401a28 40000010 ffffffff

There are less exceptions when tomcat is run without application.

There is no exception if I am running Hello World application (which mean System.out should not get the blame.

Is it possible to set up some runtime globals http://hg.openjdk.java.net/jdk8u/jdk8u-dev/hotspot/file/cf1faa9100dd/src/share/vm/runtime/globals.hpp to avoid or mitigate such crashes?

How can the instruction that leads to exception on hotspot be retrieved?



Kind regards,
    Borys Lebeda
Luxoft Ukraine


________________________________

This e-mail and any attachment(s) are intended only for the recipient(s) named above and others who have been specifically authorized to receive them. They may contain confidential information. If you are not the intended recipient, please do not read this email or its attachment(s). Furthermore, you are hereby notified that any dissemination, distribution or copying of this e-mail and any attachment(s) is strictly prohibited. If you have received this e-mail in error, please immediately notify the sender by replying to this e-mail and then delete this e-mail and any attachment(s) or copies thereof from your system. Thank you.


More information about the hotspot-dev mailing list