JNI 调用崩溃问题分析

博客详细分析了JNI在服务器linphone中的调用过程中遇到的两个崩溃问题。问题一是JNI初始化后打开web页面出现段错误,原因是dbg_signal_handler捕获了信号;问题二是JVM检测到致命错误,原因是JAVA执行垃圾回收时调用了JNI析构函数。解决方案包括注释掉不必要的信号处理和将JNI监听器定义为静态类避免被垃圾回收。通过addr2line工具和日志定位问题,并进行了18小时压测验证修复效果。
摘要由CSDN通过智能技术生成

JNI调用过程是:Java —> JNI —> C/C++(SO库)

问题一、服务器linphone JNI初始化后,打开web页面出现段错误,边缘网关直接崩溃退出

日志:

14:56:37.802 siteServer [https-jsse-nio-8096-exec-4] INFO o.s.web.servlet.DispatcherServlet - FrameworkServlet 'dispatcherServlet': initialization completed in 12 ms

[LIB] Fatal signal 11 (SIGSEGV) at 0x7fd2f8228000 (code=2), thread 1623 (java)

[LIB] stack depth 3

[LIB] /usr/lib64/liblinphonejni.so(+0x9cb7) [0x7fd2b4eb5cb7]

[LIB] /lib64/libpthread.so.0(+0xf630) [0x7fd2f7dfc630]

[LIB] [0x7fd2e17ad256]

[1]- 完成 cd /home/legrand_linux_install_69/7jar

[root@localhost ~]# ps -uax | grep java

root 4475 0.0 0.0 112824 980 pts/13 S+ 14:57 0:00 grep --color=auto java

root 32762 1.0 16.6 6232416 1306308 ? Sl 9月28 190:36 /home/legrand_linux_install_69/6jdk/jdk1.8_x64/bin/java -jar -Dspring.profiles.active=inland -XX:+HeapDumpOnOutOfMemoryError -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms2048m -Xmx2048m -Xmn512m -Xss1m -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC /home/legrand_linux_install_69/7jar/cms-site-server-app-0.0.1.jar --ftp.pwd=YjAwYzk4ZmM5Z!@#

[2]+ 段错误 (吐核)java -jar /home/legrand_linux_install_69/7jar/cms-gateway-rest-server-app-0.0.1.jar

[root@localhost ~]#

通过Android NDK工具命令排查问题如下:

[root@localhost ~]# addr2line -f -e /usr/lib64/liblinphonejni.so +0x9cb7 ( +0x9cb7 指针位置)

[root@localhost ~]# /home/share/linphone_for_ss/submodules/linphonejni/src/backtrace.c:67

源码位置:

修复方式:注释掉backtarce,dbg_signal_handler函数是捕获信号的,估计是打开网页,产生了一些信号被他捕获了,认为是崩溃的。

问题二、服务器Linphone JNI初始化后,出现JVM检测到致命错误,边缘网关直接崩溃退出

日志:

#

# A fatal error has been detected by the Java Runtime Environment:

#

# SIGSEGV (0xb) at pc=0x0000000000000000, pid=10132, tid=0x00007f970ddc0700

#

# JRE version: Java(TM) S

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@sunshine@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值