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
Passing test_pt_ls (at least on RHEL7) #286
Conversation
retest this please |
This does not seem to be passing for me on ubuntu. I'm getting an assert running parseThat. Here is the stack trace: https://gist.github.com/jdetter/849e04efb0051be61532ccaad3b41f3a |
@jdetter Do you first pull from the github master to get the stack analysis fix from Matt? It seems like you are missing those fixes. |
@mxz297 I pulled the latest master and merged that into my local |
@jdetter You are right. This seems to be a different assertion failure in stack analysis. Could you help find out we are asserting when we are analyzing which function? @morehouse We seem to find a different assertion problem in stack analysis. This time, we fail when we are analyzing libc-2.19 from Ubuntu 14, which is a different version of libc from the libc on RHEL6 or REHEL7. |
@jdetter Which libc version is on your system? I run stack analysis on all functions in libc-2.19, which is used by Ubuntu 14. Stack analysis did not assert. |
@mxz297 When we're in stack frame 10 (function |
@mxz297 if you want to look at the libc I'm using, you can get it here: http://cs.wisc.edu/~detter/libc-2.23.so |
@morehouse This should be a stack analysis problem. By using libc-2.23.so provided by John, I can reproduce this assertion failure. It seems like you are expecting that the operand of a push instruction can only be either a register or an immediate. However, in this case, the push instruction will push a stack location to the top of the stack. If you re-copy my stack analysis mutator at /p/paradyn/development/xmeng/workspaces/DataflowAPIExamples/StackAnalysis.cpp and run it with
You should be able to reproduce the failure and the offending instruction is
@jdetter Thanks for you input! |
Added StackAnalysis support for the problematic push instruction. @jdetter Could you retest? |
@morehouse Everything is passing on my end now! |
@morehouse Do you mind running through the StackAnalysis code that's on master and ensuring that it's got asserts properly replaced with exceptions (either bottoming values or failing the analysis in catch blocks, and logging the failure)? I doubt this is going to be the only binary that catches us with instructions we don't handle correctly. Something like:
should let you get started with a global replace, and then some minimal try-catch code should make things well-behaved. ETA: this is really, really dirty on Jenkins, with a bunch of new failures and crashes: |
retest this please |
Now that line info fixes are merged: retest this please |
Statically linked/g++/pic binaries are failing here (and for some reason they haven't run on all PRs, so this may or may not be a legitimate regression). Jenkins is on an ubuntu box; @jdetter, can you sanity check and see if you can reproduce locally? You'll probably need to install static libc/libc++ etc if you haven't already. Results of interest are here: |
@wrwilliams It looks like I'm also having issues with static+pic binaries. |
@jdetter Can you get a call stack for the crash? |
I'm running parseThat on a simple binary compiled with
I'm guessing I have to recompiled dyninst with |
Nope. Don't worry about it, I got what I needed from the Jenkins box. |
retest this please @jdetter: What I'm seeing is failures/crashes in test1_1 -rewriter -staticlink -pic that I haven't gotten to the bottom of. Those are worth attempting to reproduce with a stacktrace if you can. |
retest this please |
On Vanilla Ubuntu 14.04 I am passing this test:
I have to rebuild boost on my office machine but I will test there as well and see what I get. I should have something for you today. |
Okay, here's the reproducer that triggers the crash under jenkins, should be fixed on the autodetect RT lib PR: I'm also seeing failures on that PR that only show up with that broad a scope on the tests, This is being a fun one for certain values of fun... ETA: @jdetter is there a good time for the two of us to compare notes tomorrow (12/14)? |
@wrwilliams I have class at 2:30p today but besides that I'm free all day. Do you want me to meet you in your office around 11am? |
@wrwilliams Yeah I get a bunch of crashing tests that complain about not being able to find functions. It also looks like the test only fails when running with your reproducer. When I run the tests individually they all pass. |
My spider sense says there's some memory corruption and or bad handling of out of memory, judging from the fact that I can still take down Jenkins with a sufficiently large test run. I'll grab you when I get in. |
I ran the test again by itself using valgrind and it looks like there wasn't that much memory leaked. However
|
…st/dyninst into release9.3/fixes/test_pt_ls
With the autodetect commits merged into my local branch I am no longer getting the crashes from Bill's reproducer. We decided to merge the autodetect commits into this PR to see if it will go through the Jenkins. |
@wrwilliams I'm doing a clean build locally and I'm going to run |
Sounds good; it's also worth looking at the leak question at this point if no corruption is evident. |
Reunified Dyninst tests; running 2x Dyninst test sets in parallel is worse for memory than we can handle, so we'll serialize and see if that helps. Retest this please. |
Once more with feeling and with test1_35 removed (was skipped everywhere, can't see how it wasn't causing rewriter mode failures). Retest this please. |
…ng it by default when performing any absloc/absregion analysis) and to ensure stack analysis performed during relocation gets cleaned up afterward.
Merging this because it's clearly improvement. |
No description provided.