event_dispatch() in main(), frontend() and engine() returns 0.

the man page says:

     In order to process events, an application needs to call
     event_dispatch().  This function only returns on error, and should
     replace the event core of the application program.

which apparently is a lie. No idea how this can happen.


I guess we are hitting this in event_base_loop():

                if (base->event_count_active) {
                        event_process_active(base);
                        if (!base->event_count_active && (flags & EVLOOP_ONCE))
                                done = 1;
                } else if (flags & EVLOOP_NONBLOCK)
                        done = 1;

On 2024-09-04 14:44 +02, Stefan Fritsch <s...@openbsd.org> wrote:
> Hi,
>
> during network driver testing I sometimes do a stress test with
>
> while true; do ifconfig vio0 -inet; done &
> while true; do ifconfig vio0 inet autoconf; done &
> while true; do ifconfig vio0 -inet6; done &
> while true; do ifconfig vio0 inet6 autoconf; done &
> while true; do ifconfig vio0 down; done &
> while true; do ifconfig vio0 up; done &
>
> After I stop these jobs, "ifconfig vio0 autoconf" does not work any more 
> because dhcpleased has died:
>
> Sep  4 14:20:39 oatest dhcpleased[19462]: bpf_send_packet: writev: Network is 
> down
> Sep  4 14:20:39 oatest dhcpleased[19462]: bpf_send_packet: writev: Network is 
> down
> Sep  4 14:20:39 oatest dhcpleased[19462]: bpf_send_packet: writev: Network is 
> down
> Sep  4 14:20:39 oatest dhcpleased[19462]: bpf_send_packet: writev: Network is 
> down
> Sep  4 14:20:40 oatest dhcpleased[19462]: bpf_send_packet: writev: Network is 
> down
> Sep  4 14:20:40 oatest dhcpleased[80648]: fatal in main: msgbuf_write: Broken 
> pipe
>
> This is obviously not a severe bug, but slaacd survives the stress test. 
> Maybe dhcpleased could improve its error handling, too?
>
> Cheers,
> Stefan
>

-- 
In my defence, I have been left unsupervised.

Reply via email to