Am Mittwoch, 29. Dezember 2004 21:26 schrieb Jacek Caban:
Hello.
Hello,
this problem confuses me. I have started regession testing. It turn out to be a problem of 'out of tree' builds and the name of the directory containing the cvs tree. If i use the cvs tree as checked out from winehq widl crashes. If i rename the main directory wine of the cvs tree to wine-saved1 widl works. It looks like the length of the name makes this difference wine-123456 works also. Shorter names crash widl but in different files. If i build wine in the cvs tree itself it works too.
I tried to reproduce a youre situation, but even with the same directory names widl didn't crash.
Logfile of gdb session attached.
Thanks Stefan
GNU gdb 5.3.92 Copyright 2003 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i586-suse-linux"... (gdb) r Starting program: /usr/src/wine/wine-build/tools/widl/widl -I../../wine/include -I. -I../../wine/include -I../include -h -H oaidl.h ../../wine/include/oaidl.idl
Program received signal SIGSEGV, Segmentation fault. 0x4009e05a in _int_malloc () from /lib/i686/libc.so.6 (gdb) bt #0 0x4009e05a in _int_malloc () from /lib/i686/libc.so.6 #1 0x4009d06c in malloc () from /lib/i686/libc.so.6 #2 0x080525a0 in pp_xmalloc (size=11) at ../../../wine/libs/wpp/preproc.c:80 #3 0x0805264a in pp_xstrdup (str=0xbfffec68 ""11:25:54"") at ../../../wine/libs/wpp/preproc.c:108
It is probably caused by overwritting the allocated memory. The last changes of widl look well so I think it is some old hidden problem. Lookng at code I found a potential bug, but I'm not sure if it a bug. In parsers, both widl's and wpp's, strings are not duplicated whie adding to structures. If it helps, I'll see if it is correct at all. This is included in diffs: wppppy.diff and widl.diff. Could you try it? I also found another small bug in wpp, but it's not what we're looking for. I included it with some code cleanup in wpppreproc.diff.
Thanks, Jacek
Hello Jacek,
good shot, applying the three patches fixes my build problem.
Many thanks Stefan