I'm running into a JVM crash with my Java application that uses OpenCV:
0SECTION TITLE subcomponent dump routine
NULL ===============================
1TICHARSET 850
1TISIGINFO Dump Event "gpf" (00002000) received
1TIDATETIME Date: 2020/12/01 at 09:10:43:127
1TINANOTIME System nanotime: 160967311300
1TIFILENAME Javacore filename: C:\Program Files\myapp \javacore.20201201.091041.3736.0002.txt
1TIREQFLAGS Request Flags: 0x81 (exclusive+preempt)
1TIPREPSTATE Prep State: 0x100 (trace_disabled)
1TIPREPINFO Exclusive VM access not taken: data may not be consistent across javacore sections
Here's the stack-trace from the dump text file:
1XMCURTHDINFO Current thread
3XMTHREADINFO "Thread-45" J9VMThread:0x00000000010AE500, omrthread_t:0x00000143160A7B20, java/lang/Thread:0x00000007FBEB4C98, state:R, prio=10
3XMJAVALTHREAD (java/lang/Thread getId:0x56, isDaemon:false)
3XMTHREADINFO1 (native thread ID:0x4FCC, native priority:0xA, native policy:UNKNOWN, vmstate:R, vm thread flags:0x00000020)
3XMCPUTIME CPU usage total: 0.203125000 secs, user: 0.046875000 secs, system: 0.156250000 secs, current category="Application"
3XMHEAPALLOC Heap bytes allocated since last GC cycle=0 (0x0)
3XMTHREADINFO3 Java callstack:
4XESTACKTRACE at org/opencv/imgproc/Imgproc.cvtColor_1(Native Method)
4XESTACKTRACE at org/opencv/imgproc/Imgproc.cvtColor(Imgproc.java:926)
4XESTACKTRACE at mk.b(Bytecode PC:120)
4XESTACKTRACE at mk.a(Bytecode PC:3)
4XESTACKTRACE at mk$a.run(Bytecode PC:12)
4XESTACKTRACE at java/lang/Thread.run(Bytecode PC:13)
3XMTHREADINFO3 Native callstack:
4XENATIVESTACK Java_org_opencv_calib3d_StereoSGBM_setUniquenessRatio_10+0x12dc (0x00007FFFC11D0ABC [opencv_java300+0x8d0abc])
4XENATIVESTACK Java_org_opencv_calib3d_StereoSGBM_setUniquenessRatio_10+0x1238ec (0x00007FFFC12F30CC [opencv_java300+0x9f30cc])
4XENATIVESTACK Java_org_opencv_calib3d_StereoSGBM_setUniquenessRatio_10+0x25a4db (0x00007FFFC1429CBB [opencv_java300+0xb29cbb])
4XENATIVESTACK Java_org_opencv_imgproc_Imgproc_cvtColor_11+0x4d (0x00007FFFC11A851D [opencv_java300+0x8a851d])
4XENATIVESTACK J9_GetInterface+0x99ef3 (0x00007FFFC2C03BD3 [j9vm29+0x123bd3])
4XENATIVESTACK J9_GetInterface+0x99948 (0x00007FFFC2C03628 [j9vm29+0x123628])
4XENATIVESTACK (0x00007FFFC2AF52D0 [j9vm29+0x152d0])
4XENATIVESTACK (0x00000000000000FD)
4XENATIVESTACK (0x00000000010AE500)
4XENATIVESTACK (0x00000000000003F0)
4XENATIVESTACK (0x00000009BBDFF420)
4XENATIVESTACK (0x00000009BBDFF1A0)
(Note: My application's method names are obfuscated due to the use of an obfuscator).
To me this clearly indicates a bug in the OpenJDK or OpenCV version. Is that a correct assumption?
I use the following versions:
I have tried to use the OpenJ9 version 11.0.9 but that did not resolve it. I don't think it has to do with Mat objects that are not being released, otherwise I would expect a JVM crash of the OOM type.
A logical thing to do would be to upgrade to a newer version of OpenCV, but we are kind of stuck with this version for now.
Could it have something to do with concurrency?
User contributions licensed under CC BY-SA 3.0