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版本。问题解决。

你可能感兴趣的:(JAVA,大数据)