[lldb-dev] TestRecursiveInferior.py

Jason Molenda jmolenda at apple.com
Thu Sep 26 16:00:00 PDT 2013


On Sep 26, 2013, at 7:40 AM, Thirumurthi, Ashok <ashok.thirumurthi at intel.com> wrote:

> Also, if we can oscillate between two CFAs, then wouldn't any size of cycle be possible?  Perhaps the more robust defense is to stop the unwind if the new frame's CFA exists anywhere in the thread's call stack...

Any time we're getting a CFA repeat (assuming abi->FunctionCallsChangeCFA()), that would be a sign that the unwinder has made a mistake.  Looking over my notes from when I was working on the patch in r166757, I don't see why I added that specific check for a two-frame cycle.  To be honest, I wonder if I was just dreaming up a problem and adding a patch to address it.  

I agree that if we are going to worry about this, we should check all frames to see if a given CFA has been seen already.  Or (if abi->FunctionCallsChangeCFA()), check that each CFA is less-than or greater-than (depending on which way the stack moves) the previous frame.

But I think we could just remove that two-cycle check altogether and be fine.



More information about the lldb-dev mailing list