[tor-bugs] #30235 [Core Tor/Stem]: Stem hangs waiting for control port data (was: Tor hangs when asked to change DisableAllSwap over the control port)
Tor Bug Tracker & Wiki
blackhole at torproject.org
Thu May 30 10:37:35 UTC 2019
#30235: Stem hangs waiting for control port data
-----------------------------------+-------------------------------
Reporter: teor | Owner: (none)
Type: defect | Status: assigned
Priority: Medium | Milestone:
Component: Core Tor/Stem | Version:
Severity: Normal | Resolution:
Keywords: tor-ci-fail-sometimes | Actual Points: 0.5
Parent ID: #29437 | Points: 1
Reviewer: | Sponsor: Sponsor31-can
-----------------------------------+-------------------------------
Changes (by teor):
* milestone: Tor: 0.2.9.x-final =>
* component: Core Tor/Tor => Core Tor/Stem
* version: Tor: 0.2.4.8-alpha =>
* actualpoints: 0.3 => 0.5
Comment:
It looks like stem hangs waiting for a controller reply, but stem never
actually sends a command to trigger the reply:
{{{
05/30/2019 10:20:56 [TRACE] Sent to tor: Blarg!
05/30/2019 10:20:56 [TRACE] Received from tor: 650 STATUS_SERVER NOTICE
EXTERNAL_ADDRESS ADDRESS=35.202.145.110 METHOD=DIRSERV
05/30/2019 10:20:56 [TRACE] Received from tor: 514 Authentication
required.
05/30/2019 10:20:56 [TRACE] Sent to tor: blarg
05/30/2019 10:20:56 [INFO] Error while receiving a control message
(SocketClosed): empty socket content
05/30/2019 10:20:56 [TRACE] Received from tor: 650 STATUS_SERVER NOTICE
EXTERNAL_ADDRESS ADDRESS=35.184.96.71 METHOD=DIRSERV
control.controller...
================================================================================
Signal SIGUSR1 received by thread MainThread in process 18617
--------------------------------------------------------------------------------
MainThread thread stacktrace
File "/home/travis/build/torproject/tor/stem/run_tests.py", line 456, in
<module>
main()
File "/home/travis/build/torproject/tor/stem/run_tests.py", line 297, in
main
run_result = _run_test(args, test_class, output_filters)
File "/home/travis/build/torproject/tor/stem/run_tests.py", line 437, in
_run_test
run_result = stem.util.test_tools.TimedTestRunner(test_results,
verbosity = 2).run(suite)
File "/home/travis/build/torproject/tor/stem/stem/util/test_tools.py",
line 308, in run
return super(TimedTestRunner, self).run(test)
File "/usr/lib/python3.4/unittest/runner.py", line 168, in run
test(result)
File "/usr/lib/python3.4/unittest/suite.py", line 84, in __call__
return self.run(*args, **kwds)
File "/usr/lib/python3.4/unittest/suite.py", line 122, in run
test(result)
File "/usr/lib/python3.4/unittest/case.py", line 625, in __call__
return self.run(*args, **kwds)
File "/home/travis/build/torproject/tor/stem/stem/util/test_tools.py",
line 258, in run
result = super(type(self), self).run(result)
File "/usr/lib/python3.4/unittest/case.py", line 577, in run
testMethod()
File "/home/travis/build/torproject/tor/stem/test/require.py", line 57,
in wrapped
return func(self, *args, **kwargs)
File
"/home/travis/build/torproject/tor/stem/test/integ/control/controller.py",
line 782, in test_set_conf
), reset = True)
File "/home/travis/build/torproject/tor/stem/stem/control.py", line
2541, in set_options
response = self.msg(query)
File "/home/travis/build/torproject/tor/stem/stem/control.py", line 661,
in msg
response = self._reply_queue.get()
File "/usr/lib/python3.4/queue.py", line 167, in get
self.not_empty.wait()
File "/usr/lib/python3.4/threading.py", line 290, in wait
waiter.acquire()
File "/home/travis/build/torproject/tor/stem/run_tests.py", line 91, in
log_traceback
for thread_name, stacktrace in
test.output.thread_stacktraces().items():
File "/home/travis/build/torproject/tor/stem/test/output.py", line 110,
in thread_stacktraces
stacktraces[thread.name] = ''.join(traceback.format_stack(frame))
--------------------------------------------------------------------------------
Tor listener thread stacktrace
File "/usr/lib/python3.4/threading.py", line 888, in _bootstrap
self._bootstrap_inner()
File "/usr/lib/python3.4/threading.py", line 920, in _bootstrap_inner
self.run()
File "/usr/lib/python3.4/threading.py", line 868, in run
self._target(*self._args, **self._kwargs)
File "/home/travis/build/torproject/tor/stem/stem/control.py", line 946,
in _reader_loop
control_message = self._socket.recv()
File "/home/travis/build/torproject/tor/stem/stem/socket.py", line 474,
in recv
return self._recv(lambda s, sf: recv_message(sf))
File "/home/travis/build/torproject/tor/stem/stem/socket.py", line 274,
in _recv
return handler(my_socket, my_socket_file)
File "/home/travis/build/torproject/tor/stem/stem/socket.py", line 474,
in <lambda>
return self._recv(lambda s, sf: recv_message(sf))
File "/home/travis/build/torproject/tor/stem/stem/socket.py", line 676,
in recv_message
line = control_file.readline()
File "/usr/lib/python3.4/socket.py", line 374, in readinto
return self._sock.recv_into(b)
--------------------------------------------------------------------------------
Event notifier thread stacktrace
File "/usr/lib/python3.4/threading.py", line 888, in _bootstrap
self._bootstrap_inner()
File "/usr/lib/python3.4/threading.py", line 920, in _bootstrap_inner
self.run()
File "/usr/lib/python3.4/threading.py", line 868, in run
self._target(*self._args, **self._kwargs)
File "/home/travis/build/torproject/tor/stem/stem/control.py", line 991,
in _event_loop
self._event_notice.wait(0.05)
File "/usr/lib/python3.4/threading.py", line 553, in wait
signaled = self._cond.wait(timeout)
File "/usr/lib/python3.4/threading.py", line 294, in wait
gotit = waiter.acquire(True, timeout)
================================================================================
}}}
https://travis-ci.org/torproject/tor/jobs/539146230#L4372
The tor logs aren't much help, because they are from 10 minutes later than
the hang.
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/30235#comment:12>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
More information about the tor-bugs
mailing list