java - SIGSEGV 在 cv::_OutputArray::create at libopencv_java342.so 上频繁导致 JVM 崩溃
问题描述
我经常遇到 JVM 崩溃。将 opencv 与 Java Imgproc 库一起使用。它从 Imgproc 库的 findContours 函数中调用。
堆栈:[0x00007febe3875000,0x00007febe38f6000],sp=0x00007febe38f3ea0,可用空间=507k 本机帧:(J=编译的 Java 代码,j=解释,Vv=VM 代码,C=本机代码)C [libopencv_java342.so+0x4a63f4] cv: :_OutputArray::create(int, int const*, int, int, bool, int) const+0x1b4
Java 帧:(J=编译的 Java 代码,j=解释的,Vv=VM 代码)J 103505 org.opencv.imgproc.Imgproc.findContours_1(JJJII)V (0 bytes) @ 0x00007fecec55770e [0x00007fecec5576c0+0x4e]
致命错误 :
Java 运行时环境检测到一个致命错误:
SIGSEGV (0xb) 在 pc=0x00007febd82453f4,pid=3462,tid=0x00007febe38f5700
JRE 版本:Java(TM) SE 运行时环境 (8.0_141-b15) (build 1.8.0_141-b15) Java VM:Java HotSpot(TM) 64-Bit Server VM (25.141-b15 混合模式 linux-amd64 压缩 oops) 有问题框架:C [libopencv_java342.so+0x4a63f4] cv::_OutputArray::create(int, int const*, int, int, bool, int) const+0x1b4
无法写入核心转储。核心转储已被禁用。要启用核心转储,请在再次启动 Java 之前尝试“ulimit -c unlimited”
额外细节 :
尝试调整 JVM 内存但没有帮助。任何帮助,将不胜感激。
我们正在使用Imgproc JAVA 库,它在下面使用 libopencv_java342.so。操作系统为 Amazon Linux AMI VERSION="2018.03 (基于 rhel fedora)
opencv 的下面函数是从库中调用的。
private static native void findContours(long image_nativeObj, long contours_mat_nativeObj, long hierarchy_nativeObj, int mode, int method);
解决方案
推荐阅读
- apache-spark - 外部查找 Spark Streaming
- r - 如何制作包含大量数据的热图?
- python - ansible 错误:从版本导入 VERSION\nImportError: No module named version\n", "module_stdout": "", "msg": "MODULE FAILURE", "rc": 0}
- web-services - 从 Oracle 触发器调用 Web 服务
- angularjs - Ionic 2 中具有多个字段的条码扫描器
- angularjs - AngularJS - 客户端 MVC - 在目录结构中放置“模型”的位置
- jekyll - 包括来自另一个 MD 文件的前事
- ruby-on-rails - 地理编码器 - 如何使用多点附近查询?
- javascript - 如何在 react-native 中从 AsyncStorage 中删除特定项目?
- python - django 扩展隐藏前后导入