traceback happens occasionally during queue or flush
[Moved from bugzilla] Reporter: qumqats@outel.org (Joel M. Baldwin) Description: Opened: 2004-03-23 04:36
Mixminion version 0.0.7rc1 This software is for testing purposes only. Anonymity is not guaranteed. Traceback (most recent call last): File "bin/mixminion", line 10, in ? mixminion.Main.main(sys.argv) File "/home/minion/lib/python2.3/site-packages/mixminion/Main.py", line 333, in main func(commandStr, args[2:]) File "/home/minion/lib/python2.3/site-packages/mixminion/ClientMain.py", line 1215, in runClient parser.init() File "/home/minion/lib/python2.3/site-packages/mixminion/ClientMain.py", line 973, in init self.directory = mixminion.ClientDirectory.ClientDirectory( File "/home/minion/lib/python2.3/site-packages/mixminion/ClientDirectory.py", line 114, in init self._diskLock.release() File "/home/minion/lib/python2.3/site-packages/mixminion/Common.py", line 1527, in release assert self.fd is not None AssertionError
------- Additional Comments From Nick Mathewson 2004-03-23 05:01 -------
Ug. My guess is that some call to the aquire-lock code is failing, and raising an exception, which is tryggering the finally clause of some try/finally block, which calls the release-lock code, which fails because the lock was never acquired in the first place.
I've moved the aquire-lock logic outside of the corresponding try blocks, to see what happens. This shouldn't solve the issue, but should make the exceptions more helpful. :/
------- Additional Comments From Joel M. Baldwin 2004-03-23 05:52 -------
This happened with a send command ( pings/chains do a queue and then a flush )
Mixminion version 0.0.7rc1 This software is for testing purposes only. Anonymity is not guaranteed. Mar 22 20:48:47.090 -0800 [WARN] The ConnectionTimout option in your . mixminionrc is deprecated; use Timeout instead. Traceback (most recent call last): File "/home/minion/bin/mixminion", line 10, in ? mixminion.Main.main(sys.argv) File "/home/minion/lib/python2.3/site-packages/mixminion/Main.py", line 333, in main func(commandStr, args[2:]) File "/home/minion/lib/python2.3/site-packages/mixminion/ClientMain.py", line 1193, in runClient parser.init() File "/home/minion/lib/python2.3/site-packages/mixminion/ClientMain.py", line 951, in init self.directory = mixminion.ClientDirectory.ClientDirectory( File "/home/minion/lib/python2.3/site-packages/mixminion/ClientDirectory.py", line 114, in init self._diskLock.acquire() File "/home/minion/lib/python2.3/site-packages/mixminion/Common.py", line 1502, in acquire self._lock(self.fd, blocking) File "/home/minion/lib/python2.3/site-packages/mixminion/Common.py", line 1559, in _lock raise LockfileLocked() mixminion.Common.LockfileLocked
------- Additional Comments From Nick Mathewson 2004-03-23 06:07 -------
Okay, got it.
The exception means that we tried to acquire the lock in nonblocking mode, but we didn't handle the exception.
Turns out, we didn't mean to acquire it in nonblocking mode. :/ But the LockFile interface doesn't DTRT and default to blocking. D'oh!
Fixing in CVS.
[Automatically added by flyspray2trac: Operating System: FreeBSD]