Re: [DynInst_API:] Cannot find function


Date: Thu, 13 Aug 2015 16:43:14 +0300
From: Ioannis Konstadelias <g1ann1s1332@xxxxxxxxx>
Subject: Re: [DynInst_API:] Cannot find function
I indeed have both installs of libelf.so.{0,1}. But I have only one libelf.h and it is under /usr/include/. I opened it by I didn't understand for which version of libelf.so it is so I tried to rebuilt Dyninst once with .so.0 and once with .so.1.

With .so.0 Dyninst installation completed successfully, the compilation of the injecter was successful but the execution was fatal:

cmake /home/gon1332/Development/Repositories/dyninst -DBOOST_ROOT=/usr/local -DLIBDWARF_INCLUDE_DIR=/usr/local/dwarf -DLIBDWARF_LIBRARIES=/usr/local/lib/libdwarf.so -DLIBELF_INCLUDE_DIR=/usr/include/libelf.h -DLIBELF_LIBRARIES=/usr/lib/x86_64-linux-gnu/libelf.so.0

./func_instr
--FATAL-- #68: Dyninst was unable to create the specified process
--FATAL-- #68: create process failed bootstrap
[1]ÂÂÂ 28984 segmentation fault (core dumped)Â ./func_instr
With .so.1

cmake /home/gon1332/Development/Repositories/dyninst -DBOOST_ROOT=/usr/local -DLIBDWARF_INCLUDE_DIR=/usr/local/dwarf -DLIBDWARF_LIBRARIES=/usr/local/lib/libdwarf.so -DLIBELF_INCLUDE_DIR=/usr/include/libelf.h -DLIBELF_LIBRARIES=/usr/lib/x86_64-linux-gnu/libelf.so.1

./func_instr
--SERIOUS-- #100: Image: Unable to find function: foo
Hello, world!
Either way I had problems. How could I by sure about my header file?

Thanks a lot.


On 28/07/2015 07:15 ÎÎ, Matthew LeGendre wrote:

You might be hitting a common problem that manifests when a system has installs of both the orignal libelf (libelf.so.0) and the RedHat version of libelf (libelf.so.1). If Dyninst is built against the header files of one libelf and the library of the other, that can cause it to fail to parse symbols.

-Matt

On Tue, 28 Jul 2015, Bill Williams wrote:
On 07/27/2015 05:50 PM, Ioannis Konstadelias wrote:
Well,

maybe then I have something wrong in my mutator source. Here is the
whole directory. I use the version with the commit that fixes the boost
problem.

Your mutator also works fine for me locally, and the not-yet-committed changes I have are quite small and not relevant to this issue. I do have Xiaozhu's parsing fixes, which you may or may not have pulled. If you have pulled them, there's probably something not quite clean in your Dyninst build.

On 27/07/2015 11:05 ÎÎ, Bill Williams wrote:
With this mutatee and git-head locally, the following sequence:

ÂÂÂ BPatch bp;
ÂÂÂ BPatch_binaryEdit* be = bp.openBinary(argv[1]);
ÂÂÂ std::vector<BPatch_function*> bpfuncs;
ÂÂÂ be->getImage()->findFunction("foo", bpfuncs);
ÂÂÂ cerr << "Found " << bpfuncs.size() << " funcs" << endl;

is finding one function "foo" for me, as expected.

On 07/27/2015 11:57 AM, Ioannis Konstadelias wrote:
Here it is.

On 27/07/2015 07:53 ÎÎ, Bill Williams wrote:
On 07/27/2015 11:41 AM, Ioannis Konstadelias wrote:
Sorry,

My bad. I should've tell you. I've also tried
includeUninstrumentable =
true but the results were the same.

That seems fishy. Mind sending me the mutatee binary?

On 27/07/2015 07:01 ÎÎ, Bill Williams wrote:
On 07/25/2015 11:44 AM, Ioannis Konstadelias wrote:
Hi everyone,

first of all I use the latest version of dyninstAPI (git head).

I was experimenting with the mutator program of the Appendix A from
the
manuals (not the re-tee one),
and tried the custom really simple mutatee program below:

ÂÂÂ #include <stdio.h>

ÂÂÂ int foo() {return 1;}

ÂÂÂ int main(void)
ÂÂÂ {
ÂÂÂÂÂÂÂÂ puts("Hello, world!");
ÂÂÂÂÂÂÂÂ foo();
ÂÂÂÂÂÂÂÂ return 0;
ÂÂÂ }


I added the counter snippet for main and it worked. But never
worked for
function foo. The error I took was:

ÂÂÂ Reading symbols from ./func_instr...done.
ÂÂÂ (gdb) run
ÂÂÂ Starting program: /home/gon1332/Training/Dyninst/func_instr
ÂÂÂ Traceback (most recent call last):
ÂÂÂÂÂÂ File

"/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19-gdb.py",



ÂÂÂ line 63, in <module>
ÂÂÂÂÂÂÂÂ from libstdcxx.v6.printers import
register_libstdcxx_printers
ÂÂÂ ImportError: No module named 'libstdcxx'
ÂÂÂ [Thread debugging using libthread_db enabled]
ÂÂÂ Using host libthread_db library
ÂÂÂ "/lib/x86_64-linux-gnu/libthread_db.so.1".
ÂÂÂ [New Thread 0x7ffff46af700 (LWP 23032)]
ÂÂÂ [New Thread 0x7ffff3eae700 (LWP 23033)]
ÂÂÂ [New Thread 0x7ffff34a4700 (LWP 23034)]
ÂÂÂ *--SERIOUS-- #100: Image: Unable to find function: foo*

ÂÂÂ Program received signal SIGSEGV, Segmentation fault.
ÂÂÂ 0x00000000004018c7 in findEntryPoint (app=0x63c100) at
func_instr.cc:50
ÂÂÂ 50ÂÂÂÂÂÂÂ points = functions[0]->findPoint(BPatch_entry);
ÂÂÂ (gdb) q
ÂÂÂ A debugging session is active.

ÂÂÂÂÂÂÂÂ Inferior 1 [process 23027] will be killed.

I tried nm and the foo function was there mangled:

 â Dyninst nm hello | grep foo
ÂÂÂ 000000000040057d T _Z3foov

but according to your note about findFunction:

ÂÂÂ /*"*[NOTE: If name is not found to match any demangled function
ÂÂÂ names in the module, the search is repeated as if name is a
mangled
ÂÂÂ function name. If this second search succeeds, functions with
ÂÂÂ mangled names matching name are returned instead.]*"*/

shouldn't it be working?

It should, but very small functions are not always marked as
instrumentable (which in practice means instrumentable without using
traps). Try findFunction with includeUninstrumentable = true, and let
me know if that works.

Should I demangle (or mangle) it by myshelf and then search?

Thanks,

Ioannis Konstantelias,
Undergraduate at University of Thessaly


_______________________________________________
Dyninst-api mailing list
Dyninst-api@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api









_______________________________________________
Dyninst-api mailing list
Dyninst-api@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api






_______________________________________________
Dyninst-api mailing list
Dyninst-api@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api



--Â
--bw

Bill Williams
Paradyn Project
bill@xxxxxxxxxxx
_______________________________________________
Dyninst-api mailing list
Dyninst-api@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api

--
Konstantelias Ioannis
Undergraduate at
Department of Electrical and Computer Engineering
University of Thessaly, Greece
[← Prev in Thread] Current Thread [Next in Thread→]