Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: paawan oza <paawan1982@yahoo.com>
To: teawater <teawater@gmail.com>
Cc: gdb <gdb@sourceware.org>
Subject: Re: gdb internal error SIGINT/SIGSTOP
Date: Thu, 05 Feb 2009 13:48:00 -0000	[thread overview]
Message-ID: <659739.99262.qm@web36206.mail.mud.yahoo.com> (raw)
In-Reply-To: <daef60380902050024x15316e91u8ad707ca0d08caa2@mail.gmail.com>

Hi,
please find my comment inlined.
Regards,
..Paawan.

> Sorry. I am not very clear your mean.
> 
> What I think is before you want send a sig to a inferior,
> you can use
> a non-block wait or something like it to check if the
> inferior stop or
> not.

Paawan: aggreed, I check with WNOHANG option with waitpid(...).
assume, it says : inferior is running (no signal from inferior)
 
now I decide to send SIGINT
kill(PIDGET(inferior_ptid),SIGINT)  /* stop the inferior */
just exactly after this point,
gdb gets scheduled out...

now just before, actually, kernel delivers the SIGINT signal to the process
process gets scheduled and stopped because of breakpoint trap. 
and SIGINT is also delivered to the process.

so now gdb is notified with two signals in sequence
if I do
waitpid(pid, &status, WNOHANG | WTRACED);
first I get SIGTRAP
and then SIGINT

and having two signals finally
linux-nat-wait messes it up (in multithread applications)

I hope I elaborated.

Regards,
..Paawan.


> If the inferior already stop by a breakpoint, this
> non-block wait will
> success.  And then you don't need to send sig.
> 
> If the inferior is running, this wait will false, it will
> not affect
> anything.  You can send sig after that.
> 
> 
> Thanks,
> Hui
> 
> On Tue, Feb 3, 2009 at 20:48, paawan oza
> <paawan1982@yahoo.com> wrote:
> > Hello,
> >
> > your comments.
> >> Why not check if this process is stop or not
> before send sig
> >> to them
> >> (use wait or something)?
> >
> > my anwser :
> > It falls off in one situation.
> >
> > imagine :
> > I send SIGINT/SIGSTOP to the process.
> > and then just after I send the signal to the process
> to stop.
> > gdb is scheeduled out.
> > the inferior gets shceduled in.
> > one of its threads already stopped because of
> breakpoint.
> > and then we have no more control.
> > now when gdb gets scheduled in, it ( linux-nat-wait)
> sees two signals. : )
> > where it falls off.
> >
> > Regards,
> > ..Paawan.
> >
> >
> > --- On Tue, 2/3/09, teawater
> <teawater@gmail.com> wrote:
> >
> >> From: teawater <teawater@gmail.com>
> >> Subject: Re: gdb internal error SIGINT/SIGSTOP
> >> To: paawan1982@yahoo.com
> >> Cc: gdb@sourceware.org
> >> Date: Tuesday, February 3, 2009, 8:35 AM
> >> Why not check if this process is stop or not
> before send sig
> >> to them
> >> (use wait or something)?
> >>
> >> On Mon, Feb 2, 2009 at 22:47, paawan oza
> >> <paawan1982@yahoo.com> wrote:
> >> >
> >> > Hello,
> >> >
> >> > I have been modifying gdb for past couple of
> months.
> >> > I am trying to keep process always running
> and user
> >> should be able to type commands.
> >> > It is similar to tracepoints but on host
> system.
> >> >
> >> > I am facing a problem as following when try
> to debug
> >> multi-threaded applications.
> >> >
> >> > I am sending SIGINT/SIGSTOP (with no pass) to
> stop the
> >> process.
> >> > linux-nat-wait wll attempt to stop other
> threads and
> >> it succeeds.
> >> > and it works fine.
> >> >
> >> > but,
> >> > when I have breakpoints on threads....
> >> > and if main/CLONEs thread is stopped due to
> breakpoint
> >> and if I send
> >> > SIGINT/SIGSTOP to the main thread....
> >> > eventually I end up getting interrnal gdb
> assertion
> >> error.
> >> > gdb_assert (pid == GET_LWP (lp->ptid));
> >> >
> >> > I would like to know !!
> >> >
> >> > 1) why is that happening ?
> >> > in the scenerio where (thread is already
> stopped
> >> because of breakpoint
> >> > and I am internally sending SIGINT/SIGSTOP
> (with no
> >> pass)
> >> >
> >> > note : I have modified gdb code to suite my
> >> requirements. where process should always be
> running and
> >> user should be able to type commands
> >> >
> >> > please do the needful.
> >> >
> >> >
> >> > Regards,
> >> > ..Paawan.
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >> >
> >
> >
> >
> >


      


  reply	other threads:[~2009-02-05 13:48 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-02 14:47 paawan oza
2009-02-02 15:05 ` Daniel Jacobowitz
2009-02-02 15:20   ` paawan oza
2009-02-02 15:52     ` Daniel Jacobowitz
2009-02-03  3:05 ` teawater
     [not found]   ` <171515.38221.qm@web36204.mail.mud.yahoo.com>
2009-02-05  8:24     ` teawater
2009-02-05 13:48       ` paawan oza [this message]
2009-02-05 15:52         ` teawater
2009-02-05 16:22           ` paawan oza
2009-02-06  5:16             ` teawater
2009-02-06  7:54               ` paawan oza

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=659739.99262.qm@web36206.mail.mud.yahoo.com \
    --to=paawan1982@yahoo.com \
    --cc=gdb@sourceware.org \
    --cc=teawater@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox