#1630·resque

在解析 DNS 时发生分叉,导致子进程出现死锁

作者: eam创建于 2018年5月8日更新于 2026年6月18日

(gdb) bt #0 0x00007f346d9ca334 in __lll_lock_wait() from /lib64/libpthread.so.0 #1 0x00007f346d9c55d8 in _L_lock_854() from /lib64/libpthread.so.0 #2 0x00007f346d9c54a7 in pthread_mutex_lock() from /lib64/libpthread.so.0 #3 0x00007f3467b798fa in _nss_files_gethostbyname4_r() from /lib64/libnss_files.so.2 #4 0x00007f346ce30f7b in gaih_inet() from /lib64/libc.so.6 #5 0x00007f346ce33fbf in getaddrinfo() from /lib64/libc.so.6 #6 0x00007f34682cd39b in mysql_real_connect(MySQL=0xa3fab40, host=0x891a150 "<redacted-our-MySQL-db>", user=0x7176e10 "<redacted>", passwd=0x7f346832f27a", db=0x7176f50 "<redacted>", port=3306, unix_socket=0x0, client_flag=3222282759) at /project/MySQL-5.7.14/sql-common/client.c:4492 #7 0x00007f346885b011 in nogvl_connect(ptr=<value optimized out>) at client.c:203 #8 0x00007f346dd86017 in call_without_gvl(func=0x7f346885afe0 <nogvl_connect>, data1=0x7ffd591460e0, ubf=<value optimized out>, data2=<value optimized out>, fail_if_interrupted=0) at thread.c:1321 #9 0x00007f346885cd1a in rb_mysql_connect(self=165676040, user=118976000, pass=8, host=118975840, port=8, database=118976320, socket=8, flags=6444565519, conn_attrs=165658480) at client.c:438 #10 0x00007f346dda68df in call_cfunc_8(func=<value optimized out>, recv=<value optimized out>, argc=<value optimized out>, argv=<value optimized out>) at vm_insnhelper.c:1644 #11 0x00007f346ddadb9a in vm_call_cfunc_with_frame(th=0x25646d0, reg_cfp=0x7f346e2c2770, calling=<value optimized out>, ci=0x478a040, cc=<value optimized out>) at vm_insnhelper.c:1769 #12 vm_call_cfunc(th=0x25646d0,