[syslog-ng] [Bug 198] New: debug-info fails to extract info from libsyslog-ng-crypto.so

bugzilla at bugzilla.balabit.com bugzilla at bugzilla.balabit.com
Tue Sep 25 22:08:23 CEST 2012


https://bugzilla.balabit.com/show_bug.cgi?id=198

           Summary: debug-info fails to extract info from libsyslog-ng-
                    crypto.so
           Product: syslog-ng
           Version: 3.3.x
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: unspecified
         Component: packaging
        AssignedTo: folti at balabit.hu
        ReportedBy: svensken at jla.rutgers.edu
Type of the Report: bug
   Estimated Hours: 0.0


The syslog-ng package fails to build on Centos6 using mock with version 3.3.6 source code and a syslog-ng-3.2.5-3.el6 spec file.
The problem seems to involve the debug info package, provided by rpm-4.8.0-27.el6.x86_64 and rpm-build-4.8.0-27.el6.x86_64
Seemingly, debug info cannot be extracted from libsyslog-ng-crypto.so, whether the .so or the 'debugedit' binary is doing something incorrectly.
Here's the relevant part of the build log:

---------
...
+ /usr/lib/rpm/find-debuginfo.sh --strict-build-id /builddir/build/BUILD/syslog-ng-3.3.6
extracting debug info from /builddir/build/BUILDROOT/syslog-ng-3.3.6-2.ru6.x86_64/usr/bin/pdbtool
extracting debug info from /builddir/build/BUILDROOT/syslog-ng-3.3.6-2.ru6.x86_64/usr/bin/loggen
extracting debug info from /builddir/build/BUILDROOT/syslog-ng-3.3.6-2.ru6.x86_64/lib64/libsyslog-ng-3.3.6.so
extracting debug info from /builddir/build/BUILDROOT/syslog-ng-3.3.6-2.ru6.x86_64/lib64/syslog-ng/libcsvparser.so
extracting debug info from /builddir/build/BUILDROOT/syslog-ng-3.3.6-2.ru6.x86_64/lib64/syslog-ng/libdbparser.so
extracting debug info from /builddir/build/BUILDROOT/syslog-ng-3.3.6-2.ru6.x86_64/lib64/syslog-ng/libsyslog-ng-crypto.so
error: Bad exit status from /var/tmp/rpm-tmp.BZBLBe (%install)
    Bad exit status from /var/tmp/rpm-tmp.BZBLBe (%install)
RPM build errors:
Child returncode was: 1
...
---------

Throwing "%define debug_package %{nil}" into the spec will make the rpm build without errors. 

So it looks like the script "/usr/lib/rpm/find-debuginfo.sh" is failing to
'extract debug info' from "libsyslog-ng-crypto.so"
The lack of an error message is no surprise; here's the function (inside
find-debuginfo.sh) that's actually doing the debug info extraction:

---------
202   echo "extracting debug info from $f"
203   id=$(/usr/lib/rpm/debugedit -b "$RPM_BUILD_DIR" -d /usr/src/debug \
204                   -i -l "$SOURCEFILE" "$f") || exit
205   if [ -z "$id" ]; then
206     echo >&2 "*** ${strict_error}: No build ID note found in $f"
207     $strict && exit 2
208   fi
---------

I tried modifying it, and found that the "exit" function is never even reached, since (as it turns out) /usr/lib/rpm/debugedit returns "Segmentation fault"
when run on libsyslog-ng-crypto.so...
Running /usr/lib/rpm/debugedit on the libraries that seem to be working (e.g. libcsvparser.so and libdbparser.so) without extra arguments returns no errors,
however.

I've found that the library itself, libsyslog-ng-crypto.so, seems to have a debug info format different from the other libraries' that succeeded in the build.
As I understand it, the following command will display the debug info for a shared library:
`readelf -w /path/to/library.so`

It seems that the libcsvparser.so and libdbparser.so libraries both use an ".eh_frame section" to store their debug info, while libsyslog-ng-crypto.so seems to
put its info into a ".debug_info section" (with hex line numbers of some sort), with an empty ".eh_frame section" section.

I noticed that this crypto library was added fairly recently in the change logs, so perhaps it uses a newish format for its debug-info that is not yet
supported by the debugedit binary, which is owned by rpm-build-4.8.0-27.el6.x86_64

Could there be a problem on my end, or is this an issue with the library itself? Could it be both?


-- 
Configure bugmail: https://bugzilla.balabit.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.


More information about the syslog-ng mailing list