Bug 1316956

Summary: preserve debuginfo in libdyninstAPI_RT.so
Product: Red Hat Developer Toolset Reporter: Martin Cermak <mcermak>
Component: dyninstAssignee: Josh Stone <jistone>
Status: CLOSED ERRATA QA Contact: Martin Cermak <mcermak>
Severity: medium Docs Contact:
Priority: unspecified    
Version: DTS 4.1 RHEL 7CC: extras-qa, fche, jistone, lberk, mbenitez, mpetlan, orion, wcohen
Target Milestone: beta1   
Target Release: 4.1   
Hardware: Unspecified   
OS: Linux   
Whiteboard:
Fixed In Version: devtoolset-4.1-dyninst-9.10-3 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 1315841 Environment:
Last Closed: 2016-05-31 08:42:47 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:
Bug Depends On: 1315841    
Bug Blocks:    

Description Martin Cermak 2016-03-11 14:20:30 UTC
+++ This bug was initially created as a clone of Bug #1315841 +++

Without dyninst-debuginfo installed, the API_RT initialization code dies with "could not find necessary internal variable" ... type messages.  Let's investigate tweaking the build/package system to preserve API_RT.so debuginfo within that file (unstripped) to make this problem stop.

--- Additional comment from William Cohen on 2016-03-09 14:13:55 CET ---

Is there a simple reproducer for this?  What was the actual output message when it failed?

--- Additional comment from Michael Petlan on 2016-03-09 16:33:35 CET ---

From IRC:

1) remove dyninst-debuginfo
2) run one of the following:

2a) stap --dyninst -L 'process.function("main@*:*")' -c ./hello

2b) the /tools/dyninst/Sanity/smoke-test testcase

2c) some test from the dyninst-testsuite, for example test4_2

--- Additional comment from William Cohen on 2016-03-09 19:06 CET ---

This patch is currently untested.  However, it is likely that this will clear up that particular failure to load a variable.  The tip off is that there was a similar findVarsByAll("libdyninstAPI_RT_init_localPid", vars) earlier in the same function that did work.  Looking for the variable that worked it was found that that libdyninstAPI_RT_init_maxthreads wasn't being exported in dyninstRTEport.h.  There might be missing DLLEXPORTs. Will see after testing this patch.

--- Additional comment from William Cohen on 2016-03-10 21:01:58 CET ---

The patched version for dyninst has been built for f24 and rawhide.

Note that there is an issue with libdwarf (rbbz #1316695 - libdwarf not checking whether error is null before attempting to use it for dwarf_srcfiles) that will cause a segfault if the dyninst-debuginfo is installed on the machine.

Comment 2 Michael Petlan 2016-05-13 12:35:58 UTC
# rpmquery devtoolset-4-dyninst-debuginfo devtoolset-4-dyninst
package devtoolset-4-dyninst-debuginfo is not installed
devtoolset-4-dyninst-9.1.0-3.el7.x86_64

Dynamic instrumentation works under DTS without devtoolset-4-dyninst-debuginfo installed.

VERIFIED

Comment 4 errata-xmlrpc 2016-05-31 08:42:47 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHEA-2016:1146