记录一次glibc版本过低导致的程序无法正常加载的问题
2023.11.27
问题现象
一个程序使用C语言编写的,但由于某些原因,需要通过dlopen的方式调用go语言生成的so,在其它设备上可以正常运行,但在一个arm环境上运行的时候,发现无法正常运行,看到的现象是程序无任何响应,类似直接卡死了。私用gdb查看当前进程,线程信息及调用信息如下:
$3 = (void *) 0x7f98c31000
(gdb) info threads
Id Target Id Frame
* 1 LWP 4658 "test" get_func (ctx=0x200cd59d80,
func_name=0x200cf63ae0 "CheckTest")
at /root/codes/rechk.c:192
2 LWP 4666 "test" 0x0000007f92cd3a98 in pthread_cond_wait ()
from /lib/libpthread.so.0
(gdb) c
Thread 1 "dp" received signal SIGINT, Interrupt.
0x0000007fad50ca98 in pthread_cond_wait () from /lib/libpthread.so.0
(gdb) bt
#0 0x0000007fad50ca98 in pthread_cond_wait () from /lib/libpthread.so.0
#1 0x0000007f920031ac in _cgo_wait_runtime_init_done () at gcc_libinit.c:40
#2 0x0000007f92002d5c in CheckTest (
buf=buf@entry=0x7f96400013 "371329199910103717\"}", bufLen=bufLen@entry=18)
at _cgo_export.c:152
#3 0x0000007