Hi,

ctwm 3.7 crashes on startup on 64-bit sparcs.  The backtrace is:

  #0  0x000000004136a16c in _XData32 () from /usr/X11R6/lib/libX11.so.6
  #1  0x0000000041390a84 in XChangeProperty () from /usr/X11R6/lib/libX11.so.6
  #2  0x0000000000141ea8 in InitGnome () at gnome.c:70
  #3  0x00000000001105cc in main (argc=<value optimized out>, 

This is the because the variable `curws' that is passed to XChangeProperty()
is an int not a long.  The X code deferences the variable as a long and on
a 64-bit sparc this must be aligned on an 8-byte boundary.  Because it is
an int, it is aligned on a 4-byte boundary, causing a bus error.

Also, the manual page for XChangeProperty says:

  "If the specified format is 32, the property data must be a long array."

The fix is trivial and is appended.

I haven't checked for any other similar errors.

Thanks,

J

  - - 8< - - - - - - - - - - - - - Cut here - - - - - - - - - - - - - >8 - -
--- gnome.c.dist        2005-06-21 05:35:19.000000000 +0000
+++ gnome.c     2006-12-15 11:24:46.000000000 +0000
@@ -23,7 +23,7 @@
 
 
 void InitGnome (void) {
-  int curws = 1;
+  long curws = 1;
   virtualScreen *vs;
   Atom _XA_WIN_SUPPORTING_WM_CHECK, _XA_WIN_PROTOCOLS,
     _XA_WIN_PROTOCOLS_LIST[PROTOCOLS_COUNT], _XA_WIN_DESKTOP_BUTTON_PROXY;
  - - 8< - - - - - - - - - - - - - Cut here - - - - - - - - - - - - - >8 - -

-- 
  My other computer also runs NetBSD    /        Sailing at Newbiggin
        http://www.netbsd.org/        /   http://www.newbigginsailingclub.org/


Reply via email to