• Martin Pitt's avatar
    Support storing assertion messages into core dump · da668979
    Martin Pitt authored
    Crash interception/debugging systems like Apport or ABRT capture core dumps for
    later crash analysis. However, if a program exits with an assertion failure,
    the core dump is not useful since the assertion message is only printed to
    stderr.
    
    glibc recently got a patch which stores the message of assert() into the
    __abort_msg global variable.
    (http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=48dcd0ba)
    That works fine for programs which actually use the standard C assert() macro.
    
    This patch adds the same functionality for glib's assertion tests. If we are
    building against a glibc which already has __abort_msg (2.11 and later, or
    backported above git commit), use that, otherwise put it into our own field
    __glib_assert_msg.
    
    Usage:
    
      $ cat test.c
      #include <glib.h>
    
      int main() {
          g_assert(1 < 0);
          return 0;
      }
    
      $ ./test
      **ERROR:test.c:5:main: assertion failed: (1 < 0)
      Aborted (Core dumped)
    
      $ gdb --batch --ex 'print (char*) __abort_msg' ./test core
      [...]
      $1 = 0x93bf028 "ERROR:test.c:5:main: assertion failed: (1 < 0)"
    
    https://bugzilla.gnome.org/show_bug.cgi?id=594872
    da668979
Name
Last commit
Last update
build Loading commit data...
debian Loading commit data...
docs Loading commit data...
gio Loading commit data...
glib Loading commit data...
gmodule Loading commit data...
gobject Loading commit data...
gthread Loading commit data...
m4macros Loading commit data...
po Loading commit data...
tests Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
COPYING Loading commit data...
ChangeLog.pre-1-2 Loading commit data...
ChangeLog.pre-2-0 Loading commit data...
ChangeLog.pre-2-10 Loading commit data...
ChangeLog.pre-2-12 Loading commit data...
ChangeLog.pre-2-14 Loading commit data...
ChangeLog.pre-2-16 Loading commit data...
ChangeLog.pre-2-18 Loading commit data...
ChangeLog.pre-2-2 Loading commit data...
ChangeLog.pre-2-20 Loading commit data...
ChangeLog.pre-2-4 Loading commit data...
ChangeLog.pre-2-6 Loading commit data...
ChangeLog.pre-2-8 Loading commit data...
HACKING Loading commit data...
INSTALL.in Loading commit data...
MAINTAINERS Loading commit data...
Makefile.am Loading commit data...
Makefile.decl Loading commit data...
NEWS Loading commit data...
NEWS.pre-1-3 Loading commit data...
README.commits Loading commit data...
README.in Loading commit data...
README.win32 Loading commit data...
acglib.m4 Loading commit data...
acinclude.m4 Loading commit data...
autogen.sh Loading commit data...
config.h.win32.in Loading commit data...
configure.in Loading commit data...
gio-2.0-uninstalled.pc.in Loading commit data...
gio-2.0.pc.in Loading commit data...
gio-unix-2.0-uninstalled.pc.in Loading commit data...
gio-unix-2.0.pc.in Loading commit data...
glib-2.0-uninstalled.pc.in Loading commit data...
glib-2.0.pc.in Loading commit data...
glib-gettextize.in Loading commit data...
glib-zip.in Loading commit data...
glibconfig.h.win32.in Loading commit data...
gmodule-2.0-uninstalled.pc.in Loading commit data...
gmodule-2.0.pc.in Loading commit data...
gmodule-export-2.0.pc.in Loading commit data...
gmodule-no-export-2.0-uninstalled.pc.in Loading commit data...
gmodule-no-export-2.0.pc.in Loading commit data...
gobject-2.0-uninstalled.pc.in Loading commit data...
gobject-2.0.pc.in Loading commit data...
gthread-2.0-uninstalled.pc.in Loading commit data...
gthread-2.0.pc.in Loading commit data...
makefile.msc Loading commit data...
mkinstalldirs Loading commit data...
msvc_recommended_pragmas.h Loading commit data...
sanity_check Loading commit data...
win32-fixup.pl Loading commit data...