From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32713 invoked by alias); 16 Aug 2012 06:47:53 -0000 Received: (qmail 32689 invoked by uid 22791); 16 Aug 2012 06:47:51 -0000 X-SWARE-Spam-Status: No, hits=-3.0 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00,TW_BF X-Spam-Check-By: sourceware.org Received: from localhost (HELO sourceware.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 16 Aug 2012 06:47:37 +0000 From: "sonicwavezor at gmail dot com" To: glibc-bugs@sources.redhat.com Subject: [Bug nptl/14477] New: Cancelling phtread_cond_wait() hangs with PRIO_INHERIT mutex Date: Thu, 16 Aug 2012 06:47:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: glibc X-Bugzilla-Component: nptl X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: sonicwavezor at gmail dot com X-Bugzilla-Status: NEW X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: unassigned at sourceware dot org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: X-Bugzilla-URL: http://sourceware.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Mailing-List: contact glibc-bugs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: glibc-bugs-owner@sourceware.org X-SW-Source: 2012-08/txt/msg00090.txt.bz2 http://sourceware.org/bugzilla/show_bug.cgi?id=14477 Bug #: 14477 Summary: Cancelling phtread_cond_wait() hangs with PRIO_INHERIT mutex Product: glibc Version: 2.14 Status: NEW Severity: normal Priority: P2 Component: nptl AssignedTo: unassigned@sourceware.org ReportedBy: sonicwavezor@gmail.com CC: drepper.fsp@gmail.com Classification: Unclassified Created attachment 6581 --> http://sourceware.org/bugzilla/attachment.cgi?id=6581 Test case I have a problem canceling threads waiting in a pthread_cond_wait(), that use mutexes with the `PTHREAD_PRIO_INHERIT` attribute set. This only happens on certain platforms though. I've posted this on stackoverflow also (http://stackoverflow.com/questions/11878445/cancelling-pthread-cond-wait-hangs-with-prio-inherit-mutex ), posted to the libc-help mailing list, and was told to file a bugreport in here. I haven't yet had the chance to try out the newest versions (been using 2.13 and 2.14), but if anyone could give a few hints as to whether this might be fixed in the current versions (or isn't broken in an older version), I'd be happy to hear about it! The attached minimal example demonstrates my problem: (compile with g++ pthread_cond_wait.cpp -lpthread) Every time I run it, main() hangs on pthread_join(). A gdb backtrace shows the following: Thread 2 (Thread 0xb7d15b70 (LWP 257)): #0 0xb7fde430 in __kernel_vsyscall () #1 0xb7fcf362 in __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/lowlevellock.S:142 #2 0xb7fcc9f9 in __condvar_w_cleanup () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:434 #3 0x08048fbe in threadFunc (arg=0x0) at /home/pthread_cond_wait.cpp:22 #4 0xb7fc8ca0 in start_thread (arg=0xb7d15b70) at pthread_create.c:301 #5 0xb7de73ae in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130 Thread 1 (Thread 0xb7d166d0 (LWP 254)): #0 0xb7fde430 in __kernel_vsyscall () #1 0xb7fc9d64 in pthread_join (threadid=3083950960, thread_return=0x0) at pthread_join.c:89 #2 0x0804914a in main () at /home/pthread_cond_wait.cpp:41 If PTHREAD_PRIO_INHERIT isn't set on the mutex, everything works as it should, and the program exits cleanly. Platforms with problems: - Embedded AMD Fusion board, running a [PTXDist][1] based 32-bit Linux 3.2.9-rt16 (with [RTpatch][2] 16). We are using the newest [OSELAS][3] i686 cross toolchain (2011.11.1), using gcc 4.6.2, glibc 2.14.1, binutils 2.21.1a, kernel 2.6.39. - Same board with the 2011.03.1 toolchain also (gcc 4.5.2 / glibc 2.13 / binutils 2.18 / kernel 2.6.36). Platforms with no problems: - Our own ARM-board, also running a PTXDist Linux (32-bit 2.6.29.6-rt23), using OSELAS arm-v4t cross toolchain (1.99.3) with gcc 4.3.2 / glibc 2.8 / binutils 2.18 / kernel 2.6.27. - My laptop (Intel Core i7), running 64-bit Ubuntu 11.04 (virtualized / kernel 2.6.38.15-generic), gcc 4.5.2 / eglibc 2.13-0ubuntu13.1 / binutils 2.21.0.20110327. I have been looking around the net for solutions, and have come across a few patches that I've tried, but without any effect: - [Making the condition variables priority inheritance aware.][4] - [Handling EAGAIN from FUTEX_WAIT_REQUEUE_PI][5] [1]: http://www.ptxdist.org/software/ptxdist/index_en.html [2]: https://rt.wiki.kernel.org/index.php/Main_Page [3]: http://www.ptxdist.de/oselas/toolchain/index_en.html [4]: http://sourceware.org/bugzilla/show_bug.cgi?id=11588 [5]: http://sourceware.org/git/?p=glibc.git;a=commit;h=c5a0802a682dba23f92d47f0 f99775aebfbe2539 Best regards, Simon Falsig -- Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.