On Mon, Dec 20, 2010 at 01:32:50AM -0500, Kevin Bowling wrote: > I'm at wit's end with a libevent threading bug. As part of a disconnect > client routine, I manually call the errorcb with EVENT_ERROR_EOF. The idea > was to keep all the cleanup code in one callback but I'm beginning to think > this was ill-conceived. Somehow, libevent is entering a condition wait and > it looks like the event base is never releasing the cv mutex. > > For the worker threads, the workers are passed a *bev and *ctx pointer > through a singly linked list that is mutex protected. When a client > disconnects, a reaper is run in the errorcb to remove any pending work > entries that match that *bev pointer. This happens mutually exclusive to > the workers so a worker should not consume a null *bev. I'm guessing the > errorcb is being called twice. > > It may be a longshot asking such a broad question but any advice is > appreciated. > > Here is the backtrace of the worker thread(6), and the event base(1):
If you can give me a method of reproducing the issue with your code, I can give it a quick lookover. *********************************************************************** To unsubscribe, send an e-mail to [email protected] with unsubscribe libevent-users in the body.
