Alan DeKok <aland@deployingradius.com> writes:
Bjørn Mork wrote:
Yes. Just to be sure, I've repeated the process and the trace is the same: Useless: ... Which I guess tells us that there is some other path here than through fr_event_loop_exit and radius_signal_self with flag==2?
For the life of me, I can't see another path through the code.
Are you sending it period HUPs?
No
The only other possibility is some memory over-write. You should use gdb...
$ gdb --args radiusd -f (gdb) break fr_event_loop (gdb) run (gdb) watch el->exit (gdb) del 1 (gdb) cont ... (gdb) bt
That should cause it to stop as soon as *anything* stomps on the event loop flag that says "stop the event loop"
Will do. However, I think I found one other possibility. This code in fr_event_loop() will exit if the select() fails: rcode = select(el->maxfd + 1, &read_fds, NULL, NULL, wake); if ((rcode < 0) && (errno != EINTR)) { el->dispatch = 0; return 0; } Might this happen due to a dead home server fd in the &read_fds? Bjørn