> 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...
