Bug 810002

Summary: bad library build: libreport_g_verbose unresolved from libabrt.so.0
Product: [Fedora] Fedora Reporter: John Reiser <jreiser>
Component: abrtAssignee: abrt <abrt-devel-list>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 17CC: abrt-devel-list, dvlasenk, iprikryl, jmoskovc, kklic, mmilata, mtoman, npajkovs
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-01-12 01:14:42 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description John Reiser 2012-04-04 20:40:01 UTC
Description of problem: In /var/log/prelink/prelink.log, prelink reports:
  /usr/sbin/prelink: Warning: /lib64/libabrt.so.0 has undefined non-weak symbols
One such symbol is libreport_g_verbose which is defined in libreport.so.0.  If an app uses libabrt without also using libreport, then the app will crash when referencing libreport_g_verbose.  libabrt relies on libreport to supply the definition of libreport_g_verbose, so libabrt should record the dependency with DT_NEED (build with "-lreport").


Version-Release number of selected component (if applicable):
abrt-libs-2.0.10-1.fc17.x86_64


How reproducible: every time


Steps to Reproduce:
1. readelf --symbols /usr/lib*/libabrt.so.0    |  grep libreport_g_verbose
   readelf --symbols /usr/lib*/libreport.so.0  |  grep libreport_g_verbose
2. ldd /usr/lib64/libabrt.so.0
3.
  
Actual results:
1. UNDefined in libabrt, defined in libreport:
$ readelf --symbols /usr/lib*/libabrt.so.0    |  grep libreport_g_verbose
    51: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND libreport_g_verbose
$ readelf --symbols /usr/lib*/libreport.so.0  |  grep libreport_g_verbose
   162: 0000003da1615828     4 OBJECT  GLOBAL DEFAULT   24 libreport_g_verbose

2. libabrt does not DT_NEED libreport:
$ ldd /usr/lib64/libabrt.so.0
	linux-vdso.so.1 =>  (0x00007fff997ff000)
	libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x0000003d99000000)
	libc.so.6 => /lib64/libc.so.6 (0x0000003d97400000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003d97c00000)
	librt.so.1 => /lib64/librt.so.1 (0x0000003d98400000)
	/lib64/ld-linux-x86-64.so.2 (0x0000003d97000000)


Expected results: libabrt depends on libreport.


Additional info:

Comment 1 Nikola Pajkovsky 2012-05-15 11:32:49 UTC
commit 6c96fe597fb578f59efc36e39487dbbfc6f9e4b6
Author: Nikola Pajkovsky <npajkovs>
Date:   Tue May 15 13:27:08 2012 +0200

    libabrt: link with libreport
    
    Signed-off-by: Nikola Pajkovsky <npajkovs>


$ readelf --symbols /usr/lib*/libabrt.so.0 | grep libreport_g_verbose
    52: 0000000000000000     0 OBJECT  GLOBAL DEFAULT  UND libreport_g_verbose

$ ldd /usr/lib*/libabrt.so.0
	linux-vdso.so.1 =>  (0x00007fff50f55000)
	libreport.so.0 => /lib64/libreport.so.0 (0x0000003bfd400000)
	libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00000037f9000000)
	libc.so.6 => /lib64/libc.so.6 (0x00000037f7000000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00000037f7400000)
	librt.so.1 => /lib64/librt.so.1 (0x00000037f7c00000)
	libelf.so.1 => /lib64/libelf.so.1 (0x00000037f8c00000)
	/lib64/ld-linux-x86-64.so.2 (0x00000037f6c00000)

Do I missing something?

Comment 2 John Reiser 2012-05-15 15:03:43 UTC
Things look OK now because "ldd libabrt.so.0" does include the line:
 libreport.so.0 => /lib64/libreport.so.0 (0x0000003bfd400000)
which means that libreport.so.0 is required to be loaded by libabrt.so.0.

Direct confirmation would be if libreport.so.0 is listed as DT_NEEDED by libabrt:
  $ readelf --dynamic libabrt.so.0  |  grep '(NEEDED)'
    0x0000000000000001 (NEEDED)             Shared library: [libreport.so.0]

Comment 3 Fedora Update System 2012-12-20 08:53:56 UTC
abrt-2.0.20-1.fc18,btparser-0.24-1.fc18,libreport-2.0.20-1.fc18 has been submitted as an update for Fedora 18.
https://admin.fedoraproject.org/updates/abrt-2.0.20-1.fc18,btparser-0.24-1.fc18,libreport-2.0.20-1.fc18

Comment 4 Fedora Update System 2012-12-20 09:44:31 UTC
abrt-2.0.20-1.fc17 has been submitted as an update for Fedora 17.
https://admin.fedoraproject.org/updates/abrt-2.0.20-1.fc17

Comment 5 Fedora Update System 2012-12-21 01:28:00 UTC
Package abrt-2.0.20-1.fc18, btparser-0.24-1.fc18, libreport-2.0.20-1.fc18:
* should fix your issue,
* was pushed to the Fedora 18 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing abrt-2.0.20-1.fc18 btparser-0.24-1.fc18 libreport-2.0.20-1.fc18'
as soon as you are able to.
Please go to the following url:
https://admin.fedoraproject.org/updates/FEDORA-2012-20725/abrt-2.0.20-1.fc18,btparser-0.24-1.fc18,libreport-2.0.20-1.fc18
then log in and leave karma (feedback).

Comment 6 Fedora Update System 2013-01-12 01:14:46 UTC
abrt-2.0.20-1.fc18, btparser-0.24-1.fc18, libreport-2.0.20-1.fc18 has been pushed to the Fedora 18 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 7 Fedora Update System 2013-02-26 02:36:49 UTC
abrt-2.0.20-1.fc17, btparser-0.24-1.fc17, libreport-2.0.20-1.fc17 has been pushed to the Fedora 17 stable repository.  If problems still persist, please make note of it in this bug report.