Opened 15 years ago

#29 closed defect (Fixed)

traceback happens occasionally during queue or flush

Reported by: weasel Owned by: nickm
Priority: Low Milestone:
Component: Mixminion-Client Version: 0.0.7alpha
Severity: Keywords:
Cc: weasel Actual Points:
Parent ID: Points:
Reviewer: Sponsor:

Description

[Moved from bugzilla]
Reporter: qumqats@… (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



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. :/



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



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]

Child Tickets

Change History (1)

comment:1 Changed 15 years ago by weasel

flyspray2trac: bug closed.

Note: See TracTickets for help on using tickets.