public inbox for insight@sourceware.org
 help / color / mirror / Atom feed
From: Keith Seitz <keiths@redhat.com>
To: Toralf Lund <toralf@procaptura.com>
Cc: "insight@sources.redhat.com" <insight@sources.redhat.com>
Subject: Re: Insight + ARM-9 + BDI2000: Hang on exec
Date: Wed, 21 Apr 2004 16:33:00 -0000	[thread overview]
Message-ID: <1082565232.2004.23.camel@lindt.uglyboxes.com> (raw)
In-Reply-To: <40863904.5020702@procaptura.com>

On Wed, 2004-04-21 at 02:04, Toralf Lund wrote:
> >So, when you do this, the UI just "hangs"? Control buttons disabled
> >(grayed-out)?
> >
> No. Nothing changes; the UI just stops responding to input. I can't 
> select icons, open menus, scroll the source view, or even close the window.

Ok, this screams of a malignant back-end or similar problem. If the UI
doesn't even do screen updates, then I can pretty much guarantee that
the back-end code for your target is locking the UI out (blocked in a
system call). This happens rather more frequently than I wished. I get
reports of this every few months. [However, you're using a standard
"remote" target, and this should not happen, so something else must be
amiss.]

The problem is that gdb has several event loops. Insight further burdens
the debugging model by adding yet another one. Let me quickly clarify.

The two main event loops in gdb are the target event loop (where the
target code is waiting for debug messages from the target) and the UI
(or mi or cli) event loop, where the user interface is waiting for input
from the user.

Unfortunately, gdb and insight don't share the same event loops for
these things, and they probably never will until all target event loops
go async. In the meantime, we came up with a hack: have the target code
periodically call out to the UI to allow it to run it's event loop. This
is the evil "ui_loop_hook" that is in gdb.

For example, one of the little nasty things that is done (for which I am
regrettably responsible many years ago) involves breaking up serial and
network read requests into small chunks. Instead of waiting N seconds
for a reply from the target, gdb will wait 1 second, N times. After
every second, it calls the ui_loop_hook to update the UI (in this case,
only insight needs to register a hook callback).

So, now for your problems, the question is: why isn't the ui_loop_hook
being called? Better yet, why isn't the connect command completing and
returning control to gdb-proper?

To answer these questions may not be too difficult with a little
diligence on your part.

So, here are some questions/comments:
1) Let's see if we cannot get gdb/Insight to timeout after the connect
and return control to the UI. Before connecting to the target, can you
open a console and enter the command "set remote timeout 1". Now try
connecting. Does it ever return control to you, i.e., does the UI update
at all?

2) I believe you said you were using a remote tcp target, right? Hmm.
Looking over src/gdb/ser-tcp.c, I see calls to ui_loop_hook. Well, to
check this, we have no choice: you're going to have to load insight into
gdb and set a breakpoint on "x_event" in gdbtk-hooks.c. When you attach
to the target, does it ever stop at the breakpoint and run the hook?

3) The easy way: Run insight on gdb. Connect to your target (where the
hang occurs), and interrupt insight and get a backtrace of where it
stopped. Demonstrate anything? Blocked in a system call?

4) The hard way: If all else fails, you're going to have to set a break
in remote_open in remote.c and follow it through to the protocol level
(for tcp, that's in ser-tcp.c). Does it do the N 1-second timeouts,
calling ui loop hook? Or is it blocked?

5) The really hard way: Use strace to find out what's going on.

6) Can you remind me what version of gdb/insight you're using? (Show
complete output of "insight -v".)

Keith

  parent reply	other threads:[~2004-04-21 16:33 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-04-19 12:55 Toralf Lund
2004-04-19 16:52 ` Keith Seitz
2004-04-20  8:12   ` Toralf Lund
2004-04-20 16:14     ` Keith Seitz
2004-04-21  9:04       ` Toralf Lund
2004-04-21  9:45         ` Toralf Lund
2004-04-21 16:33         ` Keith Seitz [this message]
2004-04-22 10:07           ` Toralf Lund

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=1082565232.2004.23.camel@lindt.uglyboxes.com \
    --to=keiths@redhat.com \
    --cc=insight@sources.redhat.com \
    --cc=toralf@procaptura.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).