On Fri, Jan 13, 2012 at 10:13 AM, Ralph Castain <r...@open-mpi.org> wrote:
>> What kind of illegal value are you seeing, > > 1326467251, 774650 Okay, that looks like it's the actual current time! I wonder why that would make select() give an error, though. Maybe because the current time plus that many seconds exceeds a 32-bit TIME_MAX ? >> coming from where? > > I'm not sure who calls "select_dispatch" - the value is passed into it. The line is res = evsel->dispatch(base, tv_p); in event_base_loop() in event.c >> Are you >> using the common_timeout code? > > This is just flowing thru from a call to event_loop - I'm not sure of the > progression that takes us down to select_dispatch. I meant, is any part of your code calling event_base_init_common_timeout() ? It sounds like "no". So, three possibilities come to mind: 1) Something is calling event_add with an absolute time rather than a number of seconds/usec to delay. 2) Something in Libevent is calling event_add_internal with an absolute time rather than a delay, and is not setting the tv_is_absolute flag 3) timeout_correct has gone crazy, and thinks that the current time has been reset to 0 for some reason. Adding some assertions in event_add_internal might track this down. Trivially, you could do if (tv && !tv_is_absolute) { /* waiting one billion seconds should be enough for anyone */ EVUTIL_ASSERT(tv->tv_sec < 1000000000); } to try to detect 1 and 2. -- Nick *********************************************************************** To unsubscribe, send an e-mail to majord...@freehaven.net with unsubscribe libevent-users in the body.