60 lines
1.4 KiB
Plaintext
60 lines
1.4 KiB
Plaintext
|
PURPOSE of /tools/glibc/Regression/bz522528-pthread-join-hangs-if-a-thread-calls-setuid
|
||
|
Description: Test for bz522528 (pthread_join() hangs if a thread calls setuid())
|
||
|
Author: Petr Muller <pmuller@redhat.com>
|
||
|
Bug summary: pthread_join() hangs if a thread calls setuid()
|
||
|
Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=522528
|
||
|
|
||
|
Description:
|
||
|
|
||
|
Created an attachment (id=360523)
|
||
|
reproducer's source file
|
||
|
|
||
|
Description of problem:
|
||
|
|
||
|
When a program creates a thread which calls setuid() and terminates, the other
|
||
|
thread trying to wait for it hangs.
|
||
|
|
||
|
|
||
|
Version-Release number of selected component (if applicable):
|
||
|
|
||
|
RHEL5 (2.5-34), also RHEL4 and the newest upstream sources
|
||
|
|
||
|
|
||
|
How reproducible:
|
||
|
|
||
|
always
|
||
|
|
||
|
|
||
|
Steps to Reproduce:
|
||
|
|
||
|
1. Compile attached source file of reproducer:
|
||
|
|
||
|
$ gcc -o reproducer reproducer.c -lpthread
|
||
|
|
||
|
2. and run it:
|
||
|
|
||
|
$ ./reproducer
|
||
|
|
||
|
|
||
|
Actual results:
|
||
|
|
||
|
program hangs
|
||
|
|
||
|
|
||
|
Expected results:
|
||
|
|
||
|
program should end without hanging
|
||
|
|
||
|
|
||
|
Additional info:
|
||
|
|
||
|
This bug has appeared quite a long ago, you can find it in a sourceware BZ with existing patch at:
|
||
|
|
||
|
http://sources.redhat.com/bugzilla/show_bug.cgi?id=3270#c2
|
||
|
|
||
|
The patch solves the problem, but I have no idea why this hasn't been applied in the upstream already. I have attached a slightly modiffied version of the patch to be able to be applied and built on RHEL5 glibc sources and it works and solves the problem.
|
||
|
|
||
|
There is also existing BZ for RHEL4:
|
||
|
|
||
|
https://bugzilla.redhat.com/show_bug.cgi?id=248671
|