Re: Bug#490601: fails with many xio errors when started from xdm
Ben Hutchings <ben-/[email protected]>
| Newsgroups | gmane.comp.window-managers.ion.general |
|---|---|
| Message-ID | <[email protected]> |
I got a report of a weird and unreproducible error in Ion3 startup:
http://bugs.debian.org/490601
BadMatch is not a documented error code for XGetWindowProperty which
sends X_GetProperty requests. However, the implementation in Xorg
appears to return BadMatch if and only if it's passed a reference to a
drawable that isn't a window:
http://gitweb.freedesktop.org/?p=xorg/xserver.git;a=blob;hb=8822110d7d6b684f373fc883aeb7cab9734e9ddb;f=dix/dixutils.c#l197
I don't understand how the server coordinates window changes with the
WM. Is it possible that a window can be completely deleted before the
WM has handled it? In that case there is presumably a race condition
where a window could disppear and another drawable be created with the
same id.
This seems like a bug in Xorg, but we presumably need to work around it.
The obvious patch is below.
Ben.
--- ion3.orig/ioncore/rootwin.c
+++ ion3/ioncore/rootwin.c
@@ -58,10 +58,11 @@
static char msg[128], request[64], num[32];
/* Just ignore bad window and similar errors; makes the rest of
- * the code simpler.
+ * the code simpler. Due to a Xorg bug, window lookups may fail
+ * with BadMatch instead of BadWindow.
*/
if((ev->error_code==BadWindow ||
- (ev->error_code==BadMatch && ev->request_code==X_SetInputFocus) ||
+ ev->error_code==BadMatch ||
(ev->error_code==BadDrawable && ev->request_code==X_GetGeometry)) &&
ignore_badwindow)
return 0;
--- END ---
--
Ben Hutchings
Once a job is fouled up, anything done to improve it makes it worse.
signature.asc
(application/pgp-signature, 189 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iD8DBQBIg9Gk79ZNCRIGYgcRAtPoAKC3keZDxZ0Wb6N4S0SEflfGhyPcGwCdELRP aurZcUvGxCPtmNlSMOFp6UQ= =Hle7 -----END PGP SIGNATURE-----