Hello misc@,

I'm using cwm on amd64 -current. I'm using the group feature and when
using a "Java" application, cycling back to the group with this window
cores dump cwm:
(gdb) bt
#0  0x000000020c8f354e in XRestackWindows () from /usr/X11R6/lib/libX11.so.15.0
#1  0x000000000040919d in group_show (sc=0x20ecf0400, gc=0x20ecf0530)
    at /usr/xenocara/app/cwm/group.c:138
#2  0x00000000004089af in xev_handle_keypress (ee=0x7f7ffffdaab0)
    at /usr/xenocara/app/cwm/xevents.c:313
#3  0x0000000000408add in xev_loop () at /usr/xenocara/app/cwm/xevents.c:423
#4  0x0000000000403d3b in main (argc=3, argv=Variable "argv" is not available.
)
    at /usr/xenocara/app/cwm/calmwm.c:90

Apparently, gc->nhidden is more or less corrupted:
(gdb) p *(struct group_ctx *) gc
$2 = {entry = {tqe_next = 0x20ecf0560, tqe_prev = 0x20ecf0500}, clients = {
    tqh_first = 0x2099aa800, tqh_last = 0x2099aac10}, shortcut = 2,
  hidden = 1, nhidden = 5393, highstack = 1}
(gdb) p gc->clients->tqh_first
$3 = (struct client_ctx *) 0x2099aa800
(gdb) p gc->clients->tqh_first->entry->tqe_next
$4 = (struct client_ctx *) 0x2099aa600
(gdb) p gc->clients->tqh_first->entry->tqe_next->entry->tqe_next
$5 = (struct client_ctx *) 0x2099aa000
(gdb) p 
gc->clients->tqh_first->entry->tqe_next->entry->tqe_next->entry->tqe_next
$6 = (struct client_ctx *) 0x2099aac00
(gdb) p 
gc->clients->tqh_first->entry->tqe_next->entry->tqe_next->entry->tqe_next->entry->tqe_next
$7 = (struct client_ctx *) 0x0

So I have 4 windows in this group, all of which are either:
(gdb) p gc->clients->tqh_first->app_name
$8 = 0x201c08680 "sun-awt-X11-XFramePeer"
(gdb) p gc->clients->tqh_first->entry->tqe_next->app_name
$9 = 0x201c08720 "sun-awt-X11-XDialogPeer"

Actually, only 2 windows were displayed at this time, so I guess this is
related to issues between Java and X11 I always heard about.
The nhidden variable is only incremented in 2 places : group_hide and
group_movetogroup, so I guess the root cause lie there. However I don't
know enough of cwm internals to dig deeper. Therefore, I temporarily
made the following patch:

Index: group.c
===================================================================
RCS file: /cvs/xenocara/app/cwm/group.c,v
retrieving revision 1.54
diff -u -p -r1.54 group.c
--- group.c     12 Oct 2011 15:43:50 -0000      1.54
+++ group.c     21 Dec 2011 22:54:11 -0000
@@ -135,7 +135,7 @@ group_show(struct screen_ctx *sc, struct
                }
        }

-       XRestackWindows(X_Dpy, winlist, gc->nhidden);
+       XRestackWindows(X_Dpy, winlist, gc->highstack);
        xfree(winlist);

        gc->hidden = 0;

Anyone has a proper fix?


Cheers,
-- 
Thomas Jeunet

Reply via email to