obfsproxy: test suite failure (connection refused)
I ran tester.py
in a while true
loop, and every once in a while (like, every 6 runs or so), a test fails like this:
F................
======================================================================
FAIL: test_direct_transfer (__main__.DirectDummy)
----------------------------------------------------------------------
Traceback (most recent call last):
File "./tester.py", line 195, in test_direct_transfer
self.fail("\n" + report)
AssertionError:
errors in transfer:
--- expected
+++ received
@@ -1,39 +1,1 @@
-THIS IS A TEST FILE. IT\'S USED BY THE INTEGRATION TESTS.
-THIS IS A TEST FILE. IT\'S USED BY THE INTEGRATION TESTS.
-THIS IS A TEST FILE. IT\'S USED BY THE INTEGRATION TESTS.
-THIS IS A TEST FILE. IT\'S USED BY THE INTEGRATION TESTS.
-"Can entropy ever be reversed?"
-"THERE IS AS YET INSUFFICIENT DATA FOR A MEANINGFUL ANSWER."
-"Can entropy ever be reversed?"
-"THERE IS AS YET INSUFFICIENT DATA FOR A MEANINGFUL ANSWER."
-"Can entropy ever be reversed?"
-"THERE IS AS YET INSUFFICIENT DATA FOR A MEANINGFUL ANSWER."
-"Can entropy ever be reversed?"
-"THERE IS AS YET INSUFFICIENT DATA FOR A MEANINGFUL ANSWER."
-"Can entropy ever be reversed?"
-"THERE IS AS YET INSUFFICIENT DATA FOR A MEANINGFUL ANSWER."
-"Can entropy ever be reversed?"
-"THERE IS AS YET INSUFFICIENT DATA FOR A MEANINGFUL ANSWER."
-"Can entropy ever be reversed?"
-"THERE IS AS YET INSUFFICIENT DATA FOR A MEANINGFUL ANSWER."
-"Can entropy ever be reversed?"
-"THERE IS AS YET INSUFFICIENT DATA FOR A MEANINGFUL ANSWER."
-
- In obfuscatory age geeky warfare did I wage
- For hiding bits from nasty censors\' sight
- I was hacker to my set in that dim dark age of net
- And I hacked from noon till three or four at night
-
- Then a rival from Helsinki said my protocol was dinky
- So I flamed him with a condescending laugh,
- Saying his designs for stego might as well be made of lego
- And that my bikeshed was prettier by half.
-
- But Claude Shannon saw my shame. From his noiseless channel came
- A message sent with not a wasted byte
- "There are nine and sixty ways to disguise communiques
- And RATHER MORE THAN ONE OF THEM IS RIGHT"
-
-\t\t (apologies to Rudyard Kipling.)
-
obfsproxy stderr:
| 2012-04-13 17:43:42 [notice] Starting (git-d34089686511346d).
| 2012-04-13 17:43:42 [debug] Configuration 1: dummy server 127.0.0.1:5000 127.0.0.1:5001
| 2012-04-13 17:43:42 [debug] Configuration 2: dummy client 127.0.0.1:4999 127.0.0.1:5000
| 2012-04-13 17:43:42 [debug] Now listening on 127.0.0.1:5000 for protocol dummy.
| 2012-04-13 17:43:42 [debug] Now listening on 127.0.0.1:4999 for protocol dummy.
| 2012-04-13 17:43:42 [debug] [scrubbed]: new connection from [scrubbed] (1 total)
| 2012-04-13 17:43:42 [debug] [scrubbed]: simple client connection
| 2012-04-13 17:43:42 [info] [scrubbed] (dummy): Successful outbound connection to '[scrubbed]'.
| 2012-04-13 17:43:42 [debug] [scrubbed]: setup complete
| 2012-04-13 17:43:42 [debug] [scrubbed]: new connection from [scrubbed] (3 total)
| 2012-04-13 17:43:42 [debug] [scrubbed]: server connection
| 2012-04-13 17:43:42 [info] [scrubbed] (dummy): Successful outbound connection to '[scrubbed]'.
| 2012-04-13 17:43:42 [debug] [scrubbed]: setup complete
| 2012-04-13 17:43:42 [debug] [scrubbed]: pending_conn_cb
| 2012-04-13 17:43:42 [debug] [scrubbed]: Successful connection
| 2012-04-13 17:43:42 [debug] [scrubbed]: pending_conn_cb
| 2012-04-13 17:43:42 [debug] error_cb for [scrubbed]: what=0x0020 errno=111
| 2012-04-13 17:43:42 [info] Error talking to [scrubbed]: Connection refused
| 2012-04-13 17:43:42 [debug] error_or_eof for [scrubbed]
| 2012-04-13 17:43:42 [debug] Closing connection with [scrubbed]; 3 remaining
| 2012-04-13 17:43:42 [debug] Closing connection with [scrubbed]; 2 remaining
| 2012-04-13 17:43:42 [debug] [scrubbed]: upstream_read_cb, 1666 bytes available
| 2012-04-13 17:43:42 [debug] [scrubbed]: transmitted 1666 bytes
| 2012-04-13 17:43:42 [debug] error_cb for [scrubbed]: what=0x0011
| 2012-04-13 17:43:42 [info] EOF from [scrubbed]
| 2012-04-13 17:43:42 [debug] error_or_eof for [scrubbed]
| 2012-04-13 17:43:42 [debug] Closing connection with [scrubbed]; 1 remaining
| 2012-04-13 17:43:42 [debug] Closing connection with [scrubbed]; 0 remaining
| 2012-04-13 17:43:43 [info] Closing all listeners.
| 2012-04-13 17:43:43 [notice] Got SIGINT. Preparing shutdown.
| 2012-04-13 17:43:43 [debug] Beginning normal shutdown.
| 2012-04-13 17:43:43 [debug] Finishing shutdown.
| 2012-04-13 17:43:43 [notice] Exiting.
Initially, I thought it was introduced by the #5156 (closed) fix (like #5586 (closed)), but it seems like I can reproduce the bug in earlier revisions too (the attached log is of d34089686511346d
).
I'd guess it's a problem with tester.py
itself, but I'm not sure yet.
PS: I can only reproduce this in certain systems. This one is a Debian 32bit. I can't reproduce this in Debian or Ubuntu 64bit.