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.