jdk1.8与glibc的兼容性问题(JVM Crash+C [libc.so.6+0x81980] _IO_link_in+0x1f0)

Posted rongyongfeikai2

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jdk1.8与glibc的兼容性问题(JVM Crash+C [libc.so.6+0x81980] _IO_link_in+0x1f0)相关的知识,希望对你有一定的参考价值。

背景:
基于alpine3.15基础镜像构建的,由于alpine默认用的是musel libc,所以oracle jdk是用不了的,需要自己安装glibc相关的库(尤其时涉及到验证码绘制这块时,需要安装glibc-bin,glibc-i18n)

问题现象:
一旦调用验证码绘制接口,jvm就crash了,报错里的关键信息:
# Problematic frame:
# C  [libc.so.6+0x81980]  _IO_link_in+0x1f0

从报错过程种就猜测到是jdk1.8与glibc版本兼容问题,但是试了2.25和2.30都有问题。
绝望之际,发现了一处讨论:https://github.com/AdoptOpenJDK/openjdk-docker/issues/520
虽然该讨论主要是说的openjdk11与glibc的兼容问题,但问题现象是类似的,他是安装fontconfig ttf-dejavu(fontconfig看起来就是字体相关的),会触发
C  [libc.so.6+0x81980]  _IO_link_in+0x1f0报错。
里面@bharathappali有一段关键的回复:
“The issue got resolved after following the workaround provided by @aahlenst
Updating GLIBC patch to 2.33 solved the issue.”
即将glibc更新至2.33可以绕过此问题。

当即,将glibc/glibc-bin/glibc-i18n统一升为2.33版本。问题解决。

以上是关于jdk1.8与glibc的兼容性问题(JVM Crash+C [libc.so.6+0x81980] _IO_link_in+0x1f0)的主要内容,如果未能解决你的问题,请参考以下文章

jdk1.8与glibc的兼容性问题(JVM Crash+C [libc.so.6+0x81980] _IO_link_in+0x1f0)

JDK1.8与spring3.x的不兼容

JVM运行时的内存划分--JDK1.8

基于JDK1.8的JVM 内存结构JVM篇三

JVM调优笔记3-----JVM参数配置 JDK1.8

jdk1.8的JVM内存划分模型,堆和栈的区别