Alan DeKok <[email protected]> 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

-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

Reply via email to