diff --git a/lib/Checker/CallInliner.cpp b/lib/Checker/CallInliner.cpp
index d94994b..0279d46 100644
--- a/lib/Checker/CallInliner.cpp
+++ b/lib/Checker/CallInliner.cpp
@@ -65,6 +65,7 @@
   BlockEdge Loc(Entry, SuccB, LocCtx);
 
   state = C.getStoreManager().EnterStackFrame(state, LocCtx);
+
   // This is a hack. We really should not use the GRStmtNodeBuilder.
   bool isNew;
   GRExprEngine &Eng = C.getEngine();
@@ -86,16 +87,26 @@
 void CallInliner::EvalEndPath(GREndPathNodeBuilder &B, void *tag,
                               GRExprEngine &Eng) {
   const GRState *state = B.getState();
+
   ExplodedNode *Pred = B.getPredecessor();
+
   const StackFrameContext *LocCtx = 
                          cast<StackFrameContext>(Pred->getLocationContext());
-
-  const Stmt *CE = LocCtx->getCallSite();
-
   // Check if this is the top level stack frame.
   if (!LocCtx->getParent())
     return;
 
+  const StackFrameContext *ParentSF = 
+                                   cast<StackFrameContext>(LocCtx->getParent());
+
+  SymbolReaper SymReaper(*ParentSF->getLiveVariables(), Eng.getSymbolManager(), 
+                         ParentSF);
+  const Stmt *CE = LocCtx->getCallSite();
+
+  state = Eng.getStateManager().RemoveDeadBindings(state, const_cast<Stmt*>(CE),
+                                                   SymReaper);
+
+
   PostStmt NodeLoc(CE, LocCtx->getParent());
 
   bool isNew;
diff --git a/lib/Checker/SymbolManager.cpp b/lib/Checker/SymbolManager.cpp
index 40bdcf6..7278b41 100644
--- a/lib/Checker/SymbolManager.cpp
+++ b/lib/Checker/SymbolManager.cpp
@@ -14,6 +14,7 @@
 
 #include "clang/Checker/PathSensitive/SymbolManager.h"
 #include "clang/Checker/PathSensitive/MemRegion.h"
+#include "clang/Analysis/AnalysisContext.h"
 #include "llvm/Support/raw_ostream.h"
 
 using namespace clang;
@@ -222,7 +223,11 @@
 
 bool SymbolReaper::isLive(const Stmt *Loc, const VarRegion *VR) const {
   const StackFrameContext *SFC = VR->getStackFrame();
-  return SFC == CurrentStackFrame ? Liveness.isLive(Loc, VR->getDecl()) : true;
+
+  if (SFC == CurrentStackFrame)
+    return Liveness.isLive(Loc, VR->getDecl());
+  else
+    return SFC->isParentOf(CurrentStackFrame);
 }
 
 SymbolVisitor::~SymbolVisitor() {}
