docker环境javacv运行时环境检测到致命错误:SIGSEGV(0xb)

这篇具有很好参考价值的文章主要介绍了docker环境javacv运行时环境检测到致命错误:SIGSEGV(0xb)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

docker环境javacv运行时环境检测到致命错误:SIGSEGV(0xb),java,开发语言

分析JVM致命错误日志hs_err_pid.log

当jvm出现致命错误时,会生成一个错误文件 hs_err_pid<pid>.log,其中包括了导致jvm crash的重要信息,可以通过分析该文件定位到导致crash的根源,从而改善以保证系统稳定。当出现crash时,该文件默认会生成到工作目录下,然而可以通过jvm参数指定生成路径

日志头文件

日志头文件包含概要信息,简述了导致crash的原因。而导致crash的原因很多,常见的原因有jvm自身的bug,应用程序错误,jvm参数配置不当,服务器资源不足,jni调用错误等。

现在参考下如下描述:

 #
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007fb8b18fdc6c, pid=191899, tid=140417770411776
#
# JRE version: Java(TM) SE Runtime Environment (7.0_55-b13) (build 1.7.0_55-b13)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.55-b03 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# J  org.apache.http.impl.cookie.BestMatchSpec.formatCookies(Ljava/util/List;)Ljava/util/List;
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
#

由于项目在本地windows和linux直接运行都是正常的并没有报错,而使用docker运行打包镜像发布运行就会报错。

解决方法:

jvm启动参数

再下面是jvm启动参数信息:

VM Arguments:
jvm_args: -Djava.util.logging.config.file=/home/service/tomcat7007-account-web/conf/logging.properties -Xmx4096m -Xms4096m -Xmn2560m -XX:SurvivorRatio=6 -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:/home/work/webdata/logs/tomcat7007-account-web/develop/gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/work/webdata/logs/tomcat7007-account-web/develop/ -Dtomcatlogdir=/home/work/webdata/logs/tomcat7007-account-web/develop -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=7407 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.endorsed.dirs=/home/service/tomcat7007-account-web/endorsed -Dcatalina.base=/home/service/tomcat7007-account-web -Dcatalina.home=/home/service/tomcat7007-account-web -Djava.io.tmpdir=/home/service/tomcat7007-account-web/temp 
java_command: org.apache.catalina.startup.Bootstrap start
Launcher Type: SUN_STANDARD
 
Environment Variables:
JAVA_HOME=/home/service/jdk1.7.0_55
PATH=/opt/zabbix/bin:/opt/zabbix/sbin:/home/service/jdk1.7.0_55/bin:/home/work/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/work/bin
SHELL=/bin/bash

修改jvm启动参数-XX:+UseParallelGC -Xmx512m,看是不是内存服务器分配内存过小导致运行直接崩溃。

如果改大参数之后还是报错,可能需要看javacv版本和OpenCV版本是否兼容,这里自己由于javacv内部封装全部OpenCV相关包太多,所以只使用剔除了一些不需要的依赖包从打包1个g直接变成100mb:

<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>javacv</artifactId>
    <version>1.5.2</version>
</dependency>
<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>javacpp</artifactId>
    <version>1.5.2</version>
</dependency>

<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>opencv</artifactId>
    <version>4.1.2-1.5.2</version>
    <classifier>windows-x86_64</classifier>
</dependency>
<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>openblas</artifactId>
    <version>0.3.7-1.5.2</version>
    <classifier>windows-x86_64</classifier>
</dependency>
<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>ffmpeg</artifactId>
    <version>4.2.1-1.5.2</version>
    <classifier>windows-x86_64</classifier>
</dependency>


<dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>opencv</artifactId>
            <version>4.1.2-1.5.2</version>
            <classifier>linux-x86_64</classifier>
        </dependency>
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>openblas</artifactId>
            <version>0.3.7-1.5.2</version>
            <classifier>linux-x86_64</classifier>
        </dependency>
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>ffmpeg</artifactId>
            <version>4.2.1-1.5.2</version>
            <classifier>linux-x86_64</classifier>
        </dependency>

后边去docker打包镜像发布发现还是会报同样的错误,只能去看打包镜像jdk版本了

发现由于docker打包镜像使用的是基础镜像

FROM java:8-jre-alpine

因为这个基础镜像是基于Alpine的,但是javacv需要使用使用 glibc 的 OpenJDK 版本。

将版本替换成下面的版本就完美解决!!!!

可以正常使用javacv去处理操作

openjdk:8u222-slim镜像的jdk版本(可以)

# java -version
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-b10)
OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)

如果绝对需要使用该版本的 OpenJDK,则需要从不使用 glibc 的源代码进行重建(处理起来比较麻烦可能还会有别的一些问题产生):
https://github.com/bytedeco/javacpp-预设/#build-instructions文章来源地址https://www.toymoban.com/news/detail-770141.html

到了这里,关于docker环境javacv运行时环境检测到致命错误:SIGSEGV(0xb)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【玩转Jetson TX2 NX】(七)TX2 NX YoLoV4环境搭建+板载摄像头实时目标检测(详细教程+错误解决)

    直接下载,然后解压,最后移动到Jetson TX2 NX,如图所示,darknet下载链接: https://github.com/AlexeyAB/darknet 将解压的文件复制到Jetson TX2 NX,如图所示: 下载yolov4.weights权重文件,如图所示: 将权重文件 yolov4.weights 拷贝至 darknet 目录下,如图所示: 依次输入命令,修改Makefile 如图

    2024年02月10日
    浏览(41)
  • ML类CFAR检测器在不同环境中检测性能的分析

    摘要:该文是楼主翻阅书籍以及一些论文总结出来的关于ML(均值)类CFAR检测器在不同环境中的性能对比,以及优缺点的总结,可以帮助大家面对不同情形如何选择CFAR问题。由于楼主见识短浅,文中难免出现不足之处,望各位指出。          首先在均匀杂波背景中,采用平

    2024年02月13日
    浏览(37)
  • 避免使用第三方工具完成电脑环境检测

    在之前配置各种深度学习环境的时候经常需要先检测一下电脑的软硬件环境,其实整个过程比较重复和固定,所以我们是否有可能一键检测Python版本、PIP版本、Conda版本、CUDA版本、电脑系统、CPU核数、CPU频率、内存、硬盘等内容这是很多Deepper苦恼的。这里会从软件开始介绍,

    2024年02月10日
    浏览(62)
  • ModStart安装环境检测提示缺少 xxx 扩展

    编辑  php.ini  文件,找到  extension=xxx  相关配置,删除前面的分号  ;  。 例如: 修改为 注意:Windows 系统的扩展后缀名为  .dll  ,Linux 系统的扩展后缀名为  .so 。 如果使用的是宝塔环境,只需要在  PHP  → 设置 → 扩展管理 启用该扩展。 以上操作完成后需要重启 PHP 服

    2024年02月11日
    浏览(30)
  • stm32c8t6+dht11+MQ系列环境检测模块+oled显示屏(基于物联网的家庭环境检测系统设计)

    元件清单: stm32f103c8t6、mq2 检测烟雾浓度(模拟量输出)、mq7 检测一氧化碳浓度、mq135 检测空气质量、OLED屏幕(四引脚仅支持iic协议通信)、dht11检测温湿度(数字量输出)、风扇模块、无源蜂鸣器、两引脚按键、WH-NB73-B5、ttl-usb 接线图:  0:实现了dht11的温湿度以及mq2烟雾

    2024年02月02日
    浏览(45)
  • 自动驾驶环境感知之激光雷达物体检测算法

    前言 :视觉感知包括二维和三维视觉感知,其最终目的是为了获取三维世界坐标系下感兴趣的目标和场景的信息。单目相机下,需要几何约束或者海量数据来学习,以此来推测三维信息。双目相机下,可基于立体视觉原理来计算目标的深度信息,但在光照条件比较差或者纹理

    2024年01月23日
    浏览(51)
  • 验证码安全志:AIGC+集成环境信息信息检测

    目录 知己知彼,黑灰产破解验证码的过程 AIGC加持,防范黑灰产的破解 魔高一丈,黑灰产+AIGC突破常规验证码 双重防护,保障验证码安全 黑灰产经常采用批量撞库方式登录用户账号,然后进行违法违规操作。 黑灰产将各种方式窃取账号密码导入批量登录软件,登录软件自动

    2024年02月14日
    浏览(38)
  • 更安全的验证码=AIGC+集成环境信息检测!

    黑灰产经常采用批量撞库方式登录用户账号,然后进行违法违规操作。 黑灰产将各种方式窃取账号密码导入批量登录软件,登录软件自动尝试账号登录。邮箱服务器检测到异常登录请求,会下发验证码进行安全验证,但是黑灰产能够自动破解简单验证码,完成撞库登录过程。

    2024年02月14日
    浏览(44)
  • 单片机毕业设计 STM32智能空气质量检测仪 - 环境检测盒子 嵌入式 物联网

    Hi,大家好,学长今天向大家介绍一个 单片机项目 基于STM32的空气质量检测仪 大家可用于 课程设计 或 毕业设计 如今人们大约 80%的时间是在室内度过的, 室内空气质量与我们每个人的工作和生活都息息相关, 因此对生活环境的空气质量提出了更高的要求。 针对雾霾、 室内

    2024年02月10日
    浏览(44)
  • 目标检测——工业安全生产环境违规使用手机的识别

    一、重要性及意义 首先,工业安全生产环境涉及到许多复杂的工艺和设备,这些设备和工艺往往需要高精度的操作和严格的监管。如果员工在生产过程中违规使用手机,不仅可能分散其注意力,降低工作效率,更可能因操作失误导致设备故障或生产事故,从而对员工的生命安

    2024年04月13日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包