I have a window whose process is not responding.  No problem, i3 lets me
kill windows, so I type that key combination.  Usually it works, but this
time it doesn't.

My work-around is to use wininfo to find the window id of the dead but
mapped thing, bc to convert to decimal, use "ps aeww | grep" to find the
process with that window id in its environment, then send it a kill -15
(does nothing visible) and then a kill -9 (still mapped, but process now
shows as defunct).


So the* problem* (obviously not critical, since I have a work-around) is
how could I have avoided the wininfo -> ps -> bc -> kill thing.  Looking at
the code, it looks like i3's kill window is cmd_kill
<https://github.com/i3/i3/blob/next/src/commands.c#L1298>() in commands.c.
(How can that get called with kill_mode_str == "client"?)  The chain is
then to call tree_close_con
<https://github.com/i3/i3/blob/next/src/tree.c#L369>() -> tree_close
<https://github.com/i3/i3/blob/next/src/tree.c#L192>() -> x_window_kill
<https://github.com/i3/i3/blob/next/src/x.c#L283>() -> one_of {
xcb_destroy_window
<http://www.x.org/archive/current/doc/man/man3/xcb_destroy_window.3.xhtml>(),
xcb_kill_client
<http://www.x.org/archive/current/doc/man/man3/xcb_kill_client.3.xhtml>() }.

I think to answer that I'l have to run i3 with logging so I can see which
path it's taking at the end.  And wait for an appropriately hung process.
My initial hypothesis is that the window supports WM_DELETE_WINDOW but,
since the proc is hung, it never processes it.


Anyway, thanks for any insights.  Clearly this is as much about me learning
as anything else.

Jeff Abrahamson
+33 6 24 40 01 57
+44 7920 594 255    <-- only when I'm in the UK

*http://www.ml-week.com/fr/* <http://www.ml-week.com/fr/>*     2-5 novembre
2015*

http://jeff.purple.com/
http://blog.purple.com/jeff/

Reply via email to