New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cannot find malloc symbol in libc.so #126
Comments
This could be an issue with dynamic symbol processing in dyninst. In ubuntu's version of libc,
In Fedora 23's libc, it exists in both
As of right now, it looks like we are able to process the symbol |
It turns out the Dyninst can be run directly on libc.so.6 to reproduce the issue, which can be found here: http://cs.wisc.edu/~detter/libc.so.6 Here is a gist of some of the malloc parsing output: https://gist.github.com/jdetter/a15f907bc3234776baf8d5766d22bfbc @mxz297 could you take a look at this jump table issue? |
So I need a bit more context than the gist there, but that looks to me like we're correctly recognizing that a PLT stub is non-returning based on the code, but not correctly recognizing that it's a PLT stub. Is that in fact what's going on at the targ1370 function? |
@wrwilliams I'm not sure, the full log will probably more useful. It was way to big for a gist: http://pages.cs.wisc.edu/~detter/libc_parse_output It looks like malloc (__libc_malloc) starts getting parsed around line 1643279 of the log. For me, chrome couldn't handle searching on such a large file so you might want to use wget and throw it into vim. |
The problematic indirect jump should be an indirect tail call. Our tail call heuristics should really pick it up as a tail call. Fix is on the way. |
Our tail call heuristics currently say that a jump is not a tail call if the jump has a unknown target. In the cases of indirect tail calls, we never know the jump targets. Even when the jump target is unknown, we should still apply other tail call heuristics to check tail calls. Now I can successfully run the BPatch example on my machine. |
Sent in from Martijn on the DyninstAPI mailing list:
Running the bpatch example from the Paradyn tutorial on x86_64 Ubuntu 16.04 throws an assert:
Dyninst is unable to find the symbol in the libc module. However, the symbol exists:
Ubuntu 16.04's version of
libc.so.6
is available here.The text was updated successfully, but these errors were encountered: