I did a little bit of debugging with gdb. This stray entry seems to be the
first element of the vector returned from the call to appImage->getModules
() where appImage is the BPatch_image.




On Mon, Jul 28, 2014 at 7:01 PM, Buddhika Chamith Kahawitage Don <
budka...@umail.iu.edu> wrote:

> Yes. That output is coming from CodeCoverage.C apparently when it is
> trying iterate the module list.
>
>         if ((*moduleIter)->isSharedLib ()) {
>             if (!includeSharedLib
>                     || skipLibraries.find (moduleName) !=
> skipLibraries.end ()) {
>                 cout << "Skipping library: " << moduleName << endl;
>                 continue;
>             }
>         }
>
> I have attached the output. The interesting bit of output seems to be the
> following.
>
> Instrumenting Basic Block 0x40b695 of BZ2_hbMakeCodeLengths
> Instrumenting Basic Block 0x40b69c of BZ2_hbMakeCodeLengths
> Instrumenting Basic Block 0x40b6a5 of BZ2_hbMakeCodeLengths
> Instrumenting Basic Block 0x40b6b4 of BZ2_hbMakeCodeLengths
> Instrumenting Basic Block 0x40b6c6 of BZ2_hbMakeCodeLengths
> Inserting instrumention at function entry of __libc_csu_fini
> Instrumenting Basic Block 0x40b6d0 of __libc_csu_fini
> Skipping library: ld-linux-x86-64.so.2
> Skipping library: libc.so.6
> insertInitCallback on huffman.c
> insertFiniCallback on huffman.c
>  createSymbolTables for »»»»»»»»»»»»»»»»Q
> ::driver for emitElf64
> Emitting to temporary file bzipsfJyqC
> section .interp addr = 400200 off = 238 size = 1c
> section .note.ABI-tag addr = 40021c off = 121c size = 20
> section .note.gnu.build-id addr = 40023c off = 123c size = 24
> section .gnu.hash addr = 400260 off = 1260 size = 24
>
> I also checked my LD_LIBRARY_PATH and LD_LIBRARY entries for any weird
> stuff just in case and found none.
>
> Regards
> Bud
>
>
>
> On Mon, Jul 28, 2014 at 5:10 PM, Bill Williams <b...@cs.wisc.edu> wrote:
>
>> On 07/25/2014 10:53 PM, Buddhika Chamith Kahawitage Don wrote:
>>
>>> Yes that did the trick. Thanks. But that doesn't seem to be the end of
>>> the road unfortunately :(. I tried instrumenting several apps. I see
>>> following inconsistent behavior.
>>>
>>> Initially the instrumentation starts with following message for all apps.
>>>
>>>  ...I've been through our source and can't find the source of this log
>> message anywhere inside the Dyninst tree. Is this coming from the mutator
>> by chance? And if so, can you poke in a debugger and find where the
>> ostensible library name is coming from and what it looks like as a hex dump?
>>
>> I mean, it seems obvious that this is an attempt to open/instrument a
>> library dependency with a bogus (corrupt? missing? whole library entry is
>> invalid?) pathname, skipping it, copying it over into the rewritten
>> binary's DT_NEEDED entries, and the loader horking that <arbitrary line
>> noise> is not a loadable library. What's not obvious is where this bogus
>> dependency came from--I haven't seen this in any of our testing.
>>
>> Can you turn on SYMTAB_DEBUG_REWRITE in your environment and send me that
>> log?
>>
>>  "Skipping library: ����������������1"
>>>
>>> Then some of the apps fails when executed with the following message.
>>>
>>> "error while loading shared libraries: ����������������Q: cannot open
>>> shared object file: No such file or directory"
>>>
>>> So I checked the ldd output from before and after instrumentation for a
>>> such application.
>>>
>>> Before
>>>
>>> $ ldd bzip2
>>>      linux-vdso.so.1 =>  (0x00007fff23fff000)
>>>      libc.so.6 => /lib64/libc.so.6 (0x0000003acc200000)
>>>      /lib64/ld-linux-x86-64.so.2 (0x0000003acbe00000)
>>>
>>> After
>>>
>>> $ ldd bz
>>>      linux-vdso.so.1 =>  (0x00007fffba172000)
>>>      libc.so.6 => /lib64/libc.so.6 (0x0000003acc200000)
>>>      ./libInst.so (0x00007f8673335000)
>>>      /home/buddhikac/dyninst/build/lib/libdyninstAPI_RT.so.8.2
>>> (0x00007f867209b000)
>>>       => /lib64/ld-linux-x86-64.so.2 (0x0000003acbe00000)
>>>      ����������������Q => not found
>>>      libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003ad0200000)
>>>      libm.so.6 => /lib64/libm.so.6 (0x0000003acca00000)
>>>      libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003acf600000)
>>>      libdl.so.2 => /lib64/libdl.so.2 (0x0000003acc600000)
>>>
>>> Where it seems to be that a stray entry has been added during
>>> instrumentation. Not sure what to make of this. Any ideas?
>>>
>>> Bud
>>>
>>>
>>>
>>>
>>> On Fri, Jul 25, 2014 at 11:11 AM, Bill Williams <b...@cs.wisc.edu
>>> <mailto:b...@cs.wisc.edu>> wrote:
>>>
>>>     On 07/25/2014 01:53 AM, Buddhika Chamith Kahawitage Don wrote:
>>>
>>>         Thanks for the input. I finally manage to get the build working.
>>>         However
>>>         when I try to run the code-coverage tool linked to this version
>>>         I get
>>>         the following.
>>>
>>>         codeCoverage: ~/dyninst/dyninstAPI/src/__binaryEdit.C:928:
>>>         int_variable*
>>>         BinaryEdit::createTrampGuard()__: Assertion `var' failed.
>>>
>>>         Aborted
>>>
>>>         Is this something which sounds familiar?
>>>
>>>     Yes; is your DYNINSTAPI_RT_LIB environment variable set to point to
>>>     libdyninstAPI_RT.so's full pathname? And does libdyninstAPI_RT.so
>>>     have a public DYNINST_default_tramp_guards symbol?
>>>
>>>         Regards
>>>         Bud
>>>
>>>
>>>
>>>         On Thu, Jul 24, 2014 at 1:38 PM, Bill Williams <b...@cs.wisc.edu
>>>         <mailto:b...@cs.wisc.edu>
>>>         <mailto:b...@cs.wisc.edu <mailto:b...@cs.wisc.edu>>> wrote:
>>>
>>>              On 07/24/2014 12:35 PM, Buddhika Chamith Kahawitage Don
>>> wrote:
>>>
>>>                  I tried clearing old install and I am still getting
>>>         that error.
>>>                  Apparently eventhough entryIDs.h file contain this
>>>         entry it's not
>>>                  getting properly included in arch-X86.C file during
>>>         compilation.
>>>
>>>                  Since I am not familiar with CMake builds (it seems to
>>>         generate
>>>                  lot of
>>>                  intermediate build files) I am not sure where to look
>>>         to debug this
>>>                  issue. Any pointers would be greatly appreciated.
>>>
>>>              IIRC entryIDs.h moved in our build structure between 8.1.2
>>>         and 8.2;
>>>              you could be picking up an old copy from the build tree
>>>         rather than
>>>              from the installed location.
>>>
>>>              I haven't seen this on actually clean checkouts, so you've
>>>         still got
>>>              a second entryIDs.h kicking around somewhere...
>>>
>>>                  Regards
>>>                  Bud
>>>
>>>
>>>
>>>                  On Tue, Jul 22, 2014 at 8:23 PM, Buddhika Chamith
>>>         Kahawitage Don
>>>                  <budka...@umail.iu.edu <mailto:budka...@umail.iu.edu>
>>>         <mailto:budka...@umail.iu.edu <mailto:budka...@umail.iu.edu>>
>>>                  <mailto:budka...@umail.iu.edu
>>>         <mailto:budka...@umail.iu.edu> <mailto:budka...@umail.iu.edu
>>>         <mailto:budka...@umail.iu.edu>>__>__>
>>>
>>>                  wrote:
>>>
>>>                       Will try that out.
>>>
>>>                       Thanks
>>>                       Bud
>>>
>>>
>>>                       On Tue, Jul 22, 2014 at 2:06 PM, Matthew LeGendre
>>>                       <legend...@llnl.gov <mailto:legend...@llnl.gov>
>>>         <mailto:legend...@llnl.gov <mailto:legend...@llnl.gov>>
>>>                  <mailto:legend...@llnl.gov <mailto:legend...@llnl.gov>
>>>         <mailto:legend...@llnl.gov <mailto:legend...@llnl.gov>>>> wrote:
>>>
>>>
>>>
>>>                           On Mon, 21 Jul 2014, Buddhika Chamith
>>>         Kahawitage Don wrote:
>>>
>>>                               I tried building v8.2 branch but got the
>>>         following
>>>                  error.
>>>
>>>                               arch-x86.C:368: error: ‘e_cmpsd_sse’ was
>>> not
>>>                  declared in
>>>                               this scope
>>>
>>>                               Really appreciate if you can (re)post the
>>>         build
>>>                               instructions. I tried
>>>                               browsing the list archive. But couldn't
>>>         find any
>>>                  specific
>>>                               build how-to. May
>>>                               be I missed it due to the message volume.
>>>
>>>
>>>                           The cmpsd_sse instructions were only added to
>>>         v8.2 a
>>>                  month ago
>>>                           by Ray. They weren't in Dyninst 8.1.  I'd bet
>>> your
>>>                  install is
>>>                           pulling the old 8.1 header files (specifically
>>>                  entryID.h, where
>>>                           e_cmpsd_sse is defined) and mixing them with
>>>         the new
>>>                  8.2 source.
>>>                             Try clearing out your old install and see if
>>>         that
>>>                  fixes the build.
>>>
>>>                           -Matt
>>>
>>>
>>>
>>>
>>>
>>>              --
>>>              --bw
>>>
>>>              Bill Williams
>>>              Paradyn Project
>>>         b...@cs.wisc.edu <mailto:b...@cs.wisc.edu>
>>>         <mailto:b...@cs.wisc.edu <mailto:b...@cs.wisc.edu>>
>>>
>>>
>>>
>>>
>>>
>>>     --
>>>     --bw
>>>
>>>     Bill Williams
>>>     Paradyn Project
>>>     b...@cs.wisc.edu <mailto:b...@cs.wisc.edu>
>>>
>>>
>>>
>>
>> --
>> --bw
>>
>> Bill Williams
>> Paradyn Project
>> b...@cs.wisc.edu
>>
>
>
_______________________________________________
Dyninst-api mailing list
Dyninst-api@cs.wisc.edu
https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api

Reply via email to