[tor-bugs] #28078 [Core Tor/Nyx]: nyx hangs (sometimes) when tor process vanishes

Tor Bug Tracker & Wiki blackhole at torproject.org
Wed Oct 17 00:19:37 UTC 2018


#28078: nyx hangs (sometimes) when tor process vanishes
------------------------------+--------------------
     Reporter:  traumschule   |      Owner:  atagar
         Type:  defect        |     Status:  new
     Priority:  Medium        |  Milestone:
    Component:  Core Tor/Nyx  |    Version:
     Severity:  Normal        |   Keywords:
Actual Points:                |  Parent ID:
       Points:                |   Reviewer:
      Sponsor:                |
------------------------------+--------------------
 For the second time nyx became irresponsive after TB has been restarted
 (via update or after a crash).

 What happened:
 The process {{{/usr/bin/python3 /usr/bin/nyx -i 127.0.0.1:9151}}} is
 connected to TB's tor instance. Some days ago TB upgraded itself and
 restarted. (Probably) since then nyx is no longer responding. Attaching to
 it reveals python hangs at PyThread_acquire_lock_timed.

 > # strace -p 27404
 > strace: Process 27404 attached
 > futex(0x9343b40, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1,
 NULL, 0xffffffff

 I tried to attach to the process with [https://bitbucket.org/xdegaye/pdb-
 clone/wiki/RemoteDebugging.md pdb-clone] after installing python-dbg:
 {{{
 # pdb-attach -p 27404
 Starting gdb 8.1
 +++ -interpreter-exec console "where"
 +++ -gdb-exit
 ~"\n"
 ^done
 (gdb)
 ~"#0  0xb7f1cd09 in __kernel_vsyscall ()\n"
 ~"#1  0xb7ed12d6 in futex_abstimed_wait_cancelable (private=0,
 abstime=0x0, expected=1, futex_word=0x9343b40) at
 ../sysdeps/unix/sysv/linux/futex-internal.h:205\n"
 ~"#2  do_futex_wait (sem=sem at entry=0x9343b40, abstime=0x0) at
 sem_waitcommon.c:115\n"
 ~"#3  0xb7ed13d7 in __new_sem_wait_slow (sem=0x9343b40, abstime=0x0) at
 sem_waitcommon.c:282\n"
 ~"#4  0x081e98cc in PyThread_acquire_lock_timed ()\n"
 ~"#5  0x0821a63d in ?? ()\n"
 ~"#6  0x081ab38b in _PyCFunction_FastCallDict ()\n"
 ~"#7  0x081dc4ed in PyObject_CallFunctionObjArgs ()\n"
 ~"#8  0x08152cf2 in _PyEval_EvalFrameDefault ()\n"
 ~"#9  0x0814f4c2 in ?? ()\n"
 ~"#10 0x081500a0 in ?? ()\n"
 ~"#11 0x0815186b in _PyEval_EvalFrameDefault ()\n"
 ~"#12 0x0814d785 in ?? ()\n"
 ~"#13 0x081ca5be in ?? ()\n"
 ~"#14 0x081e1054 in PyObject_Call ()\n"
 ~"#15 0x08152c05 in _PyEval_EvalFrameDefault ()\n"
 ~"#16 0x0814df2d in ?? ()\n"
 ~"#17 0x0814f76f in ?? ()\n"
 ~"#18 0x081500a0 in ?? ()\n"
 ~"#19 0x0815186b in _PyEval_EvalFrameDefault ()\n"
 ~"#20 0x0814f4c2 in ?? ()\n"
 ~"#21 0x081500a0 in ?? ()\n"
 ~"#22 0x0815186b in _PyEval_EvalFrameDefault ()\n"
 ~"#23 0x0814f4c2 in ?? ()\n"
 ~"#24 0x081500a0 in ?? ()\n"
 ~"#25 0x0815186b in _PyEval_EvalFrameDefault ()\n"
 ~"#26 0x0814f4c2 in ?? ()\n"
 ~"#27 0x081500a0 in ?? ()\n"
 ~"#28 0x0815186b in _PyEval_EvalFrameDefault ()\n"
 ~"#29 0x0814d785 in ?? ()\n"
 ~"#30 0x0814f76f in ?? ()\n"
 ~"#31 0x081500a0 in ?? ()\n"
 ~"#32 0x08152419 in _PyEval_EvalFrameDefault ()\n"
 ~"#33 0x0814d785 in ?? ()\n"
 ~"#34 0x0814f76f in ?? ()\n"
 ~"#35 0x081500a0 in ?? ()\n"
 ~"#36 0x08152419 in _PyEval_EvalFrameDefault ()\n"
 ~"#37 0x0814d785 in ?? ()\n"
 ~"#38 0x0814f76f in ?? ()\n"
 ~"#39 0x081500a0 in ?? ()\n"
 ~"#40 0x08152419 in _PyEval_EvalFrameDefault ()\n"
 ~"#41 0x0814f4c2 in ?? ()\n"
 ~"#42 0x081500a0 in ?? ()\n"
 ~"#43 0x0815186b in _PyEval_EvalFrameDefault ()\n"
 ~"#44 0x0814df2d in ?? ()\n"
 ~"#45 0x081ca5be in ?? ()\n"
 ~"#46 0x081e1054 in PyObject_Call ()\n"
 ~"#47 0x08152c05 in _PyEval_EvalFrameDefault ()\n"
 ~"#48 0x0814d785 in ?? ()\n"
 ~"#49 0x0814f76f in ?? ()\n"
 ~"#50 0x081500a0 in ?? ()\n"
 ~"#51 0x0815186b in _PyEval_EvalFrameDefault ()\n"
 ~"#52 0x0814df2d in ?? ()\n"
 ~"#53 0x0814f76f in ?? ()\n"
 ~"#54 0x081500a0 in ?? ()\n"
 ~"#55 0x08152419 in _PyEval_EvalFrameDefault ()\n"
 ~"#56 0x0814d785 in ?? ()\n"
 ~"#57 0x081ca69f in ?? ()\n"
 ~"#58 0x081e1054 in PyObject_Call ()\n"
 ~"#59 0x08152c05 in _PyEval_EvalFrameDefault ()\n"
 ~"#60 0x0814df2d in ?? ()\n"
 ~"#61 0x0814f76f in ?? ()\n"
 ~"#62 0x081500a0 in ?? ()\n"
 ~"#63 0x0815186b in _PyEval_EvalFrameDefault ()\n"
 ~"#64 0x0814f4c2 in ?? ()\n"
 ~"#65 0x081500a0 in ?? ()\n"
 ~"#66 0x0815186b in _PyEval_EvalFrameDefault ()\n"
 ~"#67 0x0814d785 in ?? ()\n"
 ~"#68 0x0815097c in PyEval_EvalCode ()\n"
 ~"#69 0x08267ea1 in ?? ()\n"
 ~"#70 0x08267f52 in PyRun_FileExFlags ()\n"
 ~"#71 0x0826b84f in PyRun_SimpleFileExFlags ()\n"
 ~"#72 0x0826c430 in Py_Main ()\n"
 ~"#73 0x080f5c50 in main ()\n"
 ^done
 (gdb)
 ^exit
 Unable to setup pdb for remote debugging.
 Please use a Python program built with debugging symbols.
 }}}

 Seems i need to restart nyx. Will keep it running though in case you have
 any idea to inspect its variables.

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/28078>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list