This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Failure in tst-pthread-getattr.out.
- From: Siddhesh Poyarekar <siddhesh at redhat dot com>
- To: "Carlos O'Donell" <carlos_odonell at mentor dot com>
- Cc: libc-alpha <libc-alpha at sourceware dot org>
- Date: Sun, 24 Jun 2012 14:02:10 +0530
- Subject: Re: Failure in tst-pthread-getattr.out.
- References: <4FE378DE.8050906@mentor.com>
On Thu, 21 Jun 2012 15:41:18 -0400, Carlos wrote:
> Test output file:
> ~~~
> Verifying that stack top is accessible
> Adjusting RLIMIT_STACK to 93554184359937
> Adjusted rlimit: stacksize=93554184355840, stackaddr=0x2ae95be09000
> ~~~
I was tinkering with this test case today and found something
interesting I thought I'd share. I too got the massive rlimit above
once, but the test case did not crash for me.
I copied the test case into a separate directory and built it and
ran it with exactly the same commands that the 'make check' would. The
resulting program crashed every single time, even when the RLIMIT_STACK
was correct.
I compared the generated code for both the binary resulting from the
make check run and the one generated outside of the tree and found that
they are different. In fact, in the make check run, the
call to allocate_and_test itself seems to be missing from the
check_stack_top body and the allocate_and_test is simply this:
0000000000401420 <allocate_and_test>:
401420: 55 push %rbp
401421: 48 89 e5 mov %rsp,%rbp
401424: 48 83 ec 10 sub $0x10,%rsp
401428: 48 89 e8 mov %rbp,%rax
40142b: 48 29 f8 sub %rdi,%rax
40142e: 48 83 c0 16 add $0x16,%rax
401432: 48 83 e0 f0 and $0xfffffffffffffff0,%rax
401436: 48 29 c4 sub %rax,%rsp
401439: c9 leaveq
40143a: c3 retq
40143b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
SO my first thought was that the bug is not fixed yet. I tweaked the
test to access *stackaddr instead of the *mem to be sure and it did not
crash, indicating that the bug is in fact fixed. So the alloca
calculation in the test case is goofing up, with code generated by the
compiler for local variables.
So while there is still something funny going on with the rlimit, there
is a problem with the test case as well. I'll figure this out and post
a tweak. It's just a test case fix, so I hope it is fine to push into
2.16 if it's ready in time.
Regards,
Siddhesh