[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[Libevent-users] Clarify new behavior?



Hi folks

I successfully updated our libevent integration in Open MPI, but have encountered a problem with one use-case that used to work and now doesn't. Before proceeding to devise a fix, I just wanted to confirm that I accurately understand the issue.

The problem arises from this scenario:

1. we receive a command via a message that we receive in a file descriptor event. We "push" the command message into a timer event (duration zero time) to help break a threading issue, and then return from the file descriptor event.

2. the event library is called with LOOP_ONCE, causing the timer event to fire.

3. from within the timer event, the command causes us to execute a procedure that results in us having to wait for another event to occur. We "block" in that position, running a loop that includes a call to progress the event library (i.e., a call to event_loop(LOOP_ONCE)).

This last step used to work just fine, yet now yields the following warning:

warn] event_base_loop: reentrant invocation.  Only one event_base_loop can run on each event_base at once.: Resource temporarily unavailable

and no progression of the event library occurs.

I can see a few ways around this problem, but all involve considerable code rewrite. Before I do so, I just wanted to confirm my understanding that this behavior changed (i.e., recursion is no longer allowed), and see if any alternative approaches to revising such codes are recommended.

Thanks
Ralph

***********************************************************************
To unsubscribe, send an e-mail to majordomo@xxxxxxxxxxxxx with
unsubscribe libevent-users    in the body.