[Bug 1580601] Re: __nih_abort_msg symbol cannot be read any more

Martin Pitt martin.pitt at ubuntu.com
Wed May 11 13:20:15 UTC 2016


Neither libnih nor glibc changed in yakkety, but what did change is that
gcc now applies the PIE option by default. Maybe libnih needs to be
adjusted for PIE on amd64, or this needs to be fixed in gcc, thus adding
a task for both for now.

** Tags removed: xenial
** Tags added: regression-releasease yakkety

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to libnih in Ubuntu.
https://bugs.launchpad.net/bugs/1580601

Title:
  __nih_abort_msg symbol cannot be read any more

Status in gcc-5 package in Ubuntu:
  New
Status in libnih package in Ubuntu:
  New

Bug description:
  libnih has a global symbol __nih_abort_msg that contains the message
  of the last failed nih_assert() (similar to glibc's own __abort_msg
  and glib's __glib_assert_msg). Apport uses these to produce a more
  meaningful crash report than just "/bin/foo crashed with SIGABRT", as
  in these case the thing you actually want to see is the assertion
  message.

  This stopped working in yakkety/amd64. apport's
  report.test_add_gdb_info_abort_libnih() now fails:

  ERROR: test_add_gdb_info_abort_libnih (__main__.T)
  add_gdb_info() with libnih assertion
  ----------------------------------------------------------------------
  Traceback (most recent call last):
    File "./test_report.py", line 886, in test_add_gdb_info_abort_libnih
      self.assertIn('Assertion failed in main: 1 < 0', pr['AssertionMessage'])
    File "/usr/lib/python3.5/collections/__init__.py", line 985, in __getitem__
      raise KeyError(key)
  KeyError: 'AssertionMessage'

  This can be reproduced with the attached script which compiles a
  trivial nih_assert() C program, runs it, and runs gdb on the produced
  core dump. Up until xenial it looks like:

  $ ./nih-assert.sh 
  (null):<stdin>:2: Assertion failed in main: 1 < 0
  Aborted (core dumped)
  [New LWP 9838]
  [Thread debugging using libthread_db enabled]
  Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
  Core was generated by `./nih-assert'.
  Program terminated with signal SIGABRT, Aborted.
  #0  0x00007f28c070d418 in __GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
  54	../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
  $1 = 0x25400f0 "<stdin>:2: Assertion failed in main: 1 < 0"

  But in yakkety/amd64 it now looks like

  $ ./nih-assert.sh 
  (null):<stdin>:2: Assertion failed in main: 1 < 0
  Aborted (core dumped)
  [New LWP 10489]
  [Thread debugging using libthread_db enabled]
  Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
  Core was generated by `./nih-assert'.
  Program terminated with signal SIGABRT, Aborted.
  #0  0x00007fd303865418 in __GI_raise (sig=sig at entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
  54	../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
  $1 = 0xffffffff869400f0 <error: Cannot access memory at address 0xffffffff869400f0>

  
  This can be reproduced easily in a schroot, you need to install "libnih-dev pkg-config gdb".

  ProblemType: Bug
  DistroRelease: Ubuntu 16.04
  Package: libnih-dev 1.0.3-4.3ubuntu1
  ProcVersionSignature: Ubuntu 4.4.0-22.39-generic 4.4.8
  Uname: Linux 4.4.0-22-generic x86_64
  ApportVersion: 2.20.1-0ubuntu2
  Architecture: amd64
  CurrentDesktop: i3
  Date: Wed May 11 15:13:46 2016
  Dependencies:
   gcc-6-base 6.0.1-0ubuntu1
   libc6 2.23-0ubuntu3
   libgcc1 1:6.0.1-0ubuntu1
   libnih1 1.0.3-4.3ubuntu1
  EcryptfsInUse: Yes
  SourcePackage: libnih
  UpgradeStatus: No upgrade log present (probably fresh install)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gcc-5/+bug/1580601/+subscriptions



More information about the foundations-bugs mailing list