首页 > 编程语言 >记一次Java崩溃崩溃问题——IPv6 与 glibc的bug

记一次Java崩溃崩溃问题——IPv6 与 glibc的bug

时间:2023-02-08 00:44:07浏览次数:46  
标签:Ljava Java String java glibc InetAddress 崩溃 net

最近一段时间,项目组的后端和APP端进行联调的时候,会发现测试服务器的后端服务器会经常莫名其妙地崩溃,最后会生成一份崩溃日志(hs_err_pid.log)。日志的大概信息如下:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=xxxxxxxxxxxxxxxxx, pid=xxxxxxxxxxxxx, tid=xxxxxxxxxxxxxxxxx
#
# JRE version: Java(TM) SE Runtime Environment (8.0_121-b13) (build 1.8.0_121-b13)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.121-b13 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [libresolv.so.2+0x7a91]  __libc_res_nquery+0x1c1
#
# 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.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

……

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  java.net.Inet6AddressImpl.lookupAllHostAddr(Ljava/lang/String;)[Ljava/net/InetAddress;+0
j  java.net.InetAddress$2.lookupAllHostAddr(Ljava/lang/String;)[Ljava/net/InetAddress;+4
j  java.net.InetAddress.getAddressesFromNameService(Ljava/lang/String;Ljava/net/InetAddress;)[Ljava/net/InetAddress;+51
J 20054 C1 java.net.InetAddress.getAllByName0(Ljava/lang/String;Ljava/net/InetAddress;Z)[Ljava/net/InetAddress; (57 bytes) 
J 19009 C1 java.net.InetAddress.getAllByName(Ljava/lang/String;Ljava/net/InetAddress;)[Ljava/net/InetAddress; (387 bytes) 
J 19451 C1 java.net.InetSocketAddress.<init>(Ljava/lang/String;I)V (47 bytes) 
J 19459 C1 sun.net.NetworkClient.doConnect(Ljava/lang/String;I)Ljava/net/Socket; (176 bytes) 

根据日志中的“java.net.Inet6AddressImpl.lookupAllHostAddr”,可以初步怀疑是跟JVM在接收跟IPv6的时候出的错误导致的崩溃。再结合“C [libresolv.so.2+0x7a91] __libc_res_nquery+0x1c1” 这部分日志,可以认为,是 由于JVM的本地方法导致的问题。

libresolv.so.2 是glibc编译后的的库。由此我们可能可以怀疑是由于glibc

未完待续

标签:Ljava,Java,String,java,glibc,InetAddress,崩溃,net
From: https://www.cnblogs.com/sitr/p/17100262.html

相关文章

  • BUUCTF Java逆向解密 RE
    Java逆向,百度一下采用Jadx-gui打开后得到如下代码packagedefpackage;importjava.util.ArrayList;importjava.util.Scanner;/*renamedfrom:Reversereason:d......
  • java创建线程的方式有几种?
    java中创建线程的方式有多少种,这个问题也是众多纷纭,这个时候更应该参考官方文档(https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html)了,文档很明确地指出......
  • JavaScript五花八门的跳转方式
    我们最常见的跳转方式是location.href="http://www.baidu.com",这种是最常见的,但是常常使用location.replace,location.assign,,window.open,history.replaceState,location.......
  • Java07
    一、面向过程&面向对象1.面向过程:线性思维,处理简单问题2.面向对象:分类,复杂问题 二、面向对象(OOP)1.本质:以类的方式组织代码,以对象的组织(封装)数据。......
  • java面试题(四)
    1.java面试题(四)1.1cap理论,base理论1.Consistency(一致性):即更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致。对于客户端来说,一致性指的是并发访问......
  • java——spring boot集成redis——首先进行复习——本机环境安装(windows环境下)
    鉴于之前学习的时候已经安装完成,此处不重复安装,有需要的可以参考网上各种教程。 本章节以黑马教程为准开始进行复习和学习,进一步提高后端能力 黑马教程:redis——B站......
  • zzul1058_Java
    importjava.util.Scanner;publicclasszzul1058{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);intn=inpu......
  • zzul1073_Java
    importjava.util.Scanner;/***限制解是正数,且脚数为偶数即可*/publicclasszzul1073{publicstaticvoidmain(String[]args){Scannersc=newScann......
  • zzul1074_Java
    packagecom.ittrash;importjava.util.Scanner;publicclasszzul1074{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);......
  • 【JavaScript】5_常见的运算符(三种逻辑运算符+关系运算符)
    5、逻辑运算符1!逻辑非!可以用来对一个值进行非运算它可以对一个布尔值进行取反操作true-->falsefalse-->true如果对一个非布尔值进行取反,它会先将其转换为布尔值......