Hi,

I am getting yet another crash in AOLServer 4.5.0.
This time it crashes after exiting from threads started with
"ns_thread begin" or "ns_thread begindetached".

Any Suggestions?

Thanks,
~ Alex.

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1086359904 (LWP 19612)]
0x00002aaaaae6c2a7 in Tcl_AsyncDelete (async=0x54e6c0) at
/srv/DIST/tcl8.4.13/unix/../generic/tclAsync.c:297
297             while (prevPtr->nextPtr != asyncPtr) {
(gdb) back
#0  0x00002aaaaae6c2a7 in Tcl_AsyncDelete (async=0x54e6c0) at
/srv/DIST/tcl8.4.13/unix/../generic/tclAsync.c:297
#1  0x00002aaaad48190e in TclX_SelectInit () from /usr/lib/libtclx8.4.so.1
#2  0x00002aaaaae6cfe2 in DeleteInterpProc (interp=0x647420) at
/srv/DIST/tcl8.4.13/unix/../generic/tclBasic.c:1037
#3  0x00002aaaaaee8416 in Tcl_EventuallyFree (clientData=0x647420,
freeProc=0x2aaaaae6ce5f <DeleteInterpProc>)
   at /srv/DIST/tcl8.4.13/unix/../generic/tclPreserve.c:302
#4  0x00002aaaaae6ce5d in Tcl_DeleteInterp (interp=0x647420) at
/srv/DIST/tcl8.4.13/unix/../generic/tclBasic.c:924
#5  0x00002aaaaabf863f in NsConnThread (arg=<value optimized out>) at
queue.c:590
#6  0x00002aaaaad36492 in ThreadMain (arg=0x515fc0) at pthread.c:469
#7  0x00002aaaab141b1c in start_thread () from /lib/libpthread.so.0
#8  0x00002aaaab5b09b2 in clone () from /lib/libc.so.6
#9  0x0000000000000000 in ?? ()
(gdb) print prevPtr
$1 = (AsyncHandler *) 0x0
(gdb) print asyncPtr
$2 = (AsyncHandler *) 0x54e6c0
(gdb) print tsdPtr
$3 = (ThreadSpecificData *) 0x7569c0
(gdb) print tsdPtr->firstHandler
$4 = (AsyncHandler *) 0x662b00


Here is the bit of code that fails. <<<<<<<<<< marks line 297 which is
probably the cause

void
Tcl_AsyncDelete(async)
   Tcl_AsyncHandler async;             /* Token for handler to delete. */
{
   ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey);
   AsyncHandler *asyncPtr = (AsyncHandler *) async;
   AsyncHandler *prevPtr;

   Tcl_MutexLock(&tsdPtr->asyncMutex);
   if (tsdPtr->firstHandler == asyncPtr) {
       tsdPtr->firstHandler = asyncPtr->nextPtr;
       if (tsdPtr->firstHandler == NULL) {
           tsdPtr->lastHandler = NULL;
       }
   } else {
       prevPtr = tsdPtr->firstHandler;
       while (prevPtr->nextPtr != asyncPtr) { <<<<<<<<<<<<<<<<<
           prevPtr = prevPtr->nextPtr;
       }
       prevPtr->nextPtr = asyncPtr->nextPtr;
       if (tsdPtr->lastHandler == asyncPtr) {
           tsdPtr->lastHandler = prevPtr;
       }
   }
   Tcl_MutexUnlock(&tsdPtr->asyncMutex);
   ckfree((char *) asyncPtr);
}


--
AOLserver - http://www.aolserver.com/

To Remove yourself from this list, simply send an email to <[EMAIL PROTECTED]> 
with the
body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: 
field of your email blank.

Reply via email to