> i3's restore_xcb_check_cb() (src/restore_layout.c), if it sees that the
> connection to X has been lost, it calls restore_connect() which calls
> libxcb's xcb_connect().
> 
> In libxcb that calls xcb_connect_to_display_with_auth_info() which calls
> _xcb_open(), which calls _xcb_open_unix() and ususally that would be it,
> but if opening the unix socket fails (beause X has fallen over) it tries
> again to connect by calling _xcb_open_tcp() which sets up an AF_INET
> addrinfo and passes that to _xcb_socket()... and you can probably guess
> what happens next.

Nicely studied.

It is quite common for pledge to be applied a little bit too
optimistically to programs.  I think there is a lesson here; that if
something like i3 cannot be assessed, then more complicated is an even
more hopeless cause.  I don't mean just for pledge, but as a general
rule -- we don't know what the code we run is doing.

So now someone can add "inet", which gets us nearly full circle back
to before pledge was applied.  Or, someone can do a revaluation and
see if a redesign would avoid such a late operation...

Reply via email to