[Lldb-commits] [lldb] r243102 - Revert "Fix an issue where LLDB would run out of stack space ..."

Pavel Labath labath at google.com
Fri Jul 24 02:52:26 PDT 2015


Author: labath
Date: Fri Jul 24 04:52:25 2015
New Revision: 243102

URL: http://llvm.org/viewvc/llvm-project?rev=243102&view=rev
Log:
Revert "Fix an issue where LLDB would run out of stack space ..."

This commit introduced an infinite recursion in
ValueObjectChild::CanUpdateWithInvalidExecutionContext (because FollowParentChain also considers
the current object), which broke nearly all the tests. Ignoring the current object removes the
recursion, but two tests still time out (TestDataFormatterLibcxxList.py and
TestValueObjectRecursion.py) for some reason. Reverting for now.

Modified:
    lldb/trunk/include/lldb/Core/ValueObject.h
    lldb/trunk/include/lldb/Core/ValueObjectChild.h
    lldb/trunk/include/lldb/Core/ValueObjectDynamicValue.h
    lldb/trunk/include/lldb/Core/ValueObjectSyntheticFilter.h
    lldb/trunk/source/Core/ValueObjectChild.cpp

Modified: lldb/trunk/include/lldb/Core/ValueObject.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ValueObject.h?rev=243102&r1=243101&r2=243102&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/ValueObject.h (original)
+++ lldb/trunk/include/lldb/Core/ValueObject.h Fri Jul 24 04:52:25 2015
@@ -861,7 +861,7 @@ public:
     bool
     NeedsUpdating ()
     {
-        const bool accept_invalid_exe_ctx = (CanUpdateWithInvalidExecutionContext() == eLazyBoolYes);
+        const bool accept_invalid_exe_ctx = CanUpdateWithInvalidExecutionContext();
         return m_update_point.NeedsUpdating(accept_invalid_exe_ctx);
     }
     
@@ -1172,10 +1172,10 @@ protected:
     virtual bool
     UpdateValue () = 0;
 
-    virtual LazyBool
+    virtual bool
     CanUpdateWithInvalidExecutionContext ()
     {
-        return eLazyBoolCalculate;
+        return false;
     }
     
     virtual void

Modified: lldb/trunk/include/lldb/Core/ValueObjectChild.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ValueObjectChild.h?rev=243102&r1=243101&r2=243102&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/ValueObjectChild.h (original)
+++ lldb/trunk/include/lldb/Core/ValueObjectChild.h Fri Jul 24 04:52:25 2015
@@ -84,7 +84,7 @@ protected:
     virtual bool
     UpdateValue ();
     
-    virtual LazyBool
+    virtual bool
     CanUpdateWithInvalidExecutionContext ();
 
     virtual ClangASTType

Modified: lldb/trunk/include/lldb/Core/ValueObjectDynamicValue.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ValueObjectDynamicValue.h?rev=243102&r1=243101&r2=243102&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/ValueObjectDynamicValue.h (original)
+++ lldb/trunk/include/lldb/Core/ValueObjectDynamicValue.h Fri Jul 24 04:52:25 2015
@@ -109,10 +109,10 @@ protected:
     virtual bool
     UpdateValue ();
     
-    virtual LazyBool
+    virtual bool
     CanUpdateWithInvalidExecutionContext ()
     {
-        return eLazyBoolYes;
+        return true;
     }
     
     virtual lldb::DynamicValueType

Modified: lldb/trunk/include/lldb/Core/ValueObjectSyntheticFilter.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/ValueObjectSyntheticFilter.h?rev=243102&r1=243101&r2=243102&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/ValueObjectSyntheticFilter.h (original)
+++ lldb/trunk/include/lldb/Core/ValueObjectSyntheticFilter.h Fri Jul 24 04:52:25 2015
@@ -156,10 +156,10 @@ protected:
     virtual bool
     UpdateValue ();
     
-    virtual LazyBool
+    virtual bool
     CanUpdateWithInvalidExecutionContext ()
     {
-        return eLazyBoolYes;
+        return true;
     }
     
     virtual ClangASTType

Modified: lldb/trunk/source/Core/ValueObjectChild.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ValueObjectChild.cpp?rev=243102&r1=243101&r2=243102&view=diff
==============================================================================
--- lldb/trunk/source/Core/ValueObjectChild.cpp (original)
+++ lldb/trunk/source/Core/ValueObjectChild.cpp Fri Jul 24 04:52:25 2015
@@ -109,14 +109,12 @@ ValueObjectChild::GetDisplayTypeName()
     return display_name;
 }
 
-LazyBool
+bool
 ValueObjectChild::CanUpdateWithInvalidExecutionContext ()
 {
-    ValueObject* opinionated_ancestor = FollowParentChain([] (ValueObject* vo) -> bool {
-        return (vo->CanUpdateWithInvalidExecutionContext() == eLazyBoolCalculate);
-    });
-    
-    return opinionated_ancestor ? opinionated_ancestor->CanUpdateWithInvalidExecutionContext() : this->ValueObject::CanUpdateWithInvalidExecutionContext();
+    if (m_parent)
+        return m_parent->CanUpdateWithInvalidExecutionContext();
+    return this->ValueObject::CanUpdateWithInvalidExecutionContext();
 }
 
 bool





More information about the lldb-commits mailing list