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