Neal.Garber at iberdrolausa.com
Fri Oct 15 23:12:12 CEST 2010
> Ah... I don't usually do builds && tests without pthreads.
Actually, I am building/testing with pthreads. However, I was running in debug mode (radiusd -X). The problem does not occur when I don't start radiusd with -X. Some additional debug code in event.c shows the following sequence of events:
radiusd.c:main spawn_flag = FALSE (due to -X flag)
event.c:radius_event_init have_children = spawn_flag
event.c:request_pre_handler request->child_state = REQUEST_RUNNING
event.c:no_response_to_proxied_request: request->child_state = REQUEST_RUNNING
event.c:wait_a_bit request->child_state == REQUEST_RUNNING &&
radiusd dies with ASSERT FAILED..
> Hmm... the assert isn't on line 1175 in current git,
Ugh.. I tested originally with pre-2.1.0, then retested with current git, then posted the output from the original test <duh>.
> Delete the assert, and replace it with a "goto" that jumps down to the
"case REQUEST_DONE" statement.
I can do that; but, are you saying this should be a permanent change because REQUEST_RUNNING & REQUEST_QUEUED are valid states even if not threading? If not, shouldn't the assignments be changed not to use REQUEST_RUNNING if not threading? Seems like we wouldn't want the server to die just because we're debugging and I'd rather not have to maintain a local change (to delete the assert) if I don't have to..
Thanks and I'm sorry for the "20 questions", I'm just trying to better understand the issue..
More information about the Freeradius-Users