From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30226 invoked by alias); 14 Nov 2007 19:24:26 -0000 Received: (qmail 30214 invoked by uid 22791); 14 Nov 2007 19:24:25 -0000 X-Spam-Check-By: sourceware.org Received: from main.gmane.org (HELO ciao.gmane.org) (80.91.229.2) by sourceware.org (qpsmtpd/0.31) with ESMTP; Wed, 14 Nov 2007 19:24:19 +0000 Received: from list by ciao.gmane.org with local (Exim 4.43) id 1IsNps-0002pi-9A for gdb@sources.redhat.com; Wed, 14 Nov 2007 19:23:40 +0000 Received: from i577bc647.versanet.de ([87.123.198.71]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 14 Nov 2007 19:23:40 +0000 Received: from Stephen.Berman by i577bc647.versanet.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 14 Nov 2007 19:23:40 +0000 To: gdb@sources.redhat.com From: Stephen Berman Subject: Re: GDB cannot access memory after Emacs abort Date: Wed, 14 Nov 2007 19:24:00 -0000 Message-ID: <87r6ishbsd.fsf@escher.local.home> References: <87r6j6rvn3.fsf@escher.local.home> <87hcjtllau.fsf@escher.local.home> <1194763094.16917.278.camel@localhost.localdomain> <20071111192237.GA11728@caradoc.them.org> <87d4uddbjw.fsf@escher.local.home> <1194995698.12695.42.camel@localhost.localdomain> <876405i2e3.fsf@escher.local.home> <1195041053.12695.55.camel@localhost.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.50 (gnu/linux) X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2007-11/txt/msg00142.txt.bz2 On Wed, 14 Nov 2007 03:50:53 -0800 Michael Snyder wrote: > On Wed, 2007-11-14 at 10:48 +0100, Stephen Berman wrote: > >> Thanks for this suggestion, it worked. Here's the backtrace: > > OK, this is great! See below. > >> #0 abort () at emacs.c:431 >> #1 0xb798526a in g_logv () from /usr/lib/libglib-2.0.so.0 >> #2 0xb79852a9 in g_log () from /usr/lib/libglib-2.0.so.0 >> #3 0xb7985320 in g_assert_warning () from /usr/lib/libglib-2.0.so.0 >> #4 0xb7c7b195 in gtk_container_propagate_expose () from /usr/lib/libgtk-x11-2.0.so.0 >> #5 0xb7c7b1c1 in ?? () from /usr/lib/libgtk-x11-2.0.so.0 >> #6 0x085c2d00 in ?? () >> #7 0x086c0a08 in ?? () >> #8 0x087c31f0 in ?? () > [...] > >> I don't know if this is useful to you or any other gdb hacker. I don't >> have the GTK+ sources installed. Maybe someone who does can reproduce >> the abort and get a more informative backtrace. > > You don't need to have the sources installed, but > it appears as if GDB can't find symbols for the shared libraries. What does it mean that in frame #4 of the backtrace the symbol gtk_container_propagate_expose from /usr/lib/libgtk-x11-2.0.so.0 is referenced but starting in the next stack frame there is only ?? with reference to the same library? That gdb is finding some but not all symbols? Note that when I attached the emacs process to gdb, it returned a slew of message like this: Reading symbols from /usr/lib/libgtk-x11-2.0.so.0...done. Loaded symbols for /usr/lib/libgtk-x11-2.0.so.0 Reading symbols from /usr/lib/libgdk-x11-2.0.so.0...done. Loaded symbols for /usr/lib/libgdk-x11-2.0.so.0 Reading symbols from /usr/lib/libatk-1.0.so.0...done. Loaded symbols for /usr/lib/libatk-1.0.so.0 Reading symbols from /usr/lib/libgdk_pixbuf-2.0.so.0...done. ... > Are these libraries installed in an unusual location? They are all in /usr/lib AFAICT; I didn't install them myself, that's where the distro I use (openSUSE) put them. > Is LD_LIBRARY_PATH set correctly (in the gdb shell)? How do I determine this (show env does not list LD_LIBRARY_PATH)? > Is there a location (other than /lib, /usr/lib etc) > where you could tell gdb to find the libraries? Not that I know of. Here's an additional datapoint, FWIW: I induced the abort again, and this time the backtrace was slightly different from the one I posted before: #0 abort () at emacs.c:431 #1 0xb790f26a in g_logv () from /usr/lib/libglib-2.0.so.0 #2 0xb790f2a9 in g_log () from /usr/lib/libglib-2.0.so.0 #3 0xb790f320 in g_assert_warning () from /usr/lib/libglib-2.0.so.0 #4 0xb7c05195 in gtk_container_propagate_expose () from /usr/lib/libgtk-x11-2.0.so.0 #5 0xb7c051c1 in ?? () from /usr/lib/libgtk-x11-2.0.so.0 #6 0x0833e1b0 in ceil () #7 0x086c35c0 in ?? () #8 0x087c59f8 in ?? () #9 0xb7cadb6a in ?? () from /usr/lib/libgtk-x11-2.0.so.0 #10 0xb7ec4ff4 in ?? () from /usr/lib/libgtk-x11-2.0.so.0 #11 0x0833e1b0 in ceil () #12 0xbfea1228 in ?? () #13 0xb7c7eb42 in ?? () from /usr/lib/libgtk-x11-2.0.so.0 #14 0x086c35c0 in ?? () #15 0xbfea1268 in ?? () #16 0xb7c051a0 in ?? () from /usr/lib/libgtk-x11-2.0.so.0 #17 0xbfea1268 in ?? () #18 0x0000001e in ?? () #19 0x40000036 in ?? () #20 0xbfea1238 in ?? () #21 0xb7ec4ff4 in ?? () from /usr/lib/libgtk-x11-2.0.so.0 #22 0x0833e1b0 in ceil () #23 0x0833e1b0 in ceil () #24 0xbfea1248 in ?? () #25 0xb7c05be7 in gtk_container_forall () from /usr/lib/libgtk-x11-2.0.so.0 Backtrace stopped: previous frame inner to this frame (corrupt stack?) What is the significance of the stack frames #6 0x0833e1b0 in ceil () and so on (note it's always the same address)? Thanks again for your helpful comments. Steve Berman