public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
From: Michael Snyder <msnyder@specifix.com>
To: Stephen Berman <Stephen.Berman@gmx.net>
Cc: gdb@sources.redhat.com
Subject: Re: GDB cannot access memory after Emacs abort
Date: Tue, 13 Nov 2007 23:20:00 -0000	[thread overview]
Message-ID: <1194995493.12695.38.camel@localhost.localdomain> (raw)
In-Reply-To: <87fxz9dbks.fsf@escher.local.home>

On Tue, 2007-11-13 at 23:28 +0100, Stephen Berman wrote:
> On Sun, 11 Nov 2007 21:15:55 -0800 Michael Snyder <msnyder@specifix.com> wrote:
> 
> > On Mon, 2007-11-12 at 00:01 +0100, Stephen Berman wrote:
> >> On Sun, 11 Nov 2007 09:44:23 +0200 Eli Zaretskii <eliz@gnu.org> wrote:
> >> 
> >> >                         the upshot of all this is that `bt' doesn't
> >> > work, as shown below:
> >> >
> >> >> > >   (gdb) bt
> >> >> > >   #0  abort () at emacs.c:431
> >> >> > >   Cannot access memory at address 0xbfd6836c
> >> >> > >   Cannot access memory at address 0x8321b6c
> >> >
> [...]
> > I wonder -- after the above happens, what do you get if you 
> > type the following at the (gdb) prompt:
> >
> >   x /i $eip
> 
> After the abort occurs, the desktop locks up, I switch to a virtual tty
> and kill -9 the emacs process, releasing the desktop, then type what you
> said at the gdb prompt and get this:
> 
> 0x80f9e56 <abort+6>:    Cannot access memory at address 0x80f9e56

Oh yes.  I understand that now, thanks.

What we need, I guess, is to get back into control of 
the gdb without killing the emacs.  Otherwise it is
kind of hard to debug this gdb problem further.


> > If you get the same error (Cannot access memory at ...), 
> > then perhaps gdb has lost contact with the child process
> > entirely, and cannot access *any* memory.
> 
> Yes, this is also what Jim Blandy surmised. 

Well, as I now understand, that's because you killed the emacs.


> But, as I ask in my
> response to Blandy, why does the desktop lock up only happen when the
> emacs abort is induced while running under gdb?

I believe this is now well understood, and not a gdb problem.
In a nutshell, your emacs process has a lock on a shared 
resource (the X keyboard-and-mouse "focus").  It is intended
to keep that lock only briefly, but while in posession of the
lock, it aborts.

Normally an abort would result in the freeing of the lock, 
but since gdb stops the emacs process from exiting, the lock
is not freed, resulting in a deadlock when some other process
(eg. xterm) needs the lock.

This is a problem, but a normal and predictable one.
GDB cannot tell when a debugged process is in posession 
of a lock that will cause other processes to deadlock, 
and it has no way of freeing such locks.

This could happen with any shared, lockable resource.







  reply	other threads:[~2007-11-13 23:20 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <87r6j6rvn3.fsf@escher.local.home>
2007-11-10 23:50 ` Stephen Berman
2007-11-11  6:46   ` Michael Snyder
2007-11-11  7:44     ` Eli Zaretskii
2007-11-11 23:05       ` Stephen Berman
2007-11-12  4:18         ` Eli Zaretskii
2007-11-12  5:24         ` Michael Snyder
2007-11-13 22:40           ` Stephen Berman
2007-11-13 23:20             ` Michael Snyder [this message]
2007-11-13 23:28               ` Dan Nicolaescu
2007-11-14 10:00                 ` Stephen Berman
2007-11-13 23:57             ` Andreas Schwab
2007-11-11 19:22     ` Daniel Jacobowitz
2007-11-11 23:10       ` Stephen Berman
2007-11-12  0:39         ` Daniel Jacobowitz
2007-11-12 17:47         ` Jim Blandy
2007-11-12 19:44           ` Andreas Schwab
2007-11-13 22:36             ` Stephen Berman
2007-11-13 22:34           ` Stephen Berman
2007-11-13 23:14             ` Michael Snyder
2007-11-14  9:48               ` Stephen Berman
2007-11-13 23:51             ` Andreas Schwab
2007-11-12  7:39       ` Vladimir Prus
2007-11-13 22:36         ` Stephen Berman
2007-11-13 23:24           ` Michael Snyder
2007-11-14  9:50             ` Stephen Berman
2007-11-14 12:00               ` Michael Snyder
2007-11-14 19:24                 ` Stephen Berman
2007-11-15  1:00                   ` Michael Snyder
2007-11-11 23:01     ` Stephen Berman
2007-11-12  5:15       ` Michael Snyder
2007-11-14  9:55         ` Stephen Berman
2007-11-14 12:00           ` Michael Snyder

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=1194995493.12695.38.camel@localhost.localdomain \
    --to=msnyder@specifix.com \
    --cc=Stephen.Berman@gmx.net \
    --cc=gdb@sources.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).