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.
Is there a simple reproducer for this? What was the actual output message when it failed?
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
Created attachment 1134607 [details] Missing DLLEXPORT of libdyninstAPI_RT_init_maxthreads 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.
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.
Looks good here: ======= # cat test.c int main() { return 0; } # gcc -g test.c # rpm -q dyninst dyninst-9.1.0-3.fc24.x86_64 # rpm -qa | grep dyninst dyninst-9.1.0-3.fc24.x86_64 dyninst-devel-9.1.0-3.fc24.x86_64 # stap --dyninst -e 'probe process.function("main") { log("hit") }' -c ./a.out --SERIOUS-- #0: Dyninst was unable to load the dyninst runtime library into the application. This may be caused by statically linked executables, or by having dyninst linked against a different version of libelf than it was built with. --FATAL-- #68: Dyninst was unable to create the specified process --FATAL-- #68: create process failed bootstrap stapdyn: ERROR: Couldn't create the target process WARNING: /usr/local/bin/stapdyn exited with status: 1 Pass 5: run failed. [man error::pass5] # # # rpm -qa | grep dyninst dyninst-9.1.0-4.fc25.x86_64 dyninst-devel-9.1.0-4.fc25.x86_64 # # stap --dyninst -e 'probe process.function("main") { log("hit") }' -c ./a.out hit # ======= Thanks for the fix!
dyninst-9.1.0-4.fc24 has been submitted as an update to Fedora 24. https://bodhi.fedoraproject.org/updates/FEDORA-2016-748f888241
dyninst-9.1.0-4.fc24 has been pushed to the Fedora 24 testing repository. If problems still persist, please make note of it in this bug report. See https://fedoraproject.org/wiki/QA:Updates_Testing for instructions on how to install test updates. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2016-748f888241
dyninst-9.1.0-4.fc24 has been pushed to the Fedora 24 stable repository. If problems still persist, please make note of it in this bug report.