nih uses eglibc private symbol __abort_msg
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
libnih |
Confirmed
|
Undecided
|
Unassigned | ||
apport (Ubuntu) |
Fix Released
|
High
|
Martin Pitt | ||
Precise |
Won't Fix
|
Undecided
|
Unassigned | ||
Quantal |
Won't Fix
|
Undecided
|
Unassigned | ||
Raring |
Fix Released
|
High
|
Martin Pitt | ||
libnih (Ubuntu) |
Fix Released
|
High
|
James Hunt | ||
Precise |
Won't Fix
|
Undecided
|
Unassigned | ||
Quantal |
Won't Fix
|
Undecided
|
Unassigned | ||
Raring |
Fix Released
|
High
|
James Hunt |
Bug Description
NIH uses the private eglibc '__abort_msg' symbol to save a string explaining why nih_assert() failed. However, __abort_msg is not a public symbol which causes problems when libc is upgraded - it actually necessitates that for every libc upgrade on, for example, Ubuntu systems the following has to happen:
1) eglibc is upgraded with a version set to <version>~foo
2) nih is rebuilt against the eglibc version
3) nih is upgraded.
4) the eglibc package is upgraded *again* to drop the ~foo.
The symbol can be made use of like this:
$ cat >foo.c<<EOF
int
main(int argc, char *argv[])
{
nih_
nih_assert (0 == 1);
exit (EXIT_SUCCESS);
}
EOF
$ gcc -std=gnu99 -g -Wall -pedantic -o foo foo.c `pkg-config --cflags --libs libnih`
$ ./foo
(null):
Aborted (core dumped)
$ gdb foo core.1597
GNU gdb (Ubuntu/Linaro 7.4-2012.
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
For bug reporting instructions, please see:
<http://
Reading symbols from /home/james/
[New LWP 1597]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-
Core was generated by `foo'.
Program terminated with signal 6, Aborted.
#0 0xb770d1b2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
(gdb) p (char *)__abort_msg
$1 = 0x93fa098 "nih_make_
(gdb)
Related branches
- Dimitri John Ledkov (community): Disapprove
- Scott James Remnant: Pending requested
-
Diff: 134 lines (+27/-21)3 files modifiedChangeLog (+6/-0)
nih/logging.c (+8/-8)
nih/tests/test_logging.c (+13/-13)
- Scott James Remnant: Pending requested
-
Diff: 2208 lines (+661/-409)56 files modifiedChangeLog (+46/-0)
nih-dbus-tool/argument.h (+1/-1)
nih-dbus-tool/demarshal.c (+3/-3)
nih-dbus-tool/demarshal.h (+1/-1)
nih-dbus-tool/indent.h (+2/-2)
nih-dbus-tool/interface.h (+8/-8)
nih-dbus-tool/main.c (+2/-2)
nih-dbus-tool/marshal.c (+39/-7)
nih-dbus-tool/marshal.h (+1/-1)
nih-dbus-tool/method.h (+7/-7)
nih-dbus-tool/node.h (+4/-4)
nih-dbus-tool/output.h (+2/-2)
nih-dbus-tool/parse.h (+2/-2)
nih-dbus-tool/property.h (+9/-9)
nih-dbus-tool/signal.h (+4/-4)
nih-dbus-tool/symbol.c (+2/-2)
nih-dbus-tool/symbol.h (+4/-4)
nih-dbus-tool/tests/expected/test_method_object_function_no_input.c (+13/-11)
nih-dbus-tool/tests/expected/test_method_object_function_standard.c (+13/-11)
nih-dbus-tool/tests/expected/test_method_reply_function_deprecated.c (+12/-11)
nih-dbus-tool/tests/expected/test_method_reply_function_standard.c (+12/-11)
nih-dbus-tool/tests/test_main.c (+2/-2)
nih-dbus-tool/tests/test_marshal.c (+164/-150)
nih-dbus-tool/tests/test_property.c (+1/-1)
nih-dbus-tool/type.c (+1/-1)
nih-dbus-tool/type.h (+15/-15)
nih-dbus/dbus_object.h (+1/-2)
nih-dbus/dbus_pending_data.h (+1/-1)
nih-dbus/dbus_proxy.c (+2/-2)
nih-dbus/dbus_proxy.h (+2/-2)
nih-dbus/dbus_util.h (+1/-1)
nih/alloc.c (+1/-2)
nih/alloc.h (+2/-2)
nih/child.h (+1/-1)
nih/command.h (+1/-1)
nih/config.h (+5/-5)
nih/file.c (+12/-2)
nih/file.h (+1/-1)
nih/hash.h (+1/-1)
nih/io.h (+8/-8)
nih/list.h (+2/-2)
nih/logging.c (+8/-11)
nih/main.h (+1/-1)
nih/option.h (+2/-2)
nih/signal.h (+1/-1)
nih/string.h (+17/-17)
nih/tests/test_file.c (+61/-0)
nih/tests/test_hash.c (+2/-1)
nih/tests/test_logging.c (+55/-60)
nih/tests/test_main.c (+1/-1)
nih/tests/test_option.c (+2/-2)
nih/tests/test_watch.c (+60/-0)
nih/timer.h (+4/-4)
nih/tree.h (+2/-2)
nih/watch.c (+33/-1)
nih/watch.h (+1/-1)
description: | updated |
Changed in apport (Ubuntu): | |
importance: | Undecided → High |
Changed in libnih (Ubuntu): | |
importance: | Undecided → High |
tags: | added: rls-q-incoming |
tags: |
added: rls-q-notfixing removed: rls-q-incoming |
Changed in libnih (Ubuntu Raring): | |
assignee: | nobody → James Hunt (jamesodhunt) |
Changed in libnih (Ubuntu Raring): | |
status: | Confirmed → Fix Released |
Changed in apport (Ubuntu Raring): | |
assignee: | nobody → Martin Pitt (pitti) |
status: | Confirmed → In Progress |
Changed in libnih: | |
status: | New → Confirmed |
Changed in apport (Ubuntu Quantal): | |
status: | New → Won't Fix |
Changed in libnih (Ubuntu Quantal): | |
status: | New → Won't Fix |
The __abort_msg symbol is used specifically to work with apport (/usr/share/ pyshared/ apport/ report. py) to provide enriched crash reporting.