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
signature.asc
Description: PGP signature
