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

Keith Seitz wrote:

>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.
>>    
>>
I suddenly discovered what's been going on now - just as I was trying to 
debug the debugger ;-) It was something quite different from what we 
expected, and I should have noticed it earlier, but I just didn't 
consider the possibility, perhaps because it was too simple...

Anyhow, the situation was simply that at the point of the "hang", 
insight would display a modal dialog window of some kind. On connect it 
would contain the message "Successfully connected", on "Run" it asked 
whether I wanted to restart the program, while View->Registers lead to 
an "internal error" popup (I'll investigate that later.)

The problem was that I never could see these popups - not because I'm 
blind or something, but because they would always be opened in the 
"minimized" (iconic) state - so instead of the popup, I just got a 
tasklist entry that I never noticed. (Hmmm... Maybe I should run the 
"window list" applet after all, rather than just using the task pulldown 
of the menu panel. I otherwise find it quite useless when I have more 
than about 3 windows open, and I always do...)

I still haven't figured out why this happened, and if it was insight 
itself or the window manager that caused it, but everything is OK now, 
after I played around a bit with minimize and unminize (or whatever you 
call it) of the popups and the main window.

Sorry for the trouble...

- Toralf

>
>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
>
>  
>


-- 
Toralf Lund <toralf@procaptura.com> +47 66 85 51 22
ProCaptura AS                       +47 66 85 51 00 (switchboard)
http://www.procaptura.com/~toralf   +47 66 85 51 01 (fax)

      reply	other threads:[~2004-04-22 10:07 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
2004-04-22 10:07           ` Toralf Lund [this message]

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=40879956.7020206@procaptura.com \
    --to=toralf@procaptura.com \
    --cc=insight@sources.redhat.com \
    --cc=keiths@redhat.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).