Mail Archives: cygwin-developers/2002/08/06/14:34:58
--Boundary_(ID_GBI10KTpt/V3PSUVGzMDHw)
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT
Content-disposition: inline
I believe that I have found the root cause to the following:
http://cygwin.com/ml/cygwin/2002-08/msg00381.html
It seems that pthread_testcancel() will SEGV when called in a non-main
thread or at least one driven by the SCM during service startup. See
attached for a gdb backtrace.
The following CVS commit seems to be the likely culprit:
http://cygwin.com/ml/cygwin-cvs/2002-q3/msg00033.html
which is consistent with the fact that 1.3.12 does not exhibit this
problem but snapshots and CVS do.
I annotated pthread::self() as follows:
pthread *
pthread::self ()
{
pthread *p = (pthread *) TlsGetValue (MT_INTERFACE->thread_self_dwTlsIndex);
debug_printf ("pthread::self: p = %x, i = %ld", p, MT_INTERFACE->thread_self_dwTlsIndex);
return p;
}
When starting ipc-daemon, I get the following:
87 3097903 [unknown (0xD8C)] ipc-daemon 920 pthread::self: pthread::self: p = 0, i = 4
instead of something like the following (from a non-SCM test case):
85 121609 [main] open 2504 pthread::self: pthread::self: p = 610CD61C, i = 4
Note that p is 0 in the former and non-zero in the latter.
Unfortunately, I'm not sure how to fix this problem. Any help will be
greatly appreciated.
Thanks,
Jason
--Boundary_(ID_GBI10KTpt/V3PSUVGzMDHw)
Content-type: text/plain; charset=us-ascii; NAME=ipc-daemon.bt
Content-transfer-encoding: 7BIT
Content-disposition: attachment; filename=ipc-daemon.bt
(gdb) attach 2172
Attaching to program `/home/jt/src/cygipc/ipc-daemon.exe', process 2172
[Switching to thread 2172.0xb4c]
(gdb) c
Continuing.
Program received signal SIGSEGV, Segmentation fault.
[Switching to thread 2172.0x2a4]
pthread::testcancel (this=0x0) at ../../../../src/winsup/cygwin/thread.cc:682
682 if (cancelstate == PTHREAD_CANCEL_DISABLE)
Current language: auto; currently c++
(gdb) bt
#0 pthread::testcancel (this=0x0)
at ../../../../src/winsup/cygwin/thread.cc:682
#1 0x6104b8cc in pthread_testcancel ()
at ../../../../src/winsup/cygwin/pthread.cc:443
#2 0x61040d6d in getpwuid32 (uid=18)
at ../../../../src/winsup/cygwin/passwd.cc:252
#3 0x61055370 in is_grp_member (uid=18, gid=18)
at ../../../../src/winsup/cygwin/sec_helper.cc:262
#4 0x6105b0a8 in alloc_sd (uid=18, gid=18, attribute=438, sd_ret=0x2043ea5c,
sd_size_ret=0x2043ea58) at ../../../../src/winsup/cygwin/security.cc:1655
#5 0x6105b7fe in set_security_attribute (attribute=438, psa=0x2043fa94,
sd_buf=0x2043ea5c, sd_buf_size=4096)
at ../../../../src/winsup/cygwin/security.cc:1797
#6 0x610139f7 in fhandler_base::open (this=0x61611468, pc=0x2043fb04,
flags=1049090, mode=438) at ../../../../src/winsup/cygwin/fhandler.cc:432
#7 0x6101aa3e in fhandler_disk_file::open (this=0x61611468,
real_path=0x2043fb04, flags=514, mode=438)
at ../../../../src/winsup/cygwin/fhandler_disk_file.cc:368
#8 0x6106be65 in _open (unix_path=0x401341 "/tmp/MultiFileSem", flags=514)
at ../../../../src/winsup/cygwin/syscalls.cc:523
#9 0x00401861 in work_main () at ipc-daemon.c:251
#10 0x004026df in service_main (argc=1, argv=0x236840) at ipc-daemon.c:607
#11 0x77dc9571 in _system_dlls__ ()
--Boundary_(ID_GBI10KTpt/V3PSUVGzMDHw)--
- Raw text -