public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
* lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion `iterate_over_lwps (runing_callback, NULL)' failed.
@ 2003-08-04 15:53 srikrish
  2003-08-05 15:49 ` srikrish
  0 siblings, 1 reply; 6+ messages in thread
From: srikrish @ 2003-08-04 15:53 UTC (permalink / raw)
  To: gdb

Hi,
I am getting an assertion failure/gdb-internal-error while running a
multi-threaded program using the GDB20030731. Can some one point out if this
is a known bug or is there a workaround?

Error Message: lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion
`iterate_over_lwps (runing_callback, NULL)' failed.

The test program and output follows. I am using 2.4.19-3Suse-SMP kernel.
(linuxthreads)
Thanks,
Srikrishnan

Test Program: Please note that I am calling exec of the same program without
arguments.
#include <stdio.h>
#include <pthread.h>
void * threadproc(void * junk)
{
 int i;
 printf("In threadproc pid:%d \n", getpid());
    printf("\n getting up from sleep \n");
  execv("myprog",0);=20
    printf("exec failed \n");
}

int main(int argc, char * argv)
{
 int i;
    void * ret;
 pthread_t newthread;
    printf("entering main program. pid: %d \n", getpid());
 if(argc >1)
 {
  pthread_create(&newthread, NULL, threadproc, NULL);
  printf("back to main. pid:%d \n",getpid());
  }
    printf("end of main: %d \n", getpid());
}


OUTOUT WHILE USING GDB after enabling printing of verbose/debug statements
in gdb/lin-lwp.c

>gdbdir/gdb myprog
GNU gdb 20030731
Copyright 2003 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "s390-ibm-linux"...
(gdb) run somearg
Starting program: /home/fultonm/bug3380/test3380nosleep somearg
CW:  waitpid 2122 received Trace/breakpoint trap (stopped)
CW:  waitpid 2122 received Trace/breakpoint trap (stopped)
CW:  waitpid 2122 received Trace/breakpoint trap (stopped)
[New Thread 1024 (LWP 2122)]
LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
SEL: Select single-step LWP 2122
LLW: trap_ptid is process 2122.
LLR: PTRACE_CONT process 2122, 0 (resume event thread)
LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
LLW: trap_ptid is process 2122.
LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
SEL: Select single-step LWP 2122
LLW: trap_ptid is process 2122.
LLR: PTRACE_CONT process 2122, 0 (resume event thread)
LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
LLW: trap_ptid is process 2122.
LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
SEL: Select single-step LWP 2122
LLW: trap_ptid is process 2122.
LLR: PTRACE_CONT process 2122, 0 (resume event thread)
LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
LLW: trap_ptid is process 2122.
[New Thread 2049 (LWP 2123)]
LLAL: PTRACE_ATTACH LWP 2123, 0, 0 (OK)
LLAL: waitpid LWP 2123 received Stopped (signal) (stopped)
LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
SEL: Select single-step LWP 2122
LLW: trap_ptid is LWP 2122.
RC:  PTRACE_CONT LWP 2123, 0, 0 (resume sibling)
LLR: PTRACE_CONT process 2122, 0 (resume event thread)
LLW: waitpid 2123 received Real-time signal 0 (stopped)
LLTA: PTRACE_PEEKUSER LWP 2123, 0, 0 (OK)
LLW: PTRACE_CONT LWP 2123, Unknown signal 77 (preempt 'handle')
LLW: waitpid 2123 received Trace/breakpoint trap (stopped)
LLTA: PTRACE_PEEKUSER LWP 2123, 0, 0 (OK)
LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2123.
SC:  kill LWP 2122 **<SIGSTOP>**
SC:  lwp kill 0 ERRNO-OK
SWC: waitpid LWP 2122 received Stopped (signal) (stopped)
SWC: CALLING LLTA
LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
LLW: trap_ptid is LWP 2123.
[New Thread 1026 (LWP 2124)]
LLAL: PTRACE_ATTACH LWP 2124, 0, 0 (OK)
LLAL: waitpid LWP 2124 received Stopped (signal) (stopped)
LLR: PTRACE_SINGLESTEP process 2123, 0 (resume event thread)
LLW: waitpid 2123 received Trace/breakpoint trap (stopped)
LLTA: PTRACE_PEEKUSER LWP 2123, 0, 0 (OK)
LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2123.
SEL: Select single-step LWP 2123
LLW: trap_ptid is LWP 2123.
RC:  PTRACE_CONT LWP 2124, 0, 0 (resume sibling)
RC:  PTRACE_CONT LWP 2122, 0, 0 (resume sibling)
LLR: PTRACE_CONT process 2123, 0 (resume event thread)
LLW: waitpid 2124 received Real-time signal 0 (stopped)
LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
LLW: PTRACE_CONT LWP 2124, Unknown signal 77 (preempt 'handle')
In threadproc pid:2124
LLW: waitpid 2122 received Real-time signal 0 (stopped)
 getting up from sleep
LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
back to main. pid:2122
LLW: PTRACE_CONT LWP 2122, Unknown signal 77 (preempt 'handle')
LLW: waitpid 2122 received Real-time signal 1 (stopped)
LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
LLW: PTRACE_CONT LWP 2122, Real-time signal 13 (preempt 'handle')
LLW: waitpid 2124 received Real-time signal 0 (stopped)
LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
LLW: PTRACE_CONT LWP 2124, Unknown signal 77 (preempt 'handle')
LLW: waitpid 2123 received 0 (exited)
LLW: LWP 2123 exited.
LLW: waitpid 2122 received 0 (exited)
SC:  kill LWP 2124 **<SIGSTOP>**
SC:  lwp kill 0 ERRNO-OK
SWC: waitpid LWP 2124 received Trace/breakpoint trap (stopped)
SWC: CALLING LLTA
LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
PTRACE_CONT LWP 2124, 0, 0 (OK)
SWC: Candidate SIGTRAP event in LWP 2124
SWC: waitpid LWP 2124 received Stopped (signal) (stopped)
SWC: CALLING LLTA
LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
LLW: LWP 2122 exited.
lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion `iterate_over_lwps
(run
ing_callback, NULL)' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) y

Create a core file of GDB? (y or n) y
Abort
mymachine: /home/srik>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion `iterate_over_lwps (runing_callback, NULL)' failed.
  2003-08-04 15:53 lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion `iterate_over_lwps (runing_callback, NULL)' failed srikrish
@ 2003-08-05 15:49 ` srikrish
  2003-08-05 18:17   ` J. Johnston
  0 siblings, 1 reply; 6+ messages in thread
From: srikrish @ 2003-08-05 15:49 UTC (permalink / raw)
  To: srikrish, gdb

In yesterday's post, I forgot to add that the program runs fine outside gdb.
Here's the output:
mymachine: /home/srik>./myprog somearg
entering main program. pid: 10861
In threadproc pid:10863

 getting up from sleep
entering main program. pid: 10863
end of main: 10863

mymachine: /home/srik>

Is this a limitation of GDB?


Subject: lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion
`iterate_over_lwps (runing_callback, NULL)' failed.


> Hi,
> I am getting an assertion failure/gdb-internal-error while running a
> multi-threaded program using the GDB20030731. Can some one point out if
this
> is a known bug or is there a workaround?
>
> Error Message: lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion
> `iterate_over_lwps (runing_callback, NULL)' failed.
>
> The test program and output follows. I am using 2.4.19-3Suse-SMP kernel.
> (linuxthreads)
> Thanks,
> Srikrishnan
>
> Test Program: Please note that I am calling exec of the same program
without
> arguments.
> #include <stdio.h>
> #include <pthread.h>
> void * threadproc(void * junk)
> {
>  int i;
>  printf("In threadproc pid:%d \n", getpid());
>     printf("\n getting up from sleep \n");
>   execv("myprog",0);=20
>     printf("exec failed \n");
> }
>
> int main(int argc, char * argv)
> {
>  int i;
>     void * ret;
>  pthread_t newthread;
>     printf("entering main program. pid: %d \n", getpid());
>  if(argc >1)
>  {
>   pthread_create(&newthread, NULL, threadproc, NULL);
>   printf("back to main. pid:%d \n",getpid());
>   }
>     printf("end of main: %d \n", getpid());
> }
>
>
> OUTOUT WHILE USING GDB after enabling printing of verbose/debug statements
> in gdb/lin-lwp.c
>
> >gdbdir/gdb myprog
> GNU gdb 20030731
> Copyright 2003 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you
are
> welcome to change it and/or distribute copies of it under certain
> conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for
details.
> This GDB was configured as "s390-ibm-linux"...
> (gdb) run somearg
> Starting program: /home/fultonm/bug3380/test3380nosleep somearg
> CW:  waitpid 2122 received Trace/breakpoint trap (stopped)
> CW:  waitpid 2122 received Trace/breakpoint trap (stopped)
> CW:  waitpid 2122 received Trace/breakpoint trap (stopped)
> [New Thread 1024 (LWP 2122)]
> LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
> LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> SEL: Select single-step LWP 2122
> LLW: trap_ptid is process 2122.
> LLR: PTRACE_CONT process 2122, 0 (resume event thread)
> LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> LLW: trap_ptid is process 2122.
> LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
> LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> SEL: Select single-step LWP 2122
> LLW: trap_ptid is process 2122.
> LLR: PTRACE_CONT process 2122, 0 (resume event thread)
> LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> LLW: trap_ptid is process 2122.
> LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
> LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> SEL: Select single-step LWP 2122
> LLW: trap_ptid is process 2122.
> LLR: PTRACE_CONT process 2122, 0 (resume event thread)
> LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> LLW: trap_ptid is process 2122.
> [New Thread 2049 (LWP 2123)]
> LLAL: PTRACE_ATTACH LWP 2123, 0, 0 (OK)
> LLAL: waitpid LWP 2123 received Stopped (signal) (stopped)
> LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
> LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
> LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> SEL: Select single-step LWP 2122
> LLW: trap_ptid is LWP 2122.
> RC:  PTRACE_CONT LWP 2123, 0, 0 (resume sibling)
> LLR: PTRACE_CONT process 2122, 0 (resume event thread)
> LLW: waitpid 2123 received Real-time signal 0 (stopped)
> LLTA: PTRACE_PEEKUSER LWP 2123, 0, 0 (OK)
> LLW: PTRACE_CONT LWP 2123, Unknown signal 77 (preempt 'handle')
> LLW: waitpid 2123 received Trace/breakpoint trap (stopped)
> LLTA: PTRACE_PEEKUSER LWP 2123, 0, 0 (OK)
> LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2123.
> SC:  kill LWP 2122 **<SIGSTOP>**
> SC:  lwp kill 0 ERRNO-OK
> SWC: waitpid LWP 2122 received Stopped (signal) (stopped)
> SWC: CALLING LLTA
> LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
> LLW: trap_ptid is LWP 2123.
> [New Thread 1026 (LWP 2124)]
> LLAL: PTRACE_ATTACH LWP 2124, 0, 0 (OK)
> LLAL: waitpid LWP 2124 received Stopped (signal) (stopped)
> LLR: PTRACE_SINGLESTEP process 2123, 0 (resume event thread)
> LLW: waitpid 2123 received Trace/breakpoint trap (stopped)
> LLTA: PTRACE_PEEKUSER LWP 2123, 0, 0 (OK)
> LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2123.
> SEL: Select single-step LWP 2123
> LLW: trap_ptid is LWP 2123.
> RC:  PTRACE_CONT LWP 2124, 0, 0 (resume sibling)
> RC:  PTRACE_CONT LWP 2122, 0, 0 (resume sibling)
> LLR: PTRACE_CONT process 2123, 0 (resume event thread)
> LLW: waitpid 2124 received Real-time signal 0 (stopped)
> LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
> LLW: PTRACE_CONT LWP 2124, Unknown signal 77 (preempt 'handle')
> In threadproc pid:2124
> LLW: waitpid 2122 received Real-time signal 0 (stopped)
>  getting up from sleep
> LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
> back to main. pid:2122
> LLW: PTRACE_CONT LWP 2122, Unknown signal 77 (preempt 'handle')
> LLW: waitpid 2122 received Real-time signal 1 (stopped)
> LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
> LLW: PTRACE_CONT LWP 2122, Real-time signal 13 (preempt 'handle')
> LLW: waitpid 2124 received Real-time signal 0 (stopped)
> LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
> LLW: PTRACE_CONT LWP 2124, Unknown signal 77 (preempt 'handle')
> LLW: waitpid 2123 received 0 (exited)
> LLW: LWP 2123 exited.
> LLW: waitpid 2122 received 0 (exited)
> SC:  kill LWP 2124 **<SIGSTOP>**
> SC:  lwp kill 0 ERRNO-OK
> SWC: waitpid LWP 2124 received Trace/breakpoint trap (stopped)
> SWC: CALLING LLTA
> LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
> PTRACE_CONT LWP 2124, 0, 0 (OK)
> SWC: Candidate SIGTRAP event in LWP 2124
> SWC: waitpid LWP 2124 received Stopped (signal) (stopped)
> SWC: CALLING LLTA
> LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
> LLW: LWP 2122 exited.
> lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion `iterate_over_lwps
> (run
> ing_callback, NULL)' failed.
> A problem internal to GDB has been detected,
> further debugging may prove unreliable.
> Quit this debugging session? (y or n) y
>
> Create a core file of GDB? (y or n) y
> Abort
> mymachine: /home/srik>
>
>
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion `iterate_over_lwps (runing_callback, NULL)' failed.
  2003-08-05 15:49 ` srikrish
@ 2003-08-05 18:17   ` J. Johnston
  2003-08-06 10:25     ` srikrish
  2003-10-14  7:15     ` lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion `iterate_over_lwps(runing_callback, " Srikrishnan Sundararajan
  0 siblings, 2 replies; 6+ messages in thread
From: J. Johnston @ 2003-08-05 18:17 UTC (permalink / raw)
  To: srikrish; +Cc: gdb

srikrish wrote:
> In yesterday's post, I forgot to add that the program runs fine outside gdb.
> Here's the output:
> mymachine: /home/srik>./myprog somearg
> entering main program. pid: 10861
> In threadproc pid:10863
> 
>  getting up from sleep
> entering main program. pid: 10863
> end of main: 10863
> 
> mymachine: /home/srik>
> 
> Is this a limitation of GDB?
> 

No, it is a bug.  The assert is historical and was left in after the nptl
modifications.  It is meant to prevent gdb from being left hanging because there
are no running threads to get events from.

With the advent of the new nptl model, gdb has to look for the case
of exiting the main thread.  In nptl, when you exit the main thread, it
means all other threads should have exited.  This is not the case for
linuxthreads.  Since gdb is not notified when nptl lwps exit,
it tries stopping the other lwps to see if they have exited, then
resumes them if they are still around.

In your case, the last non-main thread remaining got to a breakpoint so it
was stopped with pending status and the resume did not mark the thread as running.
After gdb got rid of the main thread, it looked to see if any threads existed and if
so, were they still running. The non-main thread was found but wasn't marked as running
so the assert tripped.

I believe the answer is to adjust the assert to also look for pending events on
the existing threads.

I can shortly submit a patch for consideration which you can try out.

-- Jeff J.


> 
> Subject: lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion
> `iterate_over_lwps (runing_callback, NULL)' failed.
> 
> 
> 
>>Hi,
>>I am getting an assertion failure/gdb-internal-error while running a
>>multi-threaded program using the GDB20030731. Can some one point out if
> 
> this
> 
>>is a known bug or is there a workaround?
>>
>>Error Message: lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion
>>`iterate_over_lwps (runing_callback, NULL)' failed.
>>
>>The test program and output follows. I am using 2.4.19-3Suse-SMP kernel.
>>(linuxthreads)
>>Thanks,
>>Srikrishnan
>>
>>Test Program: Please note that I am calling exec of the same program
> 
> without
> 
>>arguments.
>>#include <stdio.h>
>>#include <pthread.h>
>>void * threadproc(void * junk)
>>{
>> int i;
>> printf("In threadproc pid:%d \n", getpid());
>>    printf("\n getting up from sleep \n");
>>  execv("myprog",0);=20
>>    printf("exec failed \n");
>>}
>>
>>int main(int argc, char * argv)
>>{
>> int i;
>>    void * ret;
>> pthread_t newthread;
>>    printf("entering main program. pid: %d \n", getpid());
>> if(argc >1)
>> {
>>  pthread_create(&newthread, NULL, threadproc, NULL);
>>  printf("back to main. pid:%d \n",getpid());
>>  }
>>    printf("end of main: %d \n", getpid());
>>}
>>
>>
>>OUTOUT WHILE USING GDB after enabling printing of verbose/debug statements
>>in gdb/lin-lwp.c
>>
>>
>>>gdbdir/gdb myprog
>>
>>GNU gdb 20030731
>>Copyright 2003 Free Software Foundation, Inc.
>>GDB is free software, covered by the GNU General Public License, and you
> 
> are
> 
>>welcome to change it and/or distribute copies of it under certain
>>conditions.
>>Type "show copying" to see the conditions.
>>There is absolutely no warranty for GDB.  Type "show warranty" for
> 
> details.
> 
>>This GDB was configured as "s390-ibm-linux"...
>>(gdb) run somearg
>>Starting program: /home/fultonm/bug3380/test3380nosleep somearg
>>CW:  waitpid 2122 received Trace/breakpoint trap (stopped)
>>CW:  waitpid 2122 received Trace/breakpoint trap (stopped)
>>CW:  waitpid 2122 received Trace/breakpoint trap (stopped)
>>[New Thread 1024 (LWP 2122)]
>>LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
>>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
>>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
>>SEL: Select single-step LWP 2122
>>LLW: trap_ptid is process 2122.
>>LLR: PTRACE_CONT process 2122, 0 (resume event thread)
>>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
>>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
>>LLW: trap_ptid is process 2122.
>>LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
>>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
>>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
>>SEL: Select single-step LWP 2122
>>LLW: trap_ptid is process 2122.
>>LLR: PTRACE_CONT process 2122, 0 (resume event thread)
>>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
>>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
>>LLW: trap_ptid is process 2122.
>>LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
>>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
>>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
>>SEL: Select single-step LWP 2122
>>LLW: trap_ptid is process 2122.
>>LLR: PTRACE_CONT process 2122, 0 (resume event thread)
>>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
>>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
>>LLW: trap_ptid is process 2122.
>>[New Thread 2049 (LWP 2123)]
>>LLAL: PTRACE_ATTACH LWP 2123, 0, 0 (OK)
>>LLAL: waitpid LWP 2123 received Stopped (signal) (stopped)
>>LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
>>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
>>LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
>>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
>>SEL: Select single-step LWP 2122
>>LLW: trap_ptid is LWP 2122.
>>RC:  PTRACE_CONT LWP 2123, 0, 0 (resume sibling)
>>LLR: PTRACE_CONT process 2122, 0 (resume event thread)
>>LLW: waitpid 2123 received Real-time signal 0 (stopped)
>>LLTA: PTRACE_PEEKUSER LWP 2123, 0, 0 (OK)
>>LLW: PTRACE_CONT LWP 2123, Unknown signal 77 (preempt 'handle')
>>LLW: waitpid 2123 received Trace/breakpoint trap (stopped)
>>LLTA: PTRACE_PEEKUSER LWP 2123, 0, 0 (OK)
>>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2123.
>>SC:  kill LWP 2122 **<SIGSTOP>**
>>SC:  lwp kill 0 ERRNO-OK
>>SWC: waitpid LWP 2122 received Stopped (signal) (stopped)
>>SWC: CALLING LLTA
>>LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
>>LLW: trap_ptid is LWP 2123.
>>[New Thread 1026 (LWP 2124)]
>>LLAL: PTRACE_ATTACH LWP 2124, 0, 0 (OK)
>>LLAL: waitpid LWP 2124 received Stopped (signal) (stopped)
>>LLR: PTRACE_SINGLESTEP process 2123, 0 (resume event thread)
>>LLW: waitpid 2123 received Trace/breakpoint trap (stopped)
>>LLTA: PTRACE_PEEKUSER LWP 2123, 0, 0 (OK)
>>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2123.
>>SEL: Select single-step LWP 2123
>>LLW: trap_ptid is LWP 2123.
>>RC:  PTRACE_CONT LWP 2124, 0, 0 (resume sibling)
>>RC:  PTRACE_CONT LWP 2122, 0, 0 (resume sibling)
>>LLR: PTRACE_CONT process 2123, 0 (resume event thread)
>>LLW: waitpid 2124 received Real-time signal 0 (stopped)
>>LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
>>LLW: PTRACE_CONT LWP 2124, Unknown signal 77 (preempt 'handle')
>>In threadproc pid:2124
>>LLW: waitpid 2122 received Real-time signal 0 (stopped)
>> getting up from sleep
>>LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
>>back to main. pid:2122
>>LLW: PTRACE_CONT LWP 2122, Unknown signal 77 (preempt 'handle')
>>LLW: waitpid 2122 received Real-time signal 1 (stopped)
>>LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
>>LLW: PTRACE_CONT LWP 2122, Real-time signal 13 (preempt 'handle')
>>LLW: waitpid 2124 received Real-time signal 0 (stopped)
>>LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
>>LLW: PTRACE_CONT LWP 2124, Unknown signal 77 (preempt 'handle')
>>LLW: waitpid 2123 received 0 (exited)
>>LLW: LWP 2123 exited.
>>LLW: waitpid 2122 received 0 (exited)
>>SC:  kill LWP 2124 **<SIGSTOP>**
>>SC:  lwp kill 0 ERRNO-OK
>>SWC: waitpid LWP 2124 received Trace/breakpoint trap (stopped)
>>SWC: CALLING LLTA
>>LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
>>PTRACE_CONT LWP 2124, 0, 0 (OK)
>>SWC: Candidate SIGTRAP event in LWP 2124
>>SWC: waitpid LWP 2124 received Stopped (signal) (stopped)
>>SWC: CALLING LLTA
>>LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
>>LLW: LWP 2122 exited.
>>lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion `iterate_over_lwps
>>(run
>>ing_callback, NULL)' failed.
>>A problem internal to GDB has been detected,
>>further debugging may prove unreliable.
>>Quit this debugging session? (y or n) y
>>
>>Create a core file of GDB? (y or n) y
>>Abort
>>mymachine: /home/srik>
>>
>>
>>
> 
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion `iterate_over_lwps (runing_callback, NULL)' failed.
  2003-08-05 18:17   ` J. Johnston
@ 2003-08-06 10:25     ` srikrish
  2003-10-14  7:15     ` lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion `iterate_over_lwps(runing_callback, " Srikrishnan Sundararajan
  1 sibling, 0 replies; 6+ messages in thread
From: srikrish @ 2003-08-06 10:25 UTC (permalink / raw)
  To: J. Johnston; +Cc: gdb

I tried commenting iterate_over_lwps (stop_and_resume_callback, NULL); at
lin-lwp.c:1301.
Now I get the 'Cannot find user-level thread for LWP 19020: generic error. '
Upon pressing continue I get 'Cannot find thread 2049: generic error'. I
recall that the same happened while using gdb 5.2.1 and 5.3. However, while
using gdb 5.2.1 and gdb 5.3,  quit didn't work - I was not able to get out
of gdb without 'killing'.

Where as while using the gdb20030731, after getting the error, quit works.
Srikrishnan

----- Original Message -----
From: "J. Johnston" <jjohnstn@redhat.com>
To: "srikrish" <srikrish@in.ibm.com>
Cc: <gdb@sources.redhat.com>
Sent: Tuesday, August 05, 2003 11:47 PM
Subject: Re: lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion
`iterate_over_lwps (runing_callback, NULL)' failed.


> srikrish wrote:
> > In yesterday's post, I forgot to add that the program runs fine outside
gdb.
> > Here's the output:
> > mymachine: /home/srik>./myprog somearg
> > entering main program. pid: 10861
> > In threadproc pid:10863
> >
> >  getting up from sleep
> > entering main program. pid: 10863
> > end of main: 10863
> >
> > mymachine: /home/srik>
> >
> > Is this a limitation of GDB?
> >
>
> No, it is a bug.  The assert is historical and was left in after the nptl
> modifications.  It is meant to prevent gdb from being left hanging because
there
> are no running threads to get events from.
>
> With the advent of the new nptl model, gdb has to look for the case
> of exiting the main thread.  In nptl, when you exit the main thread, it
> means all other threads should have exited.  This is not the case for
> linuxthreads.  Since gdb is not notified when nptl lwps exit,
> it tries stopping the other lwps to see if they have exited, then
> resumes them if they are still around.
>
> In your case, the last non-main thread remaining got to a breakpoint so it
> was stopped with pending status and the resume did not mark the thread as
running.
> After gdb got rid of the main thread, it looked to see if any threads
existed and if
> so, were they still running. The non-main thread was found but wasn't
marked as running
> so the assert tripped.
>
> I believe the answer is to adjust the assert to also look for pending
events on
> the existing threads.
>
> I can shortly submit a patch for consideration which you can try out.
>
> -- Jeff J.
>
>
> >
> > Subject: lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion
> > `iterate_over_lwps (runing_callback, NULL)' failed.
> >
> >
> >
> >>Hi,
> >>I am getting an assertion failure/gdb-internal-error while running a
> >>multi-threaded program using the GDB20030731. Can some one point out if
> >
> > this
> >
> >>is a known bug or is there a workaround?
> >>
> >>Error Message: lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion
> >>`iterate_over_lwps (runing_callback, NULL)' failed.
> >>
> >>The test program and output follows. I am using 2.4.19-3Suse-SMP kernel.
> >>(linuxthreads)
> >>Thanks,
> >>Srikrishnan
> >>
> >>Test Program: Please note that I am calling exec of the same program
> >
> > without
> >
> >>arguments.
> >>#include <stdio.h>
> >>#include <pthread.h>
> >>void * threadproc(void * junk)
> >>{
> >> int i;
> >> printf("In threadproc pid:%d \n", getpid());
> >>    printf("\n getting up from sleep \n");
> >>  execv("myprog",0);=20
> >>    printf("exec failed \n");
> >>}
> >>
> >>int main(int argc, char * argv)
> >>{
> >> int i;
> >>    void * ret;
> >> pthread_t newthread;
> >>    printf("entering main program. pid: %d \n", getpid());
> >> if(argc >1)
> >> {
> >>  pthread_create(&newthread, NULL, threadproc, NULL);
> >>  printf("back to main. pid:%d \n",getpid());
> >>  }
> >>    printf("end of main: %d \n", getpid());
> >>}
> >>
> >>
> >>OUTOUT WHILE USING GDB after enabling printing of verbose/debug
statements
> >>in gdb/lin-lwp.c
> >>
> >>
> >>>gdbdir/gdb myprog
> >>
> >>GNU gdb 20030731
> >>Copyright 2003 Free Software Foundation, Inc.
> >>GDB is free software, covered by the GNU General Public License, and you
> >
> > are
> >
> >>welcome to change it and/or distribute copies of it under certain
> >>conditions.
> >>Type "show copying" to see the conditions.
> >>There is absolutely no warranty for GDB.  Type "show warranty" for
> >
> > details.
> >
> >>This GDB was configured as "s390-ibm-linux"...
> >>(gdb) run somearg
> >>Starting program: /home/fultonm/bug3380/test3380nosleep somearg
> >>CW:  waitpid 2122 received Trace/breakpoint trap (stopped)
> >>CW:  waitpid 2122 received Trace/breakpoint trap (stopped)
> >>CW:  waitpid 2122 received Trace/breakpoint trap (stopped)
> >>[New Thread 1024 (LWP 2122)]
> >>LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
> >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> >>SEL: Select single-step LWP 2122
> >>LLW: trap_ptid is process 2122.
> >>LLR: PTRACE_CONT process 2122, 0 (resume event thread)
> >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> >>LLW: trap_ptid is process 2122.
> >>LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
> >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> >>SEL: Select single-step LWP 2122
> >>LLW: trap_ptid is process 2122.
> >>LLR: PTRACE_CONT process 2122, 0 (resume event thread)
> >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> >>LLW: trap_ptid is process 2122.
> >>LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
> >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> >>SEL: Select single-step LWP 2122
> >>LLW: trap_ptid is process 2122.
> >>LLR: PTRACE_CONT process 2122, 0 (resume event thread)
> >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> >>LLW: trap_ptid is process 2122.
> >>[New Thread 2049 (LWP 2123)]
> >>LLAL: PTRACE_ATTACH LWP 2123, 0, 0 (OK)
> >>LLAL: waitpid LWP 2123 received Stopped (signal) (stopped)
> >>LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
> >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> >>LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
> >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> >>SEL: Select single-step LWP 2122
> >>LLW: trap_ptid is LWP 2122.
> >>RC:  PTRACE_CONT LWP 2123, 0, 0 (resume sibling)
> >>LLR: PTRACE_CONT process 2122, 0 (resume event thread)
> >>LLW: waitpid 2123 received Real-time signal 0 (stopped)
> >>LLTA: PTRACE_PEEKUSER LWP 2123, 0, 0 (OK)
> >>LLW: PTRACE_CONT LWP 2123, Unknown signal 77 (preempt 'handle')
> >>LLW: waitpid 2123 received Trace/breakpoint trap (stopped)
> >>LLTA: PTRACE_PEEKUSER LWP 2123, 0, 0 (OK)
> >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2123.
> >>SC:  kill LWP 2122 **<SIGSTOP>**
> >>SC:  lwp kill 0 ERRNO-OK
> >>SWC: waitpid LWP 2122 received Stopped (signal) (stopped)
> >>SWC: CALLING LLTA
> >>LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
> >>LLW: trap_ptid is LWP 2123.
> >>[New Thread 1026 (LWP 2124)]
> >>LLAL: PTRACE_ATTACH LWP 2124, 0, 0 (OK)
> >>LLAL: waitpid LWP 2124 received Stopped (signal) (stopped)
> >>LLR: PTRACE_SINGLESTEP process 2123, 0 (resume event thread)
> >>LLW: waitpid 2123 received Trace/breakpoint trap (stopped)
> >>LLTA: PTRACE_PEEKUSER LWP 2123, 0, 0 (OK)
> >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2123.
> >>SEL: Select single-step LWP 2123
> >>LLW: trap_ptid is LWP 2123.
> >>RC:  PTRACE_CONT LWP 2124, 0, 0 (resume sibling)
> >>RC:  PTRACE_CONT LWP 2122, 0, 0 (resume sibling)
> >>LLR: PTRACE_CONT process 2123, 0 (resume event thread)
> >>LLW: waitpid 2124 received Real-time signal 0 (stopped)
> >>LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
> >>LLW: PTRACE_CONT LWP 2124, Unknown signal 77 (preempt 'handle')
> >>In threadproc pid:2124
> >>LLW: waitpid 2122 received Real-time signal 0 (stopped)
> >> getting up from sleep
> >>LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
> >>back to main. pid:2122
> >>LLW: PTRACE_CONT LWP 2122, Unknown signal 77 (preempt 'handle')
> >>LLW: waitpid 2122 received Real-time signal 1 (stopped)
> >>LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
> >>LLW: PTRACE_CONT LWP 2122, Real-time signal 13 (preempt 'handle')
> >>LLW: waitpid 2124 received Real-time signal 0 (stopped)
> >>LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
> >>LLW: PTRACE_CONT LWP 2124, Unknown signal 77 (preempt 'handle')
> >>LLW: waitpid 2123 received 0 (exited)
> >>LLW: LWP 2123 exited.
> >>LLW: waitpid 2122 received 0 (exited)
> >>SC:  kill LWP 2124 **<SIGSTOP>**
> >>SC:  lwp kill 0 ERRNO-OK
> >>SWC: waitpid LWP 2124 received Trace/breakpoint trap (stopped)
> >>SWC: CALLING LLTA
> >>LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
> >>PTRACE_CONT LWP 2124, 0, 0 (OK)
> >>SWC: Candidate SIGTRAP event in LWP 2124
> >>SWC: waitpid LWP 2124 received Stopped (signal) (stopped)
> >>SWC: CALLING LLTA
> >>LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
> >>LLW: LWP 2122 exited.
> >>lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion
`iterate_over_lwps
> >>(run
> >>ing_callback, NULL)' failed.
> >>A problem internal to GDB has been detected,
> >>further debugging may prove unreliable.
> >>Quit this debugging session? (y or n) y
> >>
> >>Create a core file of GDB? (y or n) y
> >>Abort
> >>mymachine: /home/srik>
> >>
> >>
> >>
> >
> >
>
>
>
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion  `iterate_over_lwps(runing_callback, NULL)' failed.
  2003-08-05 18:17   ` J. Johnston
  2003-08-06 10:25     ` srikrish
@ 2003-10-14  7:15     ` Srikrishnan Sundararajan
  2003-10-14 13:00       ` Daniel Jacobowitz
  1 sibling, 1 reply; 6+ messages in thread
From: Srikrishnan Sundararajan @ 2003-10-14  7:15 UTC (permalink / raw)
  To: J. Johnston; +Cc: gdb

Jeff, Were you able to create a patch for this?
Srikrishnan

J. Johnston" wrote:
> 
> srikrish wrote:
> > In yesterday's post, I forgot to add that the program runs fine outside gdb.
> > Here's the output:
> > mymachine: /home/srik>./myprog somearg
> > entering main program. pid: 10861
> > In threadproc pid:10863
> >
> >  getting up from sleep
> > entering main program. pid: 10863
> > end of main: 10863
> >
> > mymachine: /home/srik>
> >
> > Is this a limitation of GDB?
> >
> 
> No, it is a bug.  The assert is historical and was left in after the nptl
> modifications.  It is meant to prevent gdb from being left hanging because there
> are no running threads to get events from.
> 
> With the advent of the new nptl model, gdb has to look for the case
> of exiting the main thread.  In nptl, when you exit the main thread, it
> means all other threads should have exited.  This is not the case for
> linuxthreads.  Since gdb is not notified when nptl lwps exit,
> it tries stopping the other lwps to see if they have exited, then
> resumes them if they are still around.
> 
> In your case, the last non-main thread remaining got to a breakpoint so it
> was stopped with pending status and the resume did not mark the thread as running.
> After gdb got rid of the main thread, it looked to see if any threads existed and if
> so, were they still running. The non-main thread was found but wasn't marked as running
> so the assert tripped.
> 
> I believe the answer is to adjust the assert to also look for pending events on
> the existing threads.
> 
> I can shortly submit a patch for consideration which you can try out.
> 
> -- Jeff J.
> 
> >
> > Subject: lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion
> > `iterate_over_lwps (runing_callback, NULL)' failed.
> >
> >
> >
> >>Hi,
> >>I am getting an assertion failure/gdb-internal-error while running a
> >>multi-threaded program using the GDB20030731. Can some one point out if
> >
> > this
> >
> >>is a known bug or is there a workaround?
> >>
> >>Error Message: lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion
> >>`iterate_over_lwps (runing_callback, NULL)' failed.
> >>
> >>The test program and output follows. I am using 2.4.19-3Suse-SMP kernel.
> >>(linuxthreads)
> >>Thanks,
> >>Srikrishnan
> >>
> >>Test Program: Please note that I am calling exec of the same program
> >
> > without
> >
> >>arguments.
> >>#include <stdio.h>
> >>#include <pthread.h>
> >>void * threadproc(void * junk)
> >>{
> >> int i;
> >> printf("In threadproc pid:%d \n", getpid());
> >>    printf("\n getting up from sleep \n");
> >>  execv("myprog",0);=20
> >>    printf("exec failed \n");
> >>}
> >>
> >>int main(int argc, char * argv)
> >>{
> >> int i;
> >>    void * ret;
> >> pthread_t newthread;
> >>    printf("entering main program. pid: %d \n", getpid());
> >> if(argc >1)
> >> {
> >>  pthread_create(&newthread, NULL, threadproc, NULL);
> >>  printf("back to main. pid:%d \n",getpid());
> >>  }
> >>    printf("end of main: %d \n", getpid());
> >>}
> >>
> >>
> >>OUTOUT WHILE USING GDB after enabling printing of verbose/debug statements
> >>in gdb/lin-lwp.c
> >>
> >>
> >>>gdbdir/gdb myprog
> >>
> >>GNU gdb 20030731
> >>Copyright 2003 Free Software Foundation, Inc.
> >>GDB is free software, covered by the GNU General Public License, and you
> >
> > are
> >
> >>welcome to change it and/or distribute copies of it under certain
> >>conditions.
> >>Type "show copying" to see the conditions.
> >>There is absolutely no warranty for GDB.  Type "show warranty" for
> >
> > details.
> >
> >>This GDB was configured as "s390-ibm-linux"...
> >>(gdb) run somearg
> >>Starting program: /home/fultonm/bug3380/test3380nosleep somearg
> >>CW:  waitpid 2122 received Trace/breakpoint trap (stopped)
> >>CW:  waitpid 2122 received Trace/breakpoint trap (stopped)
> >>CW:  waitpid 2122 received Trace/breakpoint trap (stopped)
> >>[New Thread 1024 (LWP 2122)]
> >>LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
> >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> >>SEL: Select single-step LWP 2122
> >>LLW: trap_ptid is process 2122.
> >>LLR: PTRACE_CONT process 2122, 0 (resume event thread)
> >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> >>LLW: trap_ptid is process 2122.
> >>LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
> >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> >>SEL: Select single-step LWP 2122
> >>LLW: trap_ptid is process 2122.
> >>LLR: PTRACE_CONT process 2122, 0 (resume event thread)
> >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> >>LLW: trap_ptid is process 2122.
> >>LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
> >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> >>SEL: Select single-step LWP 2122
> >>LLW: trap_ptid is process 2122.
> >>LLR: PTRACE_CONT process 2122, 0 (resume event thread)
> >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> >>LLW: trap_ptid is process 2122.
> >>[New Thread 2049 (LWP 2123)]
> >>LLAL: PTRACE_ATTACH LWP 2123, 0, 0 (OK)
> >>LLAL: waitpid LWP 2123 received Stopped (signal) (stopped)
> >>LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
> >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> >>LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
> >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> >>SEL: Select single-step LWP 2122
> >>LLW: trap_ptid is LWP 2122.
> >>RC:  PTRACE_CONT LWP 2123, 0, 0 (resume sibling)
> >>LLR: PTRACE_CONT process 2122, 0 (resume event thread)
> >>LLW: waitpid 2123 received Real-time signal 0 (stopped)
> >>LLTA: PTRACE_PEEKUSER LWP 2123, 0, 0 (OK)
> >>LLW: PTRACE_CONT LWP 2123, Unknown signal 77 (preempt 'handle')
> >>LLW: waitpid 2123 received Trace/breakpoint trap (stopped)
> >>LLTA: PTRACE_PEEKUSER LWP 2123, 0, 0 (OK)
> >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2123.
> >>SC:  kill LWP 2122 **<SIGSTOP>**
> >>SC:  lwp kill 0 ERRNO-OK
> >>SWC: waitpid LWP 2122 received Stopped (signal) (stopped)
> >>SWC: CALLING LLTA
> >>LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
> >>LLW: trap_ptid is LWP 2123.
> >>[New Thread 1026 (LWP 2124)]
> >>LLAL: PTRACE_ATTACH LWP 2124, 0, 0 (OK)
> >>LLAL: waitpid LWP 2124 received Stopped (signal) (stopped)
> >>LLR: PTRACE_SINGLESTEP process 2123, 0 (resume event thread)
> >>LLW: waitpid 2123 received Trace/breakpoint trap (stopped)
> >>LLTA: PTRACE_PEEKUSER LWP 2123, 0, 0 (OK)
> >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2123.
> >>SEL: Select single-step LWP 2123
> >>LLW: trap_ptid is LWP 2123.
> >>RC:  PTRACE_CONT LWP 2124, 0, 0 (resume sibling)
> >>RC:  PTRACE_CONT LWP 2122, 0, 0 (resume sibling)
> >>LLR: PTRACE_CONT process 2123, 0 (resume event thread)
> >>LLW: waitpid 2124 received Real-time signal 0 (stopped)
> >>LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
> >>LLW: PTRACE_CONT LWP 2124, Unknown signal 77 (preempt 'handle')
> >>In threadproc pid:2124
> >>LLW: waitpid 2122 received Real-time signal 0 (stopped)
> >> getting up from sleep
> >>LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
> >>back to main. pid:2122
> >>LLW: PTRACE_CONT LWP 2122, Unknown signal 77 (preempt 'handle')
> >>LLW: waitpid 2122 received Real-time signal 1 (stopped)
> >>LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
> >>LLW: PTRACE_CONT LWP 2122, Real-time signal 13 (preempt 'handle')
> >>LLW: waitpid 2124 received Real-time signal 0 (stopped)
> >>LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
> >>LLW: PTRACE_CONT LWP 2124, Unknown signal 77 (preempt 'handle')
> >>LLW: waitpid 2123 received 0 (exited)
> >>LLW: LWP 2123 exited.
> >>LLW: waitpid 2122 received 0 (exited)
> >>SC:  kill LWP 2124 **<SIGSTOP>**
> >>SC:  lwp kill 0 ERRNO-OK
> >>SWC: waitpid LWP 2124 received Trace/breakpoint trap (stopped)
> >>SWC: CALLING LLTA
> >>LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
> >>PTRACE_CONT LWP 2124, 0, 0 (OK)
> >>SWC: Candidate SIGTRAP event in LWP 2124
> >>SWC: waitpid LWP 2124 received Stopped (signal) (stopped)
> >>SWC: CALLING LLTA
> >>LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
> >>LLW: LWP 2122 exited.
> >>lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion `iterate_over_lwps
> >>(run
> >>ing_callback, NULL)' failed.
> >>A problem internal to GDB has been detected,
> >>further debugging may prove unreliable.
> >>Quit this debugging session? (y or n) y
> >>
> >>Create a core file of GDB? (y or n) y
> >>Abort
> >>mymachine: /home/srik>
> >>
> >>
> >>
> >
> >

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion `iterate_over_lwps(runing_callback, NULL)' failed.
  2003-10-14  7:15     ` lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion `iterate_over_lwps(runing_callback, " Srikrishnan Sundararajan
@ 2003-10-14 13:00       ` Daniel Jacobowitz
  0 siblings, 0 replies; 6+ messages in thread
From: Daniel Jacobowitz @ 2003-10-14 13:00 UTC (permalink / raw)
  To: Srikrishnan Sundararajan; +Cc: J. Johnston, gdb

Yes, something was checked in to HEAD last week.  It missed GDB 6.0.

However, I've had the same error reported to me again yesterday.  I'll
be looking into this...

On Tue, Oct 14, 2003 at 05:50:57PM +0530, Srikrishnan Sundararajan wrote:
> Jeff, Were you able to create a patch for this?
> Srikrishnan
> 
> J. Johnston" wrote:
> > 
> > srikrish wrote:
> > > In yesterday's post, I forgot to add that the program runs fine outside gdb.
> > > Here's the output:
> > > mymachine: /home/srik>./myprog somearg
> > > entering main program. pid: 10861
> > > In threadproc pid:10863
> > >
> > >  getting up from sleep
> > > entering main program. pid: 10863
> > > end of main: 10863
> > >
> > > mymachine: /home/srik>
> > >
> > > Is this a limitation of GDB?
> > >
> > 
> > No, it is a bug.  The assert is historical and was left in after the nptl
> > modifications.  It is meant to prevent gdb from being left hanging because there
> > are no running threads to get events from.
> > 
> > With the advent of the new nptl model, gdb has to look for the case
> > of exiting the main thread.  In nptl, when you exit the main thread, it
> > means all other threads should have exited.  This is not the case for
> > linuxthreads.  Since gdb is not notified when nptl lwps exit,
> > it tries stopping the other lwps to see if they have exited, then
> > resumes them if they are still around.
> > 
> > In your case, the last non-main thread remaining got to a breakpoint so it
> > was stopped with pending status and the resume did not mark the thread as running.
> > After gdb got rid of the main thread, it looked to see if any threads existed and if
> > so, were they still running. The non-main thread was found but wasn't marked as running
> > so the assert tripped.
> > 
> > I believe the answer is to adjust the assert to also look for pending events on
> > the existing threads.
> > 
> > I can shortly submit a patch for consideration which you can try out.
> > 
> > -- Jeff J.
> > 
> > >
> > > Subject: lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion
> > > `iterate_over_lwps (runing_callback, NULL)' failed.
> > >
> > >
> > >
> > >>Hi,
> > >>I am getting an assertion failure/gdb-internal-error while running a
> > >>multi-threaded program using the GDB20030731. Can some one point out if
> > >
> > > this
> > >
> > >>is a known bug or is there a workaround?
> > >>
> > >>Error Message: lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion
> > >>`iterate_over_lwps (runing_callback, NULL)' failed.
> > >>
> > >>The test program and output follows. I am using 2.4.19-3Suse-SMP kernel.
> > >>(linuxthreads)
> > >>Thanks,
> > >>Srikrishnan
> > >>
> > >>Test Program: Please note that I am calling exec of the same program
> > >
> > > without
> > >
> > >>arguments.
> > >>#include <stdio.h>
> > >>#include <pthread.h>
> > >>void * threadproc(void * junk)
> > >>{
> > >> int i;
> > >> printf("In threadproc pid:%d \n", getpid());
> > >>    printf("\n getting up from sleep \n");
> > >>  execv("myprog",0);=20
> > >>    printf("exec failed \n");
> > >>}
> > >>
> > >>int main(int argc, char * argv)
> > >>{
> > >> int i;
> > >>    void * ret;
> > >> pthread_t newthread;
> > >>    printf("entering main program. pid: %d \n", getpid());
> > >> if(argc >1)
> > >> {
> > >>  pthread_create(&newthread, NULL, threadproc, NULL);
> > >>  printf("back to main. pid:%d \n",getpid());
> > >>  }
> > >>    printf("end of main: %d \n", getpid());
> > >>}
> > >>
> > >>
> > >>OUTOUT WHILE USING GDB after enabling printing of verbose/debug statements
> > >>in gdb/lin-lwp.c
> > >>
> > >>
> > >>>gdbdir/gdb myprog
> > >>
> > >>GNU gdb 20030731
> > >>Copyright 2003 Free Software Foundation, Inc.
> > >>GDB is free software, covered by the GNU General Public License, and you
> > >
> > > are
> > >
> > >>welcome to change it and/or distribute copies of it under certain
> > >>conditions.
> > >>Type "show copying" to see the conditions.
> > >>There is absolutely no warranty for GDB.  Type "show warranty" for
> > >
> > > details.
> > >
> > >>This GDB was configured as "s390-ibm-linux"...
> > >>(gdb) run somearg
> > >>Starting program: /home/fultonm/bug3380/test3380nosleep somearg
> > >>CW:  waitpid 2122 received Trace/breakpoint trap (stopped)
> > >>CW:  waitpid 2122 received Trace/breakpoint trap (stopped)
> > >>CW:  waitpid 2122 received Trace/breakpoint trap (stopped)
> > >>[New Thread 1024 (LWP 2122)]
> > >>LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
> > >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> > >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> > >>SEL: Select single-step LWP 2122
> > >>LLW: trap_ptid is process 2122.
> > >>LLR: PTRACE_CONT process 2122, 0 (resume event thread)
> > >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> > >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> > >>LLW: trap_ptid is process 2122.
> > >>LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
> > >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> > >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> > >>SEL: Select single-step LWP 2122
> > >>LLW: trap_ptid is process 2122.
> > >>LLR: PTRACE_CONT process 2122, 0 (resume event thread)
> > >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> > >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> > >>LLW: trap_ptid is process 2122.
> > >>LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
> > >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> > >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> > >>SEL: Select single-step LWP 2122
> > >>LLW: trap_ptid is process 2122.
> > >>LLR: PTRACE_CONT process 2122, 0 (resume event thread)
> > >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> > >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> > >>LLW: trap_ptid is process 2122.
> > >>[New Thread 2049 (LWP 2123)]
> > >>LLAL: PTRACE_ATTACH LWP 2123, 0, 0 (OK)
> > >>LLAL: waitpid LWP 2123 received Stopped (signal) (stopped)
> > >>LLR: PTRACE_SINGLESTEP process 2122, 0 (resume event thread)
> > >>LLW: waitpid 2122 received Trace/breakpoint trap (stopped)
> > >>LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
> > >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2122.
> > >>SEL: Select single-step LWP 2122
> > >>LLW: trap_ptid is LWP 2122.
> > >>RC:  PTRACE_CONT LWP 2123, 0, 0 (resume sibling)
> > >>LLR: PTRACE_CONT process 2122, 0 (resume event thread)
> > >>LLW: waitpid 2123 received Real-time signal 0 (stopped)
> > >>LLTA: PTRACE_PEEKUSER LWP 2123, 0, 0 (OK)
> > >>LLW: PTRACE_CONT LWP 2123, Unknown signal 77 (preempt 'handle')
> > >>LLW: waitpid 2123 received Trace/breakpoint trap (stopped)
> > >>LLTA: PTRACE_PEEKUSER LWP 2123, 0, 0 (OK)
> > >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2123.
> > >>SC:  kill LWP 2122 **<SIGSTOP>**
> > >>SC:  lwp kill 0 ERRNO-OK
> > >>SWC: waitpid LWP 2122 received Stopped (signal) (stopped)
> > >>SWC: CALLING LLTA
> > >>LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
> > >>LLW: trap_ptid is LWP 2123.
> > >>[New Thread 1026 (LWP 2124)]
> > >>LLAL: PTRACE_ATTACH LWP 2124, 0, 0 (OK)
> > >>LLAL: waitpid LWP 2124 received Stopped (signal) (stopped)
> > >>LLR: PTRACE_SINGLESTEP process 2123, 0 (resume event thread)
> > >>LLW: waitpid 2123 received Trace/breakpoint trap (stopped)
> > >>LLTA: PTRACE_PEEKUSER LWP 2123, 0, 0 (OK)
> > >>LLW: Candidate event Trace/breakpoint trap (stopped) in LWP 2123.
> > >>SEL: Select single-step LWP 2123
> > >>LLW: trap_ptid is LWP 2123.
> > >>RC:  PTRACE_CONT LWP 2124, 0, 0 (resume sibling)
> > >>RC:  PTRACE_CONT LWP 2122, 0, 0 (resume sibling)
> > >>LLR: PTRACE_CONT process 2123, 0 (resume event thread)
> > >>LLW: waitpid 2124 received Real-time signal 0 (stopped)
> > >>LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
> > >>LLW: PTRACE_CONT LWP 2124, Unknown signal 77 (preempt 'handle')
> > >>In threadproc pid:2124
> > >>LLW: waitpid 2122 received Real-time signal 0 (stopped)
> > >> getting up from sleep
> > >>LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
> > >>back to main. pid:2122
> > >>LLW: PTRACE_CONT LWP 2122, Unknown signal 77 (preempt 'handle')
> > >>LLW: waitpid 2122 received Real-time signal 1 (stopped)
> > >>LLTA: PTRACE_PEEKUSER LWP 2122, 0, 0 (OK)
> > >>LLW: PTRACE_CONT LWP 2122, Real-time signal 13 (preempt 'handle')
> > >>LLW: waitpid 2124 received Real-time signal 0 (stopped)
> > >>LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
> > >>LLW: PTRACE_CONT LWP 2124, Unknown signal 77 (preempt 'handle')
> > >>LLW: waitpid 2123 received 0 (exited)
> > >>LLW: LWP 2123 exited.
> > >>LLW: waitpid 2122 received 0 (exited)
> > >>SC:  kill LWP 2124 **<SIGSTOP>**
> > >>SC:  lwp kill 0 ERRNO-OK
> > >>SWC: waitpid LWP 2124 received Trace/breakpoint trap (stopped)
> > >>SWC: CALLING LLTA
> > >>LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
> > >>PTRACE_CONT LWP 2124, 0, 0 (OK)
> > >>SWC: Candidate SIGTRAP event in LWP 2124
> > >>SWC: waitpid LWP 2124 received Stopped (signal) (stopped)
> > >>SWC: CALLING LLTA
> > >>LLTA: PTRACE_PEEKUSER LWP 2124, 0, 0 (OK)
> > >>LLW: LWP 2122 exited.
> > >>lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion `iterate_over_lwps
> > >>(run
> > >>ing_callback, NULL)' failed.
> > >>A problem internal to GDB has been detected,
> > >>further debugging may prove unreliable.
> > >>Quit this debugging session? (y or n) y
> > >>
> > >>Create a core file of GDB? (y or n) y
> > >>Abort
> > >>mymachine: /home/srik>
> > >>
> > >>
> > >>
> > >
> > >
> 

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2003-10-14 13:00 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-08-04 15:53 lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion `iterate_over_lwps (runing_callback, NULL)' failed srikrish
2003-08-05 15:49 ` srikrish
2003-08-05 18:17   ` J. Johnston
2003-08-06 10:25     ` srikrish
2003-10-14  7:15     ` lin-lwp.c:1317: internal-error: lin_lwp_wait: Assertion `iterate_over_lwps(runing_callback, " Srikrishnan Sundararajan
2003-10-14 13:00       ` Daniel Jacobowitz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).