On Thu 11 Jul 2019 at 20:15:36 +0200, Rhialto wrote:
> Indeed, I can't reproduce it anymore now with this scenario. I'm pretty
> sure it is the same bug that happened "randomly" before.

but I did find some other scenario that does weird things :-(

It's not an OTP assertion failure but some sort of loop or deadlock or
something.

Scenario: start with fullscreen Xine ("F"), with open on top of that its
Panel window ("P) with its Navigator side-window ("N") with even more
DVD controls. In Xine's Panel you get that window if you click the N in
its bottom right. The problem does not occur without N.

Now, maybe first some focussing on N and P might be needed, or maybe it
is not required. Then with the mouse on F, hit the "f" key to switch
from fullscreen to a normal window.

Now ctwm freezes. F and N get un-painted, but F doesn't change and in
fact no other events seem to have any effect.

I have ctwm running in gdb and that shows nothing weird. But if I
interrupt it and get a stack trace, it is in a location where it ought
not be very long ever (NetBSD now ships with debugging symbols for all
system libraries and programs, so even within X libs there is useful
info):

(gdb) run --replace
Starting program: /mnt/vol1/rhialto/cvs/other/ctwm/bzr/trunk/build/ctwm 
--replace
load: 0.21  cmd: ctwm 1719 [select] 0.18u 0.22s 0% 3580k

Program received signal SIGINFO, Information request.
0x000076704223e28a in poll () from /usr/lib/libc.so.12
(gdb) bt
#0  0x000076704223e28a in poll () from /usr/lib/libc.so.12
#1  0x0000767041e18b91 in _xcb_conn_wait (c=c@entry=0x76704451f000, 
    cond=cond@entry=0x767044520128, vector=vector@entry=0x7f7fff5f9c78, 
    count=count@entry=0x7f7fff5f9c74)
    at /usr/xsrc/external/mit/libxcb/dist/src/xcb_conn.c:479
#2  0x0000767041e16517 in _xcb_out_send (c=c@entry=0x76704451f000, 
    vector=vector@entry=0x7f7fff5f9cf0, count=count@entry=3)
    at /usr/xsrc/external/mit/libxcb/dist/src/xcb_out.c:458
#3  0x0000767041e16588 in xcb_writev (c=c@entry=0x76704451f000, 
    vector=vector@entry=0x7f7fff5f9cf0, count=count@entry=3, 
    requests=requests@entry=819)
    at /usr/xsrc/external/mit/libxcb/dist/src/xcb_out.c:406
#4  0x0000767043e48f76 in _XSend (dpy=dpy@entry=0x76704451d000, 
data=data@entry=0x0, 
    size=size@entry=0) at /usr/xsrc/external/mit/libX11/dist/src/xcb_io.c:486
#5  0x0000767043e49272 in _XFlush (dpy=0x76704451d000)
    at /usr/xsrc/external/mit/libX11/dist/src/xcb_io.c:503
#6  0x0000767043e6da55 in _XGetRequest (dpy=dpy@entry=0x76704451d000, 
    type=type@entry=12 '\f', len=len@entry=12)
    at /usr/xsrc/external/mit/libX11/dist/src/XlibInt.c:1707
#7  0x0000767043e290b5 in XConfigureWindow (dpy=0x76704451d000, w=16777841, 
    mask=mask@entry=96, changes=changes@entry=0x7f7fff5f9e00)
    at /usr/xsrc/external/mit/libX11/dist/src/ReconfWin.c:48
#8  0x00000000004220d3 in InsertOwlAbove (owl=0x767044583a40, 
other_owl=0x767044583a10)
    at /mnt/vol1/rhialto/cvs/other/ctwm/bzr/trunk/otp.c:483
#9  0x000000000042420d in OtpFocusWindowBE (oldprio=<optimized out>, 
    twm_win=0x767044540c00, twm_win=0x767044540c00)
    at /mnt/vol1/rhialto/cvs/other/ctwm/bzr/trunk/otp.c:1675
#10 0x00000000004242b3 in OtpFocusWindow (twm_win=twm_win@entry=0x767044540c00)
    at /mnt/vol1/rhialto/cvs/other/ctwm/bzr/trunk/otp.c:1718
#11 0x000000000042f8de in SetFocus (tmp_win=0x767044540c00, tim=<optimized out>)
    at /mnt/vol1/rhialto/cvs/other/ctwm/bzr/trunk/win_ops.c:171
#12 0x00000000004096b0 in HandleEnterNotify ()
    at /mnt/vol1/rhialto/cvs/other/ctwm/bzr/trunk/event_handlers.c:3304
#13 0x0000000000408804 in DispatchEvent ()
    at /mnt/vol1/rhialto/cvs/other/ctwm/bzr/trunk/event_core.c:331
#14 0x0000000000408aa8 in HandleEvents ()
    at /mnt/vol1/rhialto/cvs/other/ctwm/bzr/trunk/event_core.c:203
#15 0x0000000000407eff in ctwm_main (argc=<optimized out>, argv=<optimized out>)
    at /mnt/vol1/rhialto/cvs/other/ctwm/bzr/trunk/ctwm_main.c:1055
#16 0x00000000004061ab in ___start ()
#17 0x00007670449ed000 in ?? ()
#18 0x0000000000000002 in ?? ()
#19 0x00007f7fff5fa838 in ?? ()
#20 0x00007f7fff5fa86e in ?? ()
#21 0x0000000000000000 in ?? ()
(gdb)

Maybe the XConfigureWindow() call has some impossible arguments that are
not caught in Xlib? It looks like a reply never arrives, or maybe there
is a loop of some kind. 

One time I caught it at

(gdb) run
Starting program: /mnt/vol1/rhialto/cvs/other/ctwm/bzr/trunk/build/ctwm 
load: 0.86  cmd: ctwm 2269 [0x421e16/0] 0.13u 0.09s 0% 3588k

Program received signal SIGINFO, Information request.
XFindContext (display=0x768b6991d000, rid=27264372, context=-1, 
    data=data@entry=0x7f7fff372c38)
    at /usr/xsrc/external/mit/libX11/dist/src/Context.c:252
252     /usr/xsrc/external/mit/libX11/dist/src/Context.c: No such file or 
directory.
(gdb) bt
#0  XFindContext (display=0x768b6991d000, rid=27264372, context=-1, 
    data=data@entry=0x7f7fff372c38)
    at /usr/xsrc/external/mit/libX11/dist/src/Context.c:252
#1  0x0000000000432cdc in GetTwmWindow (w=<optimized out>)
    at /mnt/vol1/rhialto/cvs/other/ctwm/bzr/trunk/win_utils.c:195
#2  0x0000000000421e8f in OwlEffectivePriority (owl=owl@entry=0x768b69983a40)
    at /mnt/vol1/rhialto/cvs/other/ctwm/bzr/trunk/otp.c:1797
#3  0x0000000000422030 in InsertOwlAbove (owl=0x768b69983a10, 
other_owl=0x768b69983a40)
    at /mnt/vol1/rhialto/cvs/other/ctwm/bzr/trunk/otp.c:458
#4  0x000000000042420d in OtpFocusWindowBE (oldprio=<optimized out>, 
    twm_win=0x768b69940c00, twm_win=0x768b69940c00)
    at /mnt/vol1/rhialto/cvs/other/ctwm/bzr/trunk/otp.c:1675
#5  0x00000000004242b3 in OtpFocusWindow (twm_win=twm_win@entry=0x768b69940c00)
    at /mnt/vol1/rhialto/cvs/other/ctwm/bzr/trunk/otp.c:1718
#6  0x000000000042f8de in SetFocus (tmp_win=0x768b69940c00, tim=<optimized out>)
    at /mnt/vol1/rhialto/cvs/other/ctwm/bzr/trunk/win_ops.c:171
#7  0x00000000004096b0 in HandleEnterNotify ()
    at /mnt/vol1/rhialto/cvs/other/ctwm/bzr/trunk/event_handlers.c:3304
#8  0x0000000000408804 in DispatchEvent ()
    at /mnt/vol1/rhialto/cvs/other/ctwm/bzr/trunk/event_core.c:331
#9  0x0000000000408aa8 in HandleEvents ()
    at /mnt/vol1/rhialto/cvs/other/ctwm/bzr/trunk/event_core.c:203
#10 0x0000000000407eff in ctwm_main (argc=<optimized out>, argv=<optimized out>)
    at /mnt/vol1/rhialto/cvs/other/ctwm/bzr/trunk/ctwm_main.c:1055
#11 0x00000000004061ab in ___start ()
#12 0x0000768b69d23000 in ?? ()
#13 0x0000000000000001 in ?? ()
#14 0x00007f7fff373690 in ?? ()
#15 0x0000000000000000 in ?? ()

so maybe that is a sign of a loop in ctwm indeed. It might be getting
confused while getting the OTP stack in order with now 3 windows that
have the wrong priority. (Maybe restacking needs to happen by first
removing all transients, then re-adding them all, instead of one by
one??)

-Olaf.
-- 
___ Olaf 'Rhialto' Seibert  -- "What good is a Ring of Power
\X/ rhialto/at/falu.nl      -- if you're unable...to Speak." - Agent Elrond

Attachment: signature.asc
Description: PGP signature

Reply via email to