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

I think you didn't understand my mean.
Why you aways want get 2 sigs?  :)

Hui

On Thu, Feb 5, 2009 at 21:48, paawan oza <paawan1982@yahoo.com> wrote:
> 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 15:52 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
2009-02-05 15:52         ` teawater [this message]
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=daef60380902050752p72cad7f3va2173992e998a13d@mail.gmail.com \
    --to=teawater@gmail.com \
    --cc=gdb@sourceware.org \
    --cc=paawan1982@yahoo.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