-
Notifications
You must be signed in to change notification settings - Fork 38.7k
Closed
Description
If the GetMyExternalIP provider hasn't answered, bitcoind can't be stopped gracefully.
It looks like #3372 did not fix this, because boost interrupt() doesn't actually interrupt recv(), it just causes an exception at the next boost interruption point.
Thread in bitcoind that won't die:
(gdb) thread 6
[Switching to thread 6 (Thread 0x7f5818b7a700 (LWP 5569))]
#0 0x00007f581db6814c in recv () from /lib/x86_64-linux-gnu/libpthread.so.0
(gdb) bt
#0 0x00007f581db6814c in recv () from /lib/x86_64-linux-gnu/libpthread.so.0
#1 0x00007f581eccd213 in recv (__flags=0, __n=1, __buf=0x7f5818b79a56, __fd=23)
at /usr/include/x86_64-linux-gnu/bits/socket2.h:45
#2 RecvLine (hSocket=23, strLine=...) at net.cpp:153
#3 0x00007f581eccd541 in GetMyExternalIP2 (addrConnect=...,
pszGet=0x7f581ee9dcd8 "GET / HTTP/1.1\r\nHost: checkip.dyndns.org\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)\r\nConnection: close\r\n\r\n", pszKeyword=0x7f581ee9d976 "Address:", ipRet=...) at net.cpp:318
#4 0x00007f581eccdb14 in GetMyExternalIP (ipRet=...) at net.cpp:407
#5 0x00007f581eccdeb8 in ThreadGetMyExternalIP () at net.cpp:417
#6 0x00007f581ece128a in TraceThread<void (*)()> (name=0x7f581ee9dada "ext-ip",
func=0x7f581eccde90 <ThreadGetMyExternalIP()>) at util.h:544
#7 0x00007f581e111ce9 in thread_proxy () from /usr/lib/libboost_thread.so.1.46.1
#8 0x00007f581db60e9a in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#9 0x00007f581ca423fd in clone () from /lib/x86_64-linux-gnu/libc.so.6
#10 0x0000000000000000 in ?? ()
Metadata
Metadata
Assignees
Labels
No labels