Hello there,
I would like to help with the SIGSEGV problem which occurs on some
Linux distributions with current wine.
I'm not using any official distribution, but I'm maintaining my own
one,
called Sinux, which is also affected by this problem - wine crashes
instantly and immediately. However, calling wine-pthread instead of
wine works.
I think that the problem is caused by the latest glibc, I'm using
a relatively fresh CVS checkout of 2.3.3 branch (i.e. cvs HEAD about
a month old).
I tried to debug the problem but it's very strange.
I've investigated out that the binary called wine executes something
called wine-preloader, which executes wine-{p|k}thread depending on the
glibc threading library installed (mine is using pthread because NPTL
threads are used here).
The problem is in the wine-preloader binary, it immediately segfaults.
I tried to find a problem with gdb but I failed. It crashes even before
the start point is reached, i.e. somewhere in the dynamic loader I suppose.
See the following:
root@arcus:/usr/src/emul/wine/loader# gdb ./wine-preloader
GNU gdb 6.1
Copyright 2004 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 "i686-pc-linux-gnu"...Using host
libthread_db library "/lib/libthread_db.so.1".
(gdb) l 146
146 void _start();
147 extern char _end[];
148 __ASM_GLOBAL_FUNC(_start,
149 "\tmovl %esp,%eax\n"
150 "\tleal -128(%esp),%esp\n" /* allocate some
space for extra aux values */
151 "\tpushl %eax\n" /* orig stack
pointer */
152 "\tpushl %esp\n" /* ptr to orig
stack pointer */
153 "\tcall wld_start\n"
154 "\tpopl %ecx\n" /* remove ptr to
stack pointer */
155 "\tpopl %esp\n" /* new stack
pointer */
(gdb) break 147
Breakpoint 1 at 0x780001ef: file preloader.c, line 147.
(gdb) run ./wine-pthread
Starting program: /usr/src/emul/wine/loader/wine-preloader ./wine-pthread
Program received signal SIGSEGV, Segmentation fault.
0x3c49f242 in ?? ()
(gdb) bt
#0 0x3c49f242 in ?? ()
#1 0x626f6c67 in ?? ()
#2 0x725f6c61 in ?? ()
#3 0x6572006f in ?? ()
#4 0x6f6c6c61 in ?? ()
#5 0x645f0063 in ?? ()
#6 0x6c745f6c in ?? ()
#7 0x65735f73 in ?? ()
#8 0x00707574 in ?? ()
#9 0x5f6c645f in ?? ()
#10 0x646c7472 in ?? ()
#11 0x5f69645f in ?? ()
#12 0x69726573 in ?? ()
[hudreds of bogus stack frames deleted]
#204 0x7800000d in _start () at preloader.c:210
#205 0xbffdde1c in ?? ()
#206 0xbffddea4 in ?? ()
#207 0x00000000 in ?? ()
#208 0x00000000 in ?? ()
#209 0x00000000 in ?? ()
#210 0x00000000 in ?? ()
[many thousands of bogus stack frames deleted]
.... The backtrace is totally useless.
I don't know how to debug anymore. If anybody has a clue what to do next,
please
tell me, I will try it to find more.
With regards, Pavel Troller