如何解决使用由 go 构建的死锁
我已经编译了一个 so 文件来使用 LD_PRELOAD。使用 LD_PRELOAD so 文件时发生死锁
[golib]# LD_PRELOAD=`pwd`/libshellhook.so bash grepconf.sh -c
<hang here>
当我使用 gdb 调试时,它是堆栈显示:
(gdb) bt
#0 0x00007fdf8d79a995 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1 0x00007fdf8e313723 in _cgo_wait_runtime_init_done () at gcc_libinit.c:40
#2 0x00007fdf8e313446 in execve (filename=0x1909350 "/usr/libexec/grepconf.sh",argv=0x1908b00,envp=0x1907d10) at _cgo_export.c:26
#3 0x000000000042fc02 in shell_execve ()
(gdb) info threads
Id Target Id Frame
* 1 Thread 0x7fdf8e856740 (LWP 25485) "bash" 0x00007fdf8d79a995 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
去版本
$ go version
go version go1.14.9 linux/amd64
它在 fedora 32 和 centos 6 中工作正常,但在 ubuntu 1804 和 centos 7(3.10.0-862.11.6.el7.x86_64.debug) 中挂起
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。