Re: [PATCH with testcase] Bug 11568 - delete thread-specific breakpoint on the thread exit

Pedro Alves
2013-09-02T10:24:33Z

On 09/02/2013 10:46 AM, Muhammad Waqas wrote:
> On 09/02/2013 01:39 PM, Pedro Alves wrote:
>> Hmm. I'm guessing the difference will be you don't have debug
>> info for you glibc. Could you do
>>
>> do make check RUNTESTFLAGS="thread-specific-bp.exp"
>>
>> and send the resulting gdb.log?
>
> find gdb.log in attachment.

Alright, thanks. That's indeed the difference:

Yours:

> (gdb) PASS: gdb.threads/thread-specific-bp.exp: All stop: continue to breakpoint: start> info threads
> Id Target Id Frame
> * 2 Thread 0x2aaaab4af700 (LWP 5815) "thread-specific" start (arg=0x0) at ../.././../gdb/gdb/testsuite/gdb.threads/thread-specific-bp.c:23
> 1 Thread 0x2aaaab2ad700 (LWP 5811) "thread-specific" 0x00002aaaaacd9148 in pthread_join () from /lib/x86_64-linux-gnu/libpthread.so.0
> (gdb) PASS: gdb.threads/thread-specific-bp.exp: All stop: thread created

Mine:

> (gdb) PASS: gdb.threads/thread-specific-bp.exp: All stop: continue to breakpoint: start
> info threads
> Id Target Id Frame
> * 2 Thread 0x7ffff7fca700 (LWP 16383) "thread-specific" start (arg=0x0) at ../../../src/gdb/testsuite/gdb.threads/thread-specific-bp.c:23
> 1 Thread 0x7ffff7fcb740 (LWP 16379) "thread-specific" 0x000000323dc08e60 in pthread_join (threadid=140737353918208, thread_return=0x0) at pthread_join.c:93
> (gdb) PASS: gdb.threads/thread-specific-bp.exp: All stop: thread created

I can tell because yours doesn't show the arguments to pthread_join.

So in your case the bug doesn't trigger because
set_current_sal_from_frame, called from print_stack_frame, does
nothing if the frame (in this case pthread_join's) doesn't have
a symtab:

void
set_current_sal_from_frame (struct frame_info *frame, int center)
{
struct symtab_and_line sal;

find_frame_sal (frame, &sal);
if (sal.symtab)
{
if (center)
sal.line = max (sal.line - get_lines_to_list () / 2, 1);
set_current_source_symtab_and_line (&sal);
}
}

--
Pedro Alves