[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#369726: xcircuit 3.6.24-1 unusable on amd64



tags 369276 patch
quit

On Wed, May 31, 2006 at 07:02:53PM +0200, Michael Ablassmeier wrote:
> package: xcircuit
> severity: grave

> I don't mean to complain, but the recent upload of xcircuit 3.6.24-1
> to unstable is completely unusable for me on amd64.  This is unlike
> any previous version of xcircuit.  I get segfaults or illegal
> instruction crashes within half-a-dozen X actions.

> This is true even when I rebuild from sources, either in or out
> of the Debian package framework.  I note a large number of 64-bit
> concerns flagged by the compiler (gcc-4.0.4), about half of them
> in the Xw widget set.  I tried fixing some of the worst of these,
> and using gdb to find details of the crash, but have not yet
> succeeded in finding or fixing the problem(s).

> This leaves me with a number of questions:
> 1. does anyone else see this behavior?
> 2. is xcircuit the only Debian package using Xw?
> 3. where did upstream (that's you, Tim) get that copy of Xw
>    (and are you maintaining that copy yourself)?
> 4. will upstream accept 64-bit cleanups (and do you have
>    access to a 64-bit machine to test them)?
> 5. will this be the kick in the pants I need to become
>    a Debian Developer and adopt this package?

Backtrace on amd64:

(gdb) bt
#0  0x000000000047b626 in Wprintf (format=0x6c1228 "\177-A") at xtgui.c:1391
#1  0x000000000048726b in Enter (w=0x6bc210, event=0x7fffffa82be0)
    at MenuBtn.c:1479
#2  0x00002b082476aad6 in _XtMatchAtom () from /usr/lib/libXt.so.6
#3  0x00002b082476b067 in _XtMatchAtom () from /usr/lib/libXt.so.6
#4  0x00002b082476b753 in _XtTranslateEvent () from /usr/lib/libXt.so.6
#5  0x00002b0824744e6b in XtDispatchEventToWidget () from /usr/lib/libXt.so.6
#6  0x00002b08247454a1 in _XtOnGrabList () from /usr/lib/libXt.so.6
#7  0x00002b08247457be in XtDispatchEvent () from /usr/lib/libXt.so.6
#8  0x00002b0824745be3 in XtAppMainLoop () from /usr/lib/libXt.so.6
#9  0x000000000047e26e in local_xloop () at xtgui.c:1994
#10 0x000000000047e41c in main (argc=1, argv=0x7fffffa82df8) at xtgui.c:2070


(gdb) up
#1  0x000000000048726b in Enter (w=0x6bc210, event=0x7fffffa82be0)
    at MenuBtn.c:1479
1479          mbutton->menubutton.hintProc(mbutton->menubutton.hint);
(gdb) print mbutton->menubutton.hintProc
$9 = (XwStrProc) 0x47b5db <Wprintf>
(gdb) print mbutton->menubutton.hint    
$10 = 0x6bbaa0 "set fill properties"
(gdb)

And the prototype of Wprintf() is:

  void Wprintf(char *format, ...);

The bug here is that xcircuit is incorrectly assuming that it's ok to call a
function that uses varargs using the regular calling convention, which is
obviously false for amd64.

The attached patch fixes this, and gives me a minimally-usable package on
amd64.

-- 
Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
vorlon@debian.org                                   http://www.debian.org/
diff -u xcircuit-3.6.24/debian/changelog xcircuit-3.6.24/debian/changelog
--- xcircuit-3.6.24/debian/changelog
+++ xcircuit-3.6.24/debian/changelog
@@ -1,3 +1,11 @@
+xcircuit (3.6.24-1.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Fix gross prototype mismatch bug, so the program is usable again on
+    amd64.  Closes: 369276.
+
+ -- Steve Langasek <vorlon@debian.org>  Wed, 31 May 2006 21:29:13 -0700
+
 xcircuit (3.6.24-1) unstable; urgency=low
 
   * QA Upload 
only in patch2:
unchanged:
--- xcircuit-3.6.24.orig/Xw/XwP.h
+++ xcircuit-3.6.24/Xw/XwP.h
@@ -322,7 +322,7 @@
 
 typedef void (*XwStrProc)(
 #if NeedFunctionPrototypes
-    String     /* hint */
+    char *format, ...	/* hint */
 #endif
 );
 

Attachment: signature.asc
Description: Digital signature


Reply to: