- 博客(11)
- 收藏
- 关注
原创 记录一次glibc版本过低导致的程序无法正常加载的问题
第二次调用hit_cb函数的时候,由于上次调用dlopen失败,所以依然会再次调用dlopen函数打开so,而此次调用dlopen竟然成功了,但是并没有启动go的那些基础线程。一个程序使用C语言编写的,但由于某些原因,需要通过dlopen的方式调用go语言生成的so,在其它设备上可以正常运行,但在一个arm环境上运行的时候,发现无法正常运行,看到的现象是程序无任何响应,类似直接卡死了。由于之前有类似的经验,发现少了go的一些基础线程,但不明白为什么会没有go的基础线程。这个问题暂时还未深入去研究。
2023-11-27 14:46:08
1199
原创 记录某个程序无法启动问题
test-api中执行start.sh脚本的时候,会将stderr重定向到管道中。而执行start.sh脚本的时候,会将test-api进程kill掉,管道的读取端会被关闭,在启动test-bin的时候,由于stderr没有重定向为其它文件,会向stderr中写入信息,但由于管道的读取端已被关闭,所以会触发SIGPIPE信号,造成进程退出。
2023-06-28 23:44:41
158
1
原创 使用Qemu在Windows上模拟arm平台并安装国产化操作系统
使用Qemu在Windows上模拟arm平台并安装国产化arm 操作系统(麒麟V10)
2022-11-20 15:26:55
18524
16
原创 记录一次C语言调用go生成的动态库的踩坑过程
按照中的总结。原因是在程序启动的时候,如果调用了go生成的so,那么go会调用一些函数建立go运行时环境,会创建一些线程。而我的新程序中,具体调用go函数的地方,是在子进程中调用的,而父进程fork子进程的时候,不会把go建立的那几个运行时线程复制到子进程中,即便在子进程中重新dlopen go生成的so也不会重新创建那几个运行时线程,所以导致go中那些涉及到一些需要运行时程序干预的代码(如gc等)无法正常运行。而我的go代码中刚好触发了GC,导致go无法运行,一直处在死循环之中。...
2022-08-24 12:47:01
914
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人