This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]