From Bugzilla Helper: User-Agent: Mozilla/5.0 (X11; U; Linux i686; rv:1.7.3) Gecko/20041020 Firefox/0.10.1 Description of problem: I'm having curious problems with XtVaGetValues (and also by extension XtVaCreatePopupShell) on x86_64, it keeps core dumping. Here's a stacktrace: (gdb) where#0 0x00000037c3f48c43 in _XtCountVaList () from /usr/X11R6/lib64/libXt.so.6#1 0x00000037c3f48746 in XtVaGetValues () from /usr/X11R6/lib64/libXt.so.6#2 0x0000000000400dd4 in main (argc=1, argv=0x7fbffff768) at motifbug.cxx:26 (gdb) packages come from Fedora Core2: [mwsadm@fims64 hdfloader]$ rpm -qa "xorg*" xorg-x11-tools-6.7.0-2 xorg-x11-xauth-6.7.0-2 xorg-x11-75dpi-fonts-6.7.0-2 xorg-x11-Mesa-libGL-6.7.0-2 xorg-x11-font-utils-6.7.0-2 xorg-x11-base-fonts-6.7.0-2 xorg-x11-libs-6.7.0-2 xorg-x11-Mesa-libGL-6.7.0-2 xorg-x11-xfs-6.7.0-2 xorg-x11-6.7.0-2 xorg-x11-libs-data-6.7.0-2 xorg-x11-libs-6.7.0-2 xorg-x11-100dpi-fonts-6.7.0-2 xorg-x11-Mesa-libGLU-6.7.0-2 xorg-x11-twm-6.7.0-2 xorg-x11-devel-6.7.0-2 xorg-x11-Mesa-libGLU-6.7.0-2 Attached is the code to reproduce the bug in a simple pure-X/Motif test code, compiled via: g++ -g -o motifbug motifbug.cxx -L /usr/X11R6/lib64 -lXm -lXt This generates an X warning. Whatever. Add -DDUMP to the cmd line and it will coredump on the XtVaGetValues function. What gives? ifdef'ing a function that comes *after* the location of the core matters? I know X is synchronous but that seems to indicate a compiler problem??? I don't rule out user error, like improper compiler flags, but the example is really simple, so I don't see how. Version-Release number of selected component (if applicable): xorg-x11-6.7.0-2 How reproducible: Always Steps to Reproduce: 1.see attached code 2. 3. Additional info: See https://bugs.freedesktop.org/show_bug.cgi?id=1759 for more (identical) info.
Created attachment 109245 [details] source code to reproduce crash compile via: g++ -g -o motifbug motifbug.cxx -L /usr/X11R6/lib64 -lXm -lXt for core: g++ -DDUMP -g -o motifbug motifbug.cxx -L /usr/X11R6/lib64 -lXm -lXt
The code used 0 to terminate the varargs list, which doesn't fly well in x86_64 land. switching to NULL or (void*)0 works fine.