Bug 209877
Summary: | PTHREAD_STACK_MIN is smaller than page size. | ||||||
---|---|---|---|---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | David Woodhouse <dwmw2> | ||||
Component: | glibc | Assignee: | Jakub Jelinek <jakub> | ||||
Status: | CLOSED RAWHIDE | QA Contact: | Brian Brock <bbrock> | ||||
Severity: | medium | Docs Contact: | |||||
Priority: | medium | ||||||
Version: | rawhide | ||||||
Target Milestone: | --- | ||||||
Target Release: | --- | ||||||
Hardware: | ppc64 | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | 2.5-3 | Doc Type: | Bug Fix | ||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2006-10-09 18:53:41 UTC | Type: | --- | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Bug Depends On: | |||||||
Bug Blocks: | 150224, 206172 | ||||||
Attachments: |
|
Description
David Woodhouse
2006-10-07 10:34:23 UTC
Created attachment 137969 [details]
Test code.
This is what happens on ppc32 kernel (ignore the last few lines; that's just strace being buggered and needing to be killed; bug 209873): write(1, "Creating timer\n", 15Creating timer ) = 15 rt_sigprocmask(SIG_SETMASK, ~[RT_1], [], 8) = 0 mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x30002000 brk(0) = 0x10011000 brk(0x10032000) = 0x10032000 mprotect(0x30002000, 4096, PROT_NONE) = 0 clone(Process 18046 attached child_stack=0x30005040, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x30005508, tls=0x3000c940, child_tidptr=0x30005508) = 18046 [pid 18045] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 [pid 18045] futex(0xf03017c, FUTEX_WAKE, 2147483647) = 0 [pid 18045] timer_create(CLOCK_REALTIME, {0x10011098, 32, SIGEV_THREAD_ID, {18046}}, {0x1}) = 0 [pid 18045] exit_group(1) = ? [pid 18046] --- SIGSTOP (Stopped (signal)) @ 0 (0) --- [pid 18046] SYS_300(0x30005510, 0xc, 0x30005508, 0x3000c940, 0x30005508) = 0 [pid 18046] rt_sigtimedwait([RTMIN], Killed And this is what happens on ppc64... write(1, "Creating timer\n", 15Creating timer ) = 15 rt_sigprocmask(SIG_SETMASK, ~[RT_1], [], 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 futex(0xefb017c, FUTEX_WAKE, 2147483647) = 0 dup(2) = 3 fcntl64(3, F_GETFL) = 0x2 (flags O_RDWR) brk(0) = 0x10020000 brk(0x10050000) = 0x10050000 fstat64(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 20), ...}) = 0 mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf7fd0000 _llseek(3, 0, 0xff1aee38, SEEK_CUR) = -1 ESPIPE (Illegal seek) write(3, "Create timer: Resource temporari"..., 47Create timer: Resource temporarily unavailable ) = 47 close(3) = 0 munmap(0xf7fd0000, 65536) = 0 exit_group(1) = ? Process 7277 detached We fail to create the helper thread. This is because we try to create it with a stack size of PTHREAD_STACK_MIN, which seems to be 16384. That's not going to work on a machine with 64KiB pages. Please try glibc-2.5-3. It isn't 100% POSIX conforming on ppc{,64}, because it doesn't reject pthread_attr_setstack{,size} with sizes between 16K and 128K (new PTHREAD_STACK_MIN), but that is only solvable with symbol versioning and therefore only in glibc 2.6 which we can't ship in FC6. glibc-2.5-3 fixes the test case. |