From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16440 invoked by alias); 13 Jan 2005 12:52:30 -0000 Mailing-List: contact glibc-bugs-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Post: List-Help: , Sender: glibc-bugs-owner@sources.redhat.com Received: (qmail 16352 invoked by uid 48); 13 Jan 2005 12:52:26 -0000 Date: Thu, 13 Jan 2005 12:52:00 -0000 Message-ID: <20050113125226.16351.qmail@sourceware.org> From: "alexei dot khlebnikov at datacon dot at" To: glibc-bugs@sources.redhat.com In-Reply-To: <20050112104719.654.alexei.khlebnikov@datacon.at> References: <20050112104719.654.alexei.khlebnikov@datacon.at> Reply-To: sourceware-bugzilla@sources.redhat.com Subject: [Bug nptl/654] Cancelling nptl thread on dlclose() leads to application hangup X-Bugzilla-Reason: CC X-SW-Source: 2005-01/txt/msg00059.txt.bz2 List-Id: ------- Additional Comments From alexei dot khlebnikov at datacon dot at 2005-01-13 12:52 ------- I've investigated the problem further. I've found a (not very precise) place in the libc where the hangup takes place. It's the file nptl/pthread_join.c, line 86, which looks like --- /* Wait for the child. */ lll_wait_tid (pd->tid); --- lll_wait_tid is a macro with assembler code which I don't understand so far: --- /* The kernel notifies a process with uses CLONE_CLEARTID via futex wakeup when the clone terminates. The memory location contains the thread ID while the clone is running and is reset to zero afterwards. The macro parameter must not have any side effect. */ #define lll_wait_tid(tid) \ do { \ int __ignore; \ register __typeof (tid) _tid asm ("edx") = (tid); \ if (_tid != 0) \ __asm __volatile (LLL_EBX_LOAD \ "1:\tmovl %1, %%eax\n\t" \ LLL_ENTER_KERNEL \ "cmpl $0, (%%ebx)\n\t" \ "jne,pn 1b\n\t" \ LLL_EBX_LOAD \ : "=&a" (__ignore) \ : "i" (SYS_futex), LLL_EBX_REG (&tid), "S" (0), \ "c" (FUTEX_WAIT), "d" (_tid), \ "i" (offsetof (tcbhead_t, sysinfo))); \ } while (0) --- -- http://sources.redhat.com/bugzilla/show_bug.cgi?id=654 ------- You are receiving this mail because: ------- You are on the CC list for the bug, or are watching someone who is.