Hmm, I think quite a few of us have seen this now. Well, it just
happened again so this time I attached gdb and tried to get a backtrace
to see what was going on.
I found a very curious thing.... the stack trace was huge, in fact, it
had 3162 frames. As you might expect it was recursive. It looked like
this:
#3141 <signal handler called>
#3142 0x4009e977 in rwlock_real_init (rwlock=0x42126020) at
../../include/winbase.h:1932
#3143 0x4009ea48 in __pthread_rwlock_rdlock (rwlock=0x42126020) at
../../scheduler/pthread.c:547
#3144 0x4202365a in __dcigettext () from /lib/i686/libc.so.6
#3145 0x42022ed5 in dcgettext () from /lib/i686/libc.so.6
#3146 0x4207a4b7 in strerror_r () from /lib/i686/libc.so.6
#3147 0x4206148b in perror () from /lib/i686/libc.so.6
#3148 0x40099259 in server_protocol_perror (err=0x400bdc31 "read") at
../../scheduler/client.c:134
#3149 0x40099388 in read_reply_data (buffer=0x405ca5a4, size=64) at
../../scheduler/client.c:195
#3150 0x400993de in wine_server_call (req_ptr=0x405ca5a4) at
../../scheduler/client.c:209
#3151 0x400a8653 in send_debug_event (rec=0x405ca6a8, first_chance=1,
context=0x405ca71c)
at exception.c:137
#3152 0x400a87fa in EXC_RtlRaiseException (rec=0x405ca6a8,
context=0x405ca71c) at exception.c:195
#3153 0x400b6e48 in do_segv (context=0x405ca71c, trap_code=14, cr2=0x18,
err_code=4)
at signal_i386.c:814
#3154 0x400b7324 in segv_handler (__signal=11, __context=
{sc_gs = 143, __gsh = 0, sc_fs = 143, __fsh = 0, sc_es = 43, __esh
= 0, sc_ds = 43, __dsh = 0, sc_edi = 1108452444, sc_esi = 1108500512,
sc_ebp = 1079815400, sc_esp = 1079815380, sc_ebx = 1074654520, sc_edx =
1108500512, sc_ecx = 1108481382, sc_eax = 0, sc_trapno = 14, sc_err = 4,
sc_eip = 1074391415, sc_cs = 35, __csh = 0, sc_eflags = 66050,
esp_at_signal = 1079815380, sc_ss = 43, __ssh = 0, i387 = 0, oldmask =
2415929859, cr2 = 24}) at signal_i386.c:436
#3155 <signal handler called>
So it would appear that there is a crash in the exception handler which
just goes round and round, and clearly at some point garbage is written
to stdout/stderr.
Unfortunately my code-fu is not strong in areas related to
threading/exception handling, so I don't really know what's going wrong,
except that it seems there is a problem in rwlock_real_init (in fact the
line number it gives is in GetProcessHeap()).
Well, I thought somebody may find it useful. BTW, after I attached to
wine (ie stopped it) something was still typing out letter by letter
"xtermxtermxterm" over and over again.... wake up neo :)
thanks -mike
--
Mike Hearn <m.hearn(a)signal.qinetiq.com>
QinetiQ - Malvern Technology Center