Current-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: libpthread breaking various pkg builds
On Sun, Dec 26, 2010 at 11:53:24AM -0500, Christos Zoulas wrote:
> I know. Any help debugging it is appreciated, but I think that
> in the end TLS will come to the rescue.
I think, in this case we hit protected pages due to change from
rev. 1.119 of src/lib/libpthread/pthread.c (mprotect base only
if we move it). Program faults in pthread__stackid_setup on write:
t->pt_stack.ss_size = size - 2 * pagesize;
Data from two faults (: marks my own debug from pthread__initmain
and pthread__stackid_setup):
stack 0xbfc00000 d=0x5ff000 0xbf601000
applying to 0xbbbf8000
: pthread__sp: bf5ff494
:: redaddr: 0xbf401000 base: 0xbf400000
[segfault]
stack 0xbfc00000 d=0xdfe000 0xbee02000
applying to 0xbbbf8000 orig_addr=0x0 f=1002
result 0xb78b1000
applying to 0xbbbf
: pthread__sp: bedffc80
:: redaddr: 0xbec01000 base: 0xbec00000
[segfault]
...but with unconditionally mprotect we hit already mentioned
problem, when pthread_self() returns different bases for same
thread when stack pointer crosses boundaries, for example:
* sp: 0xbf800060 va: 0xbf800000
* sp: 0xbf8001b0 va: 0xbf800000
* sp: 0xbf7ff3b0 va: 0xbf600000
* sp: 0xbf7ff394 va: 0xbf600000
[hang]
Regards,
--
Piotr 'aniou' Meyer
Home |
Main Index |
Thread Index |
Old Index