[cfe-commits] r152837 - in /cfe/trunk: include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h lib/StaticAnalyzer/Checkers/MallocChecker.cpp lib/StaticAnalyzer/Core/BugReporter.cpp lib/StaticAnalyzer/Core/PathDiagnostic.cpp test/Analysis/malloc-plist.c

Anna Zaks ganna at apple.com
Thu Mar 15 14:13:02 PDT 2012


Author: zaks
Date: Thu Mar 15 16:13:02 2012
New Revision: 152837

URL: http://llvm.org/viewvc/llvm-project?rev=152837&view=rev
Log:
[analyzer] Allow checkers to supply call stack diagnostic hints for the
BugVisitor DiagnosticPieces.

When checkers create a DiagnosticPieceEvent, they can supply an extra
string, which will be concatenated with the call exit message for every
call on the stack between the diagnostic event and the final bug report.
(This is a simple version, which could be/will be further enhanced.)

For example, this is used in Malloc checker to produce the ",
which allocated memory" in the following example:

static char *malloc_wrapper() { // 2. Entered call from 'use'
    return malloc(12);    // 3. Memory is allocated
}

void use() {
    char *v;
    v = malloc_wrapper(); // 1. Calling 'malloc_wrappers'
        // 4. Returning from 'malloc_wrapper', which allocated memory
}                         // 5. Memory is never released; potential
memory leak

Modified:
    cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
    cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
    cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp
    cfe/trunk/lib/StaticAnalyzer/Core/PathDiagnostic.cpp
    cfe/trunk/test/Analysis/malloc-plist.c

Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h?rev=152837&r1=152836&r2=152837&view=diff
==============================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h (original)
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h Thu Mar 15 16:13:02 2012
@@ -359,10 +359,21 @@
 
 class PathDiagnosticEventPiece : public PathDiagnosticSpotPiece {
   llvm::Optional<bool> IsPrunable;
+
+  /// If the event occurs in a different frame than the final diagnostic,
+  /// supply a message that will be used to construct an extra hint on the
+  /// returns from all the calls on the stack from this event to the final
+  /// diagnostic.
+  /// TODO: This should be a callback that constructs a string given the
+  /// ExplodedNode, which would allow the checkers to refer to the expression.
+  std::string CallStackMessage;
+
 public:
   PathDiagnosticEventPiece(const PathDiagnosticLocation &pos,
-                           StringRef s, bool addPosRange = true)
-    : PathDiagnosticSpotPiece(pos, s, Event, addPosRange) {}
+                           StringRef s, bool addPosRange = true,
+                           StringRef callStackMsg = "")
+    : PathDiagnosticSpotPiece(pos, s, Event, addPosRange),
+      CallStackMessage(callStackMsg) {}
 
   ~PathDiagnosticEventPiece();
 
@@ -380,6 +391,13 @@
     return IsPrunable.hasValue() ? IsPrunable.getValue() : false;
   }
   
+  StringRef getCallStackMessage() {
+    if (!CallStackMessage.empty())
+      return CallStackMessage;
+    else
+      return StringRef();
+  }
+
   static inline bool classof(const PathDiagnosticPiece *P) {
     return P->getKind() == Event;
   }
@@ -402,6 +420,10 @@
   // call exit.
   bool NoExit;
 
+  // The custom string, which should appear after the call Return Diagnostic.
+  // TODO: Should we allow multiple diagnostics?
+  std::string CallStackMessage;
+
 public:
   PathDiagnosticLocation callEnter;
   PathDiagnosticLocation callEnterWithin;
@@ -415,6 +437,11 @@
   const Decl *getCallee() const { return Callee; }
   void setCallee(const CallEnter &CE, const SourceManager &SM);
   
+  bool hasCallStackMessage() { return !CallStackMessage.empty(); }
+  void setCallStackMessage(StringRef st) {
+    CallStackMessage = st;
+  }
+
   virtual PathDiagnosticLocation getLocation() const {
     return callEnter;
   }

Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp?rev=152837&r1=152836&r2=152837&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp Thu Mar 15 16:13:02 2012
@@ -1249,6 +1249,7 @@
 
   const Stmt *S = 0;
   const char *Msg = 0;
+  const char *StackMsg = 0;
 
   // Retrieve the associated statement.
   ProgramPoint ProgLoc = N->getLocation();
@@ -1264,14 +1265,18 @@
     return 0;
 
   // Find out if this is an interesting point and what is the kind.
+  // TODO: Replace 'callee' by the function name.
   if (Mode == Normal) {
-    if (isAllocated(RS, RSPrev, S))
+    if (isAllocated(RS, RSPrev, S)) {
       Msg = "Memory is allocated";
-    else if (isReleased(RS, RSPrev, S))
+      StackMsg = ", which allocated memory";
+    } else if (isReleased(RS, RSPrev, S)) {
       Msg = "Memory is released";
-    else if (isReallocFailedCheck(RS, RSPrev, S)) {
+      StackMsg = ", which released memory";
+    } else if (isReallocFailedCheck(RS, RSPrev, S)) {
       Mode = ReallocationFailed;
       Msg = "Reallocation failed";
+      StackMsg = ", where reallocation failed";
     }
 
   // We are in a special mode if a reallocation failed later in the path.
@@ -1291,16 +1296,18 @@
     if (!(FunName.equals("realloc") || FunName.equals("reallocf")))
       return 0;
     Msg = "Attempt to reallocate memory";
+    StackMsg = ", which attempted to reallocate memory";
     Mode = Normal;
   }
 
   if (!Msg)
     return 0;
+  assert(StackMsg);
 
   // Generate the extra diagnostic.
   PathDiagnosticLocation Pos(S, BRC.getSourceManager(),
                              N->getLocationContext());
-  return new PathDiagnosticEventPiece(Pos, Msg);
+  return new PathDiagnosticEventPiece(Pos, Msg, true, StackMsg);
 }
 
 

Modified: cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp?rev=152837&r1=152836&r2=152837&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp Thu Mar 15 16:13:02 2012
@@ -380,6 +380,24 @@
 //===----------------------------------------------------------------------===//
 // "Minimal" path diagnostic generation algorithm.
 //===----------------------------------------------------------------------===//
+static void updateStackPiecesWithMessage(PathDiagnosticPiece *P,
+                   llvm::SmallVector<PathDiagnosticCallPiece*, 6> &CallStack) {
+  // If the piece contains a special message, add it to all the call
+  // pieces on the active stack.
+  if (PathDiagnosticEventPiece *ep =
+        dyn_cast<PathDiagnosticEventPiece>(P)) {
+    StringRef stackMsg = ep->getCallStackMessage();
+
+    if (!stackMsg.empty())
+      for (llvm::SmallVector<PathDiagnosticCallPiece*, 6>::iterator
+             I = CallStack.begin(), E = CallStack.end(); I != E; ++I)
+        // The last message on the path to final bug is the most important
+        // one. Since we traverse the path backwards, do not add the message
+        // if one has been previously added.
+        if  (!(*I)->hasCallStackMessage())
+          (*I)->setCallStackMessage(stackMsg);
+  }
+}
 
 static void CompactPathDiagnostic(PathPieces &path, const SourceManager& SM);
 
@@ -391,6 +409,9 @@
   const LocationContext *LC = PDB.LC;
   const ExplodedNode *NextNode = N->pred_empty()
                                         ? NULL : *(N->pred_begin());
+
+  llvm::SmallVector<PathDiagnosticCallPiece*, 6> CallStack;
+
   while (NextNode) {
     N = NextNode;
     PDB.LC = N->getLocationContext();
@@ -403,6 +424,7 @@
         PathDiagnosticCallPiece::construct(N, *CE, SMgr);
       PD.getActivePath().push_front(C);
       PD.pushActivePath(&C->path);
+      CallStack.push_back(C);
       continue;      
     }
     
@@ -423,6 +445,10 @@
         C = PathDiagnosticCallPiece::construct(PD.getActivePath(), Caller);
       }
       C->setCallee(*CE, SMgr);
+      if (!CallStack.empty()) {
+        assert(CallStack.back() == C);
+        CallStack.pop_back();
+      }
       continue;
     }
 
@@ -681,8 +707,10 @@
       BugReport *R = PDB.getBugReport();
       for (BugReport::visitor_iterator I = R->visitor_begin(),
            E = R->visitor_end(); I!=E; ++I) {
-        if (PathDiagnosticPiece *p = (*I)->VisitNode(N, NextNode, PDB, *R))
+        if (PathDiagnosticPiece *p = (*I)->VisitNode(N, NextNode, PDB, *R)) {
           PD.getActivePath().push_front(p);
+          updateStackPiecesWithMessage(p, CallStack);
+        }
       }
     }
   }
@@ -1019,6 +1047,7 @@
                                             const ExplodedNode *N) {
   EdgeBuilder EB(PD, PDB);
   const SourceManager& SM = PDB.getSourceManager();
+  llvm::SmallVector<PathDiagnosticCallPiece*, 6> CallStack;
 
   const ExplodedNode *NextNode = N->pred_empty() ? NULL : *(N->pred_begin());
   while (NextNode) {
@@ -1039,6 +1068,7 @@
           PathDiagnosticCallPiece::construct(N, *CE, SM);
         PD.getActivePath().push_front(C);
         PD.pushActivePath(&C->path);
+        CallStack.push_back(C);
         break;
       }
       
@@ -1072,6 +1102,11 @@
         }
         C->setCallee(*CE, SM);
         EB.addContext(CE->getCallExpr());
+
+        if (!CallStack.empty()) {
+          assert(CallStack.back() == C);
+          CallStack.pop_back();
+        }
         break;
       }
       
@@ -1147,6 +1182,8 @@
         const PathDiagnosticLocation &Loc = p->getLocation();
         EB.addEdge(Loc, true);
         PD.getActivePath().push_front(p);
+        updateStackPiecesWithMessage(p, CallStack);
+
         if (const Stmt *S = Loc.asStmt())
           EB.addExtendedContext(PDB.getEnclosingStmtLocation(S).asStmt());
       }

Modified: cfe/trunk/lib/StaticAnalyzer/Core/PathDiagnostic.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/PathDiagnostic.cpp?rev=152837&r1=152836&r2=152837&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/PathDiagnostic.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Core/PathDiagnostic.cpp Thu Mar 15 16:13:02 2012
@@ -572,6 +572,8 @@
     Out << "Returning from '" << *ND << "'";
   else
     Out << "Returning to caller";
+  if (!CallStackMessage.empty())
+    Out << CallStackMessage;
   return new PathDiagnosticEventPiece(callReturn, Out.str());
 }
 

Modified: cfe/trunk/test/Analysis/malloc-plist.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/malloc-plist.c?rev=152837&r1=152836&r2=152837&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/malloc-plist.c (original)
+++ cfe/trunk/test/Analysis/malloc-plist.c Thu Mar 15 16:13:02 2012
@@ -46,1097 +46,1638 @@
   (void) buf;
 }
 
-// CHECK: <?xml version="1.0" encoding="UTF-8"?>
-// CHECK: <plist version="1.0">
-// CHECK: <dict>
-// CHECK:  <key>files</key>
-// CHECK:  <array>
-// CHECK:  </array>
-// CHECK:  <key>diagnostics</key>
-// CHECK:  <array>
-// CHECK:   <dict>
-// CHECK:    <key>path</key>
-// CHECK:    <array>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>control</string>
-// CHECK:      <key>edges</key>
-// CHECK:       <array>
-// CHECK:        <dict>
-// CHECK:         <key>start</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>10</integer>
-// CHECK:            <key>col</key><integer>5</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>10</integer>
-// CHECK:            <key>col</key><integer>5</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:         <key>end</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>10</integer>
-// CHECK:            <key>col</key><integer>9</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>10</integer>
-// CHECK:            <key>col</key><integer>9</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:        </dict>
-// CHECK:       </array>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>control</string>
-// CHECK:      <key>edges</key>
-// CHECK:       <array>
-// CHECK:        <dict>
-// CHECK:         <key>start</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>10</integer>
-// CHECK:            <key>col</key><integer>9</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>10</integer>
-// CHECK:            <key>col</key><integer>9</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:         <key>end</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>11</integer>
-// CHECK:            <key>col</key><integer>9</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>11</integer>
-// CHECK:            <key>col</key><integer>9</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:        </dict>
-// CHECK:       </array>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>control</string>
-// CHECK:      <key>edges</key>
+// Test what happens when the same call frees and allocated memory.
+void my_free(void *x) {
+    free(x);
+}
+void my_malloc_and_free(void **x) {
+    *x = malloc(100);
+    if (*x)
+      my_free(*x);
+    return;
+}
+void *test_double_action_call() {
+    void *buf;
+    my_malloc_and_free(&buf);
+    return buf;
+}
+
+// CHECK:   <key>diagnostics</key>
+// CHECK:   <array>
+// CHECK:    <dict>
+// CHECK:     <key>path</key>
+// CHECK:     <array>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>10</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>10</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>10</integer>
+// CHECK:             <key>col</key><integer>9</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>10</integer>
+// CHECK:             <key>col</key><integer>9</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>10</integer>
+// CHECK:             <key>col</key><integer>9</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>10</integer>
+// CHECK:             <key>col</key><integer>9</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>11</integer>
+// CHECK:             <key>col</key><integer>9</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>11</integer>
+// CHECK:             <key>col</key><integer>9</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>11</integer>
+// CHECK:             <key>col</key><integer>9</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>11</integer>
+// CHECK:             <key>col</key><integer>9</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>11</integer>
+// CHECK:             <key>col</key><integer>18</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>11</integer>
+// CHECK:             <key>col</key><integer>27</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>11</integer>
+// CHECK:        <key>col</key><integer>18</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>ranges</key>
 // CHECK:       <array>
-// CHECK:        <dict>
-// CHECK:         <key>start</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>11</integer>
-// CHECK:            <key>col</key><integer>9</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>11</integer>
-// CHECK:            <key>col</key><integer>9</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:         <key>end</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>11</integer>
-// CHECK:            <key>col</key><integer>18</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>11</integer>
-// CHECK:            <key>col</key><integer>27</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:        </dict>
+// CHECK:         <array>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>11</integer>
+// CHECK:           <key>col</key><integer>18</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>11</integer>
+// CHECK:           <key>col</key><integer>27</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:         </array>
 // CHECK:       </array>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>event</string>
-// CHECK:      <key>location</key>
-// CHECK:      <dict>
-// CHECK:       <key>line</key><integer>11</integer>
-// CHECK:       <key>col</key><integer>18</integer>
-// CHECK:       <key>file</key><integer>0</integer>
-// CHECK:      </dict>
-// CHECK:      <key>ranges</key>
-// CHECK:      <array>
-// CHECK:        <array>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>11</integer>
-// CHECK:          <key>col</key><integer>18</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>11</integer>
-// CHECK:          <key>col</key><integer>27</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:        </array>
-// CHECK:      </array>
-// CHECK:      <key>extended_message</key>
-// CHECK:      <string>Memory is allocated</string>
-// CHECK:      <key>message</key>
-// CHECK: <string>Memory is allocated</string>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>control</string>
-// CHECK:      <key>edges</key>
+// CHECK:       <key>depth</key><integer>0</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Memory is allocated</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Memory is allocated</string>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>11</integer>
+// CHECK:             <key>col</key><integer>18</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>11</integer>
+// CHECK:             <key>col</key><integer>27</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>14</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>14</integer>
+// CHECK:             <key>col</key><integer>6</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>14</integer>
+// CHECK:        <key>col</key><integer>5</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>ranges</key>
 // CHECK:       <array>
-// CHECK:        <dict>
-// CHECK:         <key>start</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>11</integer>
-// CHECK:            <key>col</key><integer>18</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>11</integer>
-// CHECK:            <key>col</key><integer>27</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:         <key>end</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>14</integer>
-// CHECK:            <key>col</key><integer>5</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>14</integer>
-// CHECK:            <key>col</key><integer>6</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:        </dict>
+// CHECK:         <array>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>14</integer>
+// CHECK:           <key>col</key><integer>5</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>14</integer>
+// CHECK:           <key>col</key><integer>6</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:         </array>
 // CHECK:       </array>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>event</string>
-// CHECK:      <key>location</key>
-// CHECK:      <dict>
-// CHECK:       <key>line</key><integer>14</integer>
-// CHECK:       <key>col</key><integer>5</integer>
-// CHECK:       <key>file</key><integer>0</integer>
-// CHECK:      </dict>
-// CHECK:      <key>ranges</key>
-// CHECK:      <array>
-// CHECK:        <array>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>14</integer>
-// CHECK:          <key>col</key><integer>5</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>14</integer>
-// CHECK:          <key>col</key><integer>6</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:        </array>
-// CHECK:      </array>
-// CHECK:      <key>extended_message</key>
-// CHECK:      <string>Memory is never released; potential memory leak</string>
-// CHECK:      <key>message</key>
-// CHECK: <string>Memory is never released; potential memory leak</string>
-// CHECK:     </dict>
-// CHECK:    </array>
-// CHECK:    <key>description</key><string>Memory is never released; potential memory leak</string>
-// CHECK:    <key>category</key><string>Memory Error</string>
-// CHECK:    <key>type</key><string>Memory leak</string>
-// CHECK:   <key>location</key>
-// CHECK:   <dict>
-// CHECK:    <key>line</key><integer>14</integer>
-// CHECK:    <key>col</key><integer>5</integer>
-// CHECK:    <key>file</key><integer>0</integer>
-// CHECK:   </dict>
-// CHECK:   </dict>
-// CHECK:   <dict>
-// CHECK:    <key>path</key>
-// CHECK:    <array>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>control</string>
-// CHECK:      <key>edges</key>
+// CHECK:       <key>depth</key><integer>0</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Memory is never released; potential memory leak</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Memory is never released; potential memory leak</string>
+// CHECK:      </dict>
+// CHECK:     </array>
+// CHECK:     <key>description</key><string>Memory is never released; potential memory leak</string>
+// CHECK:     <key>category</key><string>Memory Error</string>
+// CHECK:     <key>type</key><string>Memory leak</string>
+// CHECK:    <key>location</key>
+// CHECK:    <dict>
+// CHECK:     <key>line</key><integer>14</integer>
+// CHECK:     <key>col</key><integer>5</integer>
+// CHECK:     <key>file</key><integer>0</integer>
+// CHECK:    </dict>
+// CHECK:    </dict>
+// CHECK:    <dict>
+// CHECK:     <key>path</key>
+// CHECK:     <array>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>18</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>18</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>19</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>19</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>19</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>19</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>19</integer>
+// CHECK:             <key>col</key><integer>9</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>19</integer>
+// CHECK:             <key>col</key><integer>30</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>19</integer>
+// CHECK:        <key>col</key><integer>9</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>ranges</key>
 // CHECK:       <array>
-// CHECK:        <dict>
-// CHECK:         <key>start</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>18</integer>
-// CHECK:            <key>col</key><integer>5</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>18</integer>
-// CHECK:            <key>col</key><integer>5</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:         <key>end</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>19</integer>
-// CHECK:            <key>col</key><integer>5</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>19</integer>
-// CHECK:            <key>col</key><integer>5</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:        </dict>
+// CHECK:         <array>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>19</integer>
+// CHECK:           <key>col</key><integer>9</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>19</integer>
+// CHECK:           <key>col</key><integer>30</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:         </array>
 // CHECK:       </array>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>control</string>
-// CHECK:      <key>edges</key>
+// CHECK:       <key>depth</key><integer>0</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Memory is allocated</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Memory is allocated</string>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>19</integer>
+// CHECK:             <key>col</key><integer>9</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>19</integer>
+// CHECK:             <key>col</key><integer>30</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>21</integer>
+// CHECK:             <key>col</key><integer>1</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>21</integer>
+// CHECK:             <key>col</key><integer>1</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>21</integer>
+// CHECK:        <key>col</key><integer>1</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>depth</key><integer>0</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Memory is never released; potential memory leak</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Memory is never released; potential memory leak</string>
+// CHECK:      </dict>
+// CHECK:     </array>
+// CHECK:     <key>description</key><string>Memory is never released; potential memory leak</string>
+// CHECK:     <key>category</key><string>Memory Error</string>
+// CHECK:     <key>type</key><string>Memory leak</string>
+// CHECK:    <key>location</key>
+// CHECK:    <dict>
+// CHECK:     <key>line</key><integer>21</integer>
+// CHECK:     <key>col</key><integer>1</integer>
+// CHECK:     <key>file</key><integer>0</integer>
+// CHECK:    </dict>
+// CHECK:    </dict>
+// CHECK:    <dict>
+// CHECK:     <key>path</key>
+// CHECK:     <array>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>24</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>24</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>24</integer>
+// CHECK:             <key>col</key><integer>18</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>24</integer>
+// CHECK:             <key>col</key><integer>28</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>24</integer>
+// CHECK:        <key>col</key><integer>18</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>ranges</key>
 // CHECK:       <array>
-// CHECK:        <dict>
-// CHECK:         <key>start</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>19</integer>
-// CHECK:            <key>col</key><integer>5</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>19</integer>
-// CHECK:            <key>col</key><integer>5</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:         <key>end</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>19</integer>
-// CHECK:            <key>col</key><integer>9</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>19</integer>
-// CHECK:            <key>col</key><integer>30</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:        </dict>
+// CHECK:         <array>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>24</integer>
+// CHECK:           <key>col</key><integer>18</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>24</integer>
+// CHECK:           <key>col</key><integer>28</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:         </array>
 // CHECK:       </array>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>event</string>
-// CHECK:      <key>location</key>
-// CHECK:      <dict>
-// CHECK:       <key>line</key><integer>19</integer>
-// CHECK:       <key>col</key><integer>9</integer>
-// CHECK:       <key>file</key><integer>0</integer>
-// CHECK:      </dict>
-// CHECK:      <key>ranges</key>
-// CHECK:      <array>
-// CHECK:        <array>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>19</integer>
-// CHECK:          <key>col</key><integer>9</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>19</integer>
-// CHECK:          <key>col</key><integer>30</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:        </array>
-// CHECK:      </array>
-// CHECK:      <key>extended_message</key>
-// CHECK:      <string>Memory is allocated</string>
-// CHECK:      <key>message</key>
-// CHECK: <string>Memory is allocated</string>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>control</string>
-// CHECK:      <key>edges</key>
+// CHECK:       <key>depth</key><integer>0</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Memory is allocated</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Memory is allocated</string>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>24</integer>
+// CHECK:             <key>col</key><integer>18</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>24</integer>
+// CHECK:             <key>col</key><integer>28</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>26</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>26</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>26</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>26</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>26</integer>
+// CHECK:             <key>col</key><integer>18</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>26</integer>
+// CHECK:             <key>col</key><integer>40</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>26</integer>
+// CHECK:        <key>col</key><integer>18</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>ranges</key>
 // CHECK:       <array>
-// CHECK:        <dict>
-// CHECK:         <key>start</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>19</integer>
-// CHECK:            <key>col</key><integer>9</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>19</integer>
-// CHECK:            <key>col</key><integer>30</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:         <key>end</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>21</integer>
-// CHECK:            <key>col</key><integer>1</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>21</integer>
-// CHECK:            <key>col</key><integer>1</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:        </dict>
+// CHECK:         <array>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>26</integer>
+// CHECK:           <key>col</key><integer>18</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>26</integer>
+// CHECK:           <key>col</key><integer>40</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:         </array>
 // CHECK:       </array>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>event</string>
-// CHECK:      <key>location</key>
-// CHECK:      <dict>
-// CHECK:       <key>line</key><integer>21</integer>
-// CHECK:       <key>col</key><integer>1</integer>
-// CHECK:       <key>file</key><integer>0</integer>
-// CHECK:      </dict>
-// CHECK:      <key>extended_message</key>
-// CHECK:      <string>Memory is never released; potential memory leak</string>
-// CHECK:      <key>message</key>
-// CHECK: <string>Memory is never released; potential memory leak</string>
-// CHECK:     </dict>
-// CHECK:    </array>
-// CHECK:    <key>description</key><string>Memory is never released; potential memory leak</string>
-// CHECK:    <key>category</key><string>Memory Error</string>
-// CHECK:    <key>type</key><string>Memory leak</string>
-// CHECK:   <key>location</key>
-// CHECK:   <dict>
-// CHECK:    <key>line</key><integer>21</integer>
-// CHECK:    <key>col</key><integer>1</integer>
-// CHECK:    <key>file</key><integer>0</integer>
-// CHECK:   </dict>
-// CHECK:   </dict>
-// CHECK:   <dict>
-// CHECK:    <key>path</key>
-// CHECK:    <array>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>control</string>
-// CHECK:      <key>edges</key>
+// CHECK:       <key>depth</key><integer>0</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Attempt to reallocate memory</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Attempt to reallocate memory</string>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>26</integer>
+// CHECK:             <key>col</key><integer>18</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>26</integer>
+// CHECK:             <key>col</key><integer>40</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>29</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>29</integer>
+// CHECK:             <key>col</key><integer>6</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>29</integer>
+// CHECK:        <key>col</key><integer>5</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>ranges</key>
 // CHECK:       <array>
-// CHECK:        <dict>
-// CHECK:         <key>start</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>24</integer>
-// CHECK:            <key>col</key><integer>5</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>24</integer>
-// CHECK:            <key>col</key><integer>5</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:         <key>end</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>24</integer>
-// CHECK:            <key>col</key><integer>18</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>24</integer>
-// CHECK:            <key>col</key><integer>28</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:        </dict>
+// CHECK:         <array>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>29</integer>
+// CHECK:           <key>col</key><integer>5</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>29</integer>
+// CHECK:           <key>col</key><integer>6</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:         </array>
 // CHECK:       </array>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>event</string>
-// CHECK:      <key>location</key>
-// CHECK:      <dict>
-// CHECK:       <key>line</key><integer>24</integer>
-// CHECK:       <key>col</key><integer>18</integer>
-// CHECK:       <key>file</key><integer>0</integer>
-// CHECK:      </dict>
-// CHECK:      <key>ranges</key>
-// CHECK:      <array>
-// CHECK:        <array>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>24</integer>
-// CHECK:          <key>col</key><integer>18</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>24</integer>
-// CHECK:          <key>col</key><integer>28</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:        </array>
-// CHECK:      </array>
-// CHECK:      <key>extended_message</key>
-// CHECK:      <string>Memory is allocated</string>
-// CHECK:      <key>message</key>
-// CHECK: <string>Memory is allocated</string>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>control</string>
-// CHECK:      <key>edges</key>
+// CHECK:       <key>depth</key><integer>0</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Reallocation failed</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Reallocation failed</string>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>29</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>29</integer>
+// CHECK:             <key>col</key><integer>6</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>29</integer>
+// CHECK:             <key>col</key><integer>9</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>29</integer>
+// CHECK:             <key>col</key><integer>12</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>29</integer>
+// CHECK:             <key>col</key><integer>9</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>29</integer>
+// CHECK:             <key>col</key><integer>12</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>30</integer>
+// CHECK:             <key>col</key><integer>9</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>30</integer>
+// CHECK:             <key>col</key><integer>14</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>30</integer>
+// CHECK:        <key>col</key><integer>9</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>ranges</key>
 // CHECK:       <array>
-// CHECK:        <dict>
-// CHECK:         <key>start</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>24</integer>
-// CHECK:            <key>col</key><integer>18</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>24</integer>
-// CHECK:            <key>col</key><integer>28</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:         <key>end</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>26</integer>
-// CHECK:            <key>col</key><integer>5</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>26</integer>
-// CHECK:            <key>col</key><integer>5</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:        </dict>
+// CHECK:         <array>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>30</integer>
+// CHECK:           <key>col</key><integer>9</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>30</integer>
+// CHECK:           <key>col</key><integer>14</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:         </array>
 // CHECK:       </array>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>control</string>
-// CHECK:      <key>edges</key>
+// CHECK:       <key>depth</key><integer>0</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Memory is never released; potential memory leak</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Memory is never released; potential memory leak</string>
+// CHECK:      </dict>
+// CHECK:     </array>
+// CHECK:     <key>description</key><string>Memory is never released; potential memory leak</string>
+// CHECK:     <key>category</key><string>Memory Error</string>
+// CHECK:     <key>type</key><string>Memory leak</string>
+// CHECK:    <key>location</key>
+// CHECK:    <dict>
+// CHECK:     <key>line</key><integer>30</integer>
+// CHECK:     <key>col</key><integer>9</integer>
+// CHECK:     <key>file</key><integer>0</integer>
+// CHECK:    </dict>
+// CHECK:    </dict>
+// CHECK:    <dict>
+// CHECK:     <key>path</key>
+// CHECK:     <array>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>45</integer>
+// CHECK:             <key>col</key><integer>3</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>45</integer>
+// CHECK:             <key>col</key><integer>3</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>45</integer>
+// CHECK:             <key>col</key><integer>15</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>45</integer>
+// CHECK:             <key>col</key><integer>15</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>45</integer>
+// CHECK:        <key>col</key><integer>15</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>ranges</key>
 // CHECK:       <array>
-// CHECK:        <dict>
-// CHECK:         <key>start</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>26</integer>
-// CHECK:            <key>col</key><integer>5</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>26</integer>
-// CHECK:            <key>col</key><integer>5</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:         <key>end</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>26</integer>
-// CHECK:            <key>col</key><integer>18</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>26</integer>
-// CHECK:            <key>col</key><integer>40</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:        </dict>
+// CHECK:         <array>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>45</integer>
+// CHECK:           <key>col</key><integer>15</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>45</integer>
+// CHECK:           <key>col</key><integer>23</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:         </array>
 // CHECK:       </array>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>event</string>
-// CHECK:      <key>location</key>
-// CHECK:      <dict>
-// CHECK:       <key>line</key><integer>26</integer>
-// CHECK:       <key>col</key><integer>18</integer>
-// CHECK:       <key>file</key><integer>0</integer>
-// CHECK:      </dict>
-// CHECK:      <key>ranges</key>
-// CHECK:      <array>
-// CHECK:        <array>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>26</integer>
-// CHECK:          <key>col</key><integer>18</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>26</integer>
-// CHECK:          <key>col</key><integer>40</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:        </array>
-// CHECK:      </array>
-// CHECK:      <key>extended_message</key>
-// CHECK:      <string>Attempt to reallocate memory</string>
-// CHECK:      <key>message</key>
-// CHECK: <string>Attempt to reallocate memory</string>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>control</string>
-// CHECK:      <key>edges</key>
+// CHECK:       <key>depth</key><integer>0</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Calling 'wrapper'</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Calling 'wrapper'</string>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>36</integer>
+// CHECK:        <key>col</key><integer>1</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>depth</key><integer>1</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Entered call from 'test_wrapper'</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Entered call from 'test_wrapper'</string>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>36</integer>
+// CHECK:             <key>col</key><integer>1</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>36</integer>
+// CHECK:             <key>col</key><integer>1</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>37</integer>
+// CHECK:             <key>col</key><integer>3</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>37</integer>
+// CHECK:             <key>col</key><integer>3</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>37</integer>
+// CHECK:             <key>col</key><integer>3</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>37</integer>
+// CHECK:             <key>col</key><integer>3</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>37</integer>
+// CHECK:             <key>col</key><integer>13</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>37</integer>
+// CHECK:             <key>col</key><integer>23</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>37</integer>
+// CHECK:        <key>col</key><integer>13</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>ranges</key>
 // CHECK:       <array>
-// CHECK:        <dict>
-// CHECK:         <key>start</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>26</integer>
-// CHECK:            <key>col</key><integer>18</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>26</integer>
-// CHECK:            <key>col</key><integer>40</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:         <key>end</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>29</integer>
-// CHECK:            <key>col</key><integer>5</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>29</integer>
-// CHECK:            <key>col</key><integer>6</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:        </dict>
+// CHECK:         <array>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>37</integer>
+// CHECK:           <key>col</key><integer>13</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>37</integer>
+// CHECK:           <key>col</key><integer>23</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:         </array>
 // CHECK:       </array>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>event</string>
-// CHECK:      <key>location</key>
-// CHECK:      <dict>
-// CHECK:       <key>line</key><integer>29</integer>
-// CHECK:       <key>col</key><integer>5</integer>
-// CHECK:       <key>file</key><integer>0</integer>
-// CHECK:      </dict>
-// CHECK:      <key>ranges</key>
-// CHECK:      <array>
-// CHECK:        <array>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>29</integer>
-// CHECK:          <key>col</key><integer>5</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>29</integer>
-// CHECK:          <key>col</key><integer>6</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:        </array>
-// CHECK:      </array>
-// CHECK:      <key>extended_message</key>
-// CHECK:      <string>Reallocation failed</string>
-// CHECK:      <key>message</key>
-// CHECK: <string>Reallocation failed</string>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>control</string>
-// CHECK:      <key>edges</key>
+// CHECK:       <key>depth</key><integer>1</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Memory is allocated</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Memory is allocated</string>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>37</integer>
+// CHECK:             <key>col</key><integer>13</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>37</integer>
+// CHECK:             <key>col</key><integer>23</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>39</integer>
+// CHECK:             <key>col</key><integer>3</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>39</integer>
+// CHECK:             <key>col</key><integer>3</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>39</integer>
+// CHECK:             <key>col</key><integer>3</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>39</integer>
+// CHECK:             <key>col</key><integer>3</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>39</integer>
+// CHECK:             <key>col</key><integer>7</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>39</integer>
+// CHECK:             <key>col</key><integer>7</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>39</integer>
+// CHECK:        <key>col</key><integer>7</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>ranges</key>
 // CHECK:       <array>
-// CHECK:        <dict>
-// CHECK:         <key>start</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>29</integer>
-// CHECK:            <key>col</key><integer>5</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>29</integer>
-// CHECK:            <key>col</key><integer>6</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:         <key>end</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>29</integer>
-// CHECK:            <key>col</key><integer>9</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>29</integer>
-// CHECK:            <key>col</key><integer>12</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:        </dict>
+// CHECK:         <array>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>39</integer>
+// CHECK:           <key>col</key><integer>7</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>39</integer>
+// CHECK:           <key>col</key><integer>7</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:         </array>
 // CHECK:       </array>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>control</string>
-// CHECK:      <key>edges</key>
+// CHECK:       <key>depth</key><integer>1</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Assuming 'x' is non-null</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Assuming 'x' is non-null</string>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>39</integer>
+// CHECK:             <key>col</key><integer>7</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>39</integer>
+// CHECK:             <key>col</key><integer>7</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>40</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>40</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>45</integer>
+// CHECK:        <key>col</key><integer>15</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>ranges</key>
 // CHECK:       <array>
-// CHECK:        <dict>
-// CHECK:         <key>start</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>29</integer>
-// CHECK:            <key>col</key><integer>9</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>29</integer>
-// CHECK:            <key>col</key><integer>12</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:         <key>end</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>30</integer>
-// CHECK:            <key>col</key><integer>9</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>30</integer>
-// CHECK:            <key>col</key><integer>14</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:        </dict>
+// CHECK:         <array>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>45</integer>
+// CHECK:           <key>col</key><integer>15</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>45</integer>
+// CHECK:           <key>col</key><integer>23</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:         </array>
 // CHECK:       </array>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>event</string>
-// CHECK:      <key>location</key>
-// CHECK:      <dict>
-// CHECK:       <key>line</key><integer>30</integer>
-// CHECK:       <key>col</key><integer>9</integer>
-// CHECK:       <key>file</key><integer>0</integer>
-// CHECK:      </dict>
-// CHECK:      <key>ranges</key>
-// CHECK:      <array>
-// CHECK:        <array>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>30</integer>
-// CHECK:          <key>col</key><integer>9</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>30</integer>
-// CHECK:          <key>col</key><integer>14</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:        </array>
-// CHECK:      </array>
-// CHECK:      <key>extended_message</key>
-// CHECK:      <string>Memory is never released; potential memory leak</string>
-// CHECK:      <key>message</key>
-// CHECK: <string>Memory is never released; potential memory leak</string>
-// CHECK:     </dict>
-// CHECK:    </array>
-// CHECK:    <key>description</key><string>Memory is never released; potential memory leak</string>
-// CHECK:    <key>category</key><string>Memory Error</string>
-// CHECK:    <key>type</key><string>Memory leak</string>
-// CHECK:   <key>location</key>
-// CHECK:   <dict>
-// CHECK:    <key>line</key><integer>30</integer>
-// CHECK:    <key>col</key><integer>9</integer>
-// CHECK:    <key>file</key><integer>0</integer>
-// CHECK:   </dict>
-// CHECK:   </dict>
-// CHECK:   <dict>
-// CHECK:    <key>path</key>
-// CHECK:    <array>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>control</string>
-// CHECK:      <key>edges</key>
+// CHECK:       <key>depth</key><integer>1</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Returning from 'wrapper', which allocated memory</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Returning from 'wrapper', which allocated memory</string>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>45</integer>
+// CHECK:             <key>col</key><integer>15</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>45</integer>
+// CHECK:             <key>col</key><integer>23</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>47</integer>
+// CHECK:             <key>col</key><integer>1</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>47</integer>
+// CHECK:             <key>col</key><integer>1</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>47</integer>
+// CHECK:        <key>col</key><integer>1</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>depth</key><integer>0</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Memory is never released; potential memory leak</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Memory is never released; potential memory leak</string>
+// CHECK:      </dict>
+// CHECK:     </array>
+// CHECK:     <key>description</key><string>Memory is never released; potential memory leak</string>
+// CHECK:     <key>category</key><string>Memory Error</string>
+// CHECK:     <key>type</key><string>Memory leak</string>
+// CHECK:    <key>location</key>
+// CHECK:    <dict>
+// CHECK:     <key>line</key><integer>47</integer>
+// CHECK:     <key>col</key><integer>1</integer>
+// CHECK:     <key>file</key><integer>0</integer>
+// CHECK:    </dict>
+// CHECK:    </dict>
+// CHECK:    <dict>
+// CHECK:     <key>path</key>
+// CHECK:     <array>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>60</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>60</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>61</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>61</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>61</integer>
+// CHECK:        <key>col</key><integer>5</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>ranges</key>
 // CHECK:       <array>
-// CHECK:        <dict>
-// CHECK:         <key>start</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>45</integer>
-// CHECK:            <key>col</key><integer>3</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>45</integer>
-// CHECK:            <key>col</key><integer>3</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:         <key>end</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>45</integer>
-// CHECK:            <key>col</key><integer>15</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>45</integer>
-// CHECK:            <key>col</key><integer>15</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:        </dict>
+// CHECK:         <array>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>61</integer>
+// CHECK:           <key>col</key><integer>5</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>61</integer>
+// CHECK:           <key>col</key><integer>28</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:         </array>
 // CHECK:       </array>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>event</string>
-// CHECK:      <key>location</key>
-// CHECK:      <dict>
-// CHECK:       <key>line</key><integer>45</integer>
-// CHECK:       <key>col</key><integer>15</integer>
-// CHECK:       <key>file</key><integer>0</integer>
-// CHECK:      </dict>
-// CHECK:      <key>ranges</key>
-// CHECK:      <array>
-// CHECK:        <array>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>45</integer>
-// CHECK:          <key>col</key><integer>15</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>45</integer>
-// CHECK:          <key>col</key><integer>23</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:        </array>
-// CHECK:      </array>
-// CHECK:      <key>extended_message</key>
-// CHECK:      <string>Calling 'wrapper'</string>
-// CHECK:      <key>message</key>
-// CHECK: <string>Calling 'wrapper'</string>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>event</string>
-// CHECK:      <key>location</key>
-// CHECK:      <dict>
-// CHECK:       <key>line</key><integer>36</integer>
-// CHECK:       <key>col</key><integer>1</integer>
-// CHECK:       <key>file</key><integer>0</integer>
-// CHECK:      </dict>
-// CHECK:      <key>extended_message</key>
-// CHECK:      <string>Entered call from 'test_wrapper'</string>
-// CHECK:      <key>message</key>
-// CHECK: <string>Entered call from 'test_wrapper'</string>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>control</string>
-// CHECK:      <key>edges</key>
+// CHECK:       <key>depth</key><integer>0</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Calling 'my_malloc_and_free'</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Calling 'my_malloc_and_free'</string>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>53</integer>
+// CHECK:        <key>col</key><integer>1</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>depth</key><integer>1</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Entered call from 'test_double_action_call'</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Entered call from 'test_double_action_call'</string>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>53</integer>
+// CHECK:             <key>col</key><integer>1</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>53</integer>
+// CHECK:             <key>col</key><integer>1</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>54</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>54</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>54</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>54</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>54</integer>
+// CHECK:             <key>col</key><integer>10</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>54</integer>
+// CHECK:             <key>col</key><integer>20</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>54</integer>
+// CHECK:        <key>col</key><integer>10</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>ranges</key>
 // CHECK:       <array>
-// CHECK:        <dict>
-// CHECK:         <key>start</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>36</integer>
-// CHECK:            <key>col</key><integer>1</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>36</integer>
-// CHECK:            <key>col</key><integer>1</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:         <key>end</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>37</integer>
-// CHECK:            <key>col</key><integer>3</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>37</integer>
-// CHECK:            <key>col</key><integer>3</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:        </dict>
+// CHECK:         <array>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>54</integer>
+// CHECK:           <key>col</key><integer>10</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>54</integer>
+// CHECK:           <key>col</key><integer>20</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:         </array>
 // CHECK:       </array>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>control</string>
-// CHECK:      <key>edges</key>
+// CHECK:       <key>depth</key><integer>1</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Memory is allocated</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Memory is allocated</string>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>54</integer>
+// CHECK:             <key>col</key><integer>10</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>54</integer>
+// CHECK:             <key>col</key><integer>20</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>55</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>55</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>55</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>55</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>56</integer>
+// CHECK:             <key>col</key><integer>7</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>56</integer>
+// CHECK:             <key>col</key><integer>7</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>56</integer>
+// CHECK:        <key>col</key><integer>7</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>ranges</key>
 // CHECK:       <array>
-// CHECK:        <dict>
-// CHECK:         <key>start</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>37</integer>
-// CHECK:            <key>col</key><integer>3</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>37</integer>
-// CHECK:            <key>col</key><integer>3</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:         <key>end</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>37</integer>
-// CHECK:            <key>col</key><integer>13</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>37</integer>
-// CHECK:            <key>col</key><integer>23</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:        </dict>
+// CHECK:         <array>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>56</integer>
+// CHECK:           <key>col</key><integer>7</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>56</integer>
+// CHECK:           <key>col</key><integer>17</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:         </array>
 // CHECK:       </array>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>event</string>
-// CHECK:      <key>location</key>
-// CHECK:      <dict>
-// CHECK:       <key>line</key><integer>37</integer>
-// CHECK:       <key>col</key><integer>13</integer>
-// CHECK:       <key>file</key><integer>0</integer>
-// CHECK:      </dict>
-// CHECK:      <key>ranges</key>
-// CHECK:      <array>
-// CHECK:        <array>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>37</integer>
-// CHECK:          <key>col</key><integer>13</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>37</integer>
-// CHECK:          <key>col</key><integer>23</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:        </array>
-// CHECK:      </array>
-// CHECK:      <key>extended_message</key>
-// CHECK:      <string>Memory is allocated</string>
-// CHECK:      <key>message</key>
-// CHECK: <string>Memory is allocated</string>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>control</string>
-// CHECK:      <key>edges</key>
+// CHECK:       <key>depth</key><integer>1</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Calling 'my_free'</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Calling 'my_free'</string>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>50</integer>
+// CHECK:        <key>col</key><integer>1</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>depth</key><integer>2</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Entered call from 'my_malloc_and_free'</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Entered call from 'my_malloc_and_free'</string>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>50</integer>
+// CHECK:             <key>col</key><integer>1</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>50</integer>
+// CHECK:             <key>col</key><integer>1</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>51</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>51</integer>
+// CHECK:             <key>col</key><integer>11</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>51</integer>
+// CHECK:        <key>col</key><integer>5</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>ranges</key>
 // CHECK:       <array>
-// CHECK:        <dict>
-// CHECK:         <key>start</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>37</integer>
-// CHECK:            <key>col</key><integer>13</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>37</integer>
-// CHECK:            <key>col</key><integer>23</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:         <key>end</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>39</integer>
-// CHECK:            <key>col</key><integer>3</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>39</integer>
-// CHECK:            <key>col</key><integer>3</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:        </dict>
+// CHECK:         <array>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>51</integer>
+// CHECK:           <key>col</key><integer>5</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>51</integer>
+// CHECK:           <key>col</key><integer>11</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:         </array>
 // CHECK:       </array>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>control</string>
-// CHECK:      <key>edges</key>
+// CHECK:       <key>depth</key><integer>2</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Memory is released</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Memory is released</string>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>56</integer>
+// CHECK:        <key>col</key><integer>7</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>ranges</key>
 // CHECK:       <array>
-// CHECK:        <dict>
-// CHECK:         <key>start</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>39</integer>
-// CHECK:            <key>col</key><integer>3</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>39</integer>
-// CHECK:            <key>col</key><integer>3</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:         <key>end</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>39</integer>
-// CHECK:            <key>col</key><integer>7</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>39</integer>
-// CHECK:            <key>col</key><integer>7</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:        </dict>
+// CHECK:         <array>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>56</integer>
+// CHECK:           <key>col</key><integer>7</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>56</integer>
+// CHECK:           <key>col</key><integer>17</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:         </array>
 // CHECK:       </array>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>event</string>
-// CHECK:      <key>location</key>
-// CHECK:      <dict>
-// CHECK:       <key>line</key><integer>39</integer>
-// CHECK:       <key>col</key><integer>7</integer>
-// CHECK:       <key>file</key><integer>0</integer>
-// CHECK:      </dict>
-// CHECK:      <key>ranges</key>
-// CHECK:      <array>
-// CHECK:        <array>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>39</integer>
-// CHECK:          <key>col</key><integer>7</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>39</integer>
-// CHECK:          <key>col</key><integer>7</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:        </array>
-// CHECK:      </array>
-// CHECK:      <key>extended_message</key>
-// CHECK:      <string>Assuming 'x' is non-null</string>
-// CHECK:      <key>message</key>
-// CHECK: <string>Assuming 'x' is non-null</string>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>control</string>
-// CHECK:      <key>edges</key>
+// CHECK:       <key>depth</key><integer>2</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Returning from 'my_free', which released memory</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Returning from 'my_free', which released memory</string>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>56</integer>
+// CHECK:             <key>col</key><integer>7</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>56</integer>
+// CHECK:             <key>col</key><integer>17</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>57</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>57</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>61</integer>
+// CHECK:        <key>col</key><integer>5</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>ranges</key>
 // CHECK:       <array>
-// CHECK:        <dict>
-// CHECK:         <key>start</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>39</integer>
-// CHECK:            <key>col</key><integer>7</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>39</integer>
-// CHECK:            <key>col</key><integer>7</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:         <key>end</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>40</integer>
-// CHECK:            <key>col</key><integer>5</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>40</integer>
-// CHECK:            <key>col</key><integer>5</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:        </dict>
+// CHECK:         <array>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>61</integer>
+// CHECK:           <key>col</key><integer>5</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>61</integer>
+// CHECK:           <key>col</key><integer>28</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:         </array>
 // CHECK:       </array>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>event</string>
-// CHECK:      <key>location</key>
-// CHECK:      <dict>
-// CHECK:       <key>line</key><integer>45</integer>
-// CHECK:       <key>col</key><integer>15</integer>
-// CHECK:       <key>file</key><integer>0</integer>
-// CHECK:      </dict>
-// CHECK:      <key>ranges</key>
-// CHECK:      <array>
-// CHECK:        <array>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>45</integer>
-// CHECK:          <key>col</key><integer>15</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:         <dict>
-// CHECK:          <key>line</key><integer>45</integer>
-// CHECK:          <key>col</key><integer>23</integer>
-// CHECK:          <key>file</key><integer>0</integer>
-// CHECK:         </dict>
-// CHECK:        </array>
-// CHECK:      </array>
-// CHECK:      <key>extended_message</key>
-// CHECK:      <string>Returning from 'wrapper'</string>
-// CHECK:      <key>message</key>
-// CHECK: <string>Returning from 'wrapper'</string>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>control</string>
-// CHECK:      <key>edges</key>
+// CHECK:       <key>depth</key><integer>1</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Returning from 'my_malloc_and_free', which released memory</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Returning from 'my_malloc_and_free', which released memory</string>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>control</string>
+// CHECK:       <key>edges</key>
+// CHECK:        <array>
+// CHECK:         <dict>
+// CHECK:          <key>start</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>61</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>61</integer>
+// CHECK:             <key>col</key><integer>28</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:          <key>end</key>
+// CHECK:           <array>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>62</integer>
+// CHECK:             <key>col</key><integer>5</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:            <dict>
+// CHECK:             <key>line</key><integer>62</integer>
+// CHECK:             <key>col</key><integer>14</integer>
+// CHECK:             <key>file</key><integer>0</integer>
+// CHECK:            </dict>
+// CHECK:           </array>
+// CHECK:         </dict>
+// CHECK:        </array>
+// CHECK:      </dict>
+// CHECK:      <dict>
+// CHECK:       <key>kind</key><string>event</string>
+// CHECK:       <key>location</key>
+// CHECK:       <dict>
+// CHECK:        <key>line</key><integer>62</integer>
+// CHECK:        <key>col</key><integer>5</integer>
+// CHECK:        <key>file</key><integer>0</integer>
+// CHECK:       </dict>
+// CHECK:       <key>ranges</key>
 // CHECK:       <array>
-// CHECK:        <dict>
-// CHECK:         <key>start</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>45</integer>
-// CHECK:            <key>col</key><integer>15</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>45</integer>
-// CHECK:            <key>col</key><integer>23</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:         <key>end</key>
-// CHECK:          <array>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>47</integer>
-// CHECK:            <key>col</key><integer>1</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:           <dict>
-// CHECK:            <key>line</key><integer>47</integer>
-// CHECK:            <key>col</key><integer>1</integer>
-// CHECK:            <key>file</key><integer>0</integer>
-// CHECK:           </dict>
-// CHECK:          </array>
-// CHECK:        </dict>
+// CHECK:         <array>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>62</integer>
+// CHECK:           <key>col</key><integer>12</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:          <dict>
+// CHECK:           <key>line</key><integer>62</integer>
+// CHECK:           <key>col</key><integer>14</integer>
+// CHECK:           <key>file</key><integer>0</integer>
+// CHECK:          </dict>
+// CHECK:         </array>
 // CHECK:       </array>
-// CHECK:     </dict>
-// CHECK:     <dict>
-// CHECK:      <key>kind</key><string>event</string>
-// CHECK:      <key>location</key>
-// CHECK:      <dict>
-// CHECK:       <key>line</key><integer>47</integer>
-// CHECK:       <key>col</key><integer>1</integer>
-// CHECK:       <key>file</key><integer>0</integer>
-// CHECK:      </dict>
-// CHECK:      <key>extended_message</key>
-// CHECK:      <string>Memory is never released; potential memory leak</string>
-// CHECK:      <key>message</key>
-// CHECK: <string>Memory is never released; potential memory leak</string>
-// CHECK:     </dict>
-// CHECK:    </array>
-// CHECK:    <key>description</key><string>Memory is never released; potential memory leak</string>
-// CHECK:    <key>category</key><string>Memory Error</string>
-// CHECK:    <key>type</key><string>Memory leak</string>
-// CHECK:   <key>location</key>
-// CHECK:   <dict>
-// CHECK:    <key>line</key><integer>47</integer>
-// CHECK:    <key>col</key><integer>1</integer>
-// CHECK:    <key>file</key><integer>0</integer>
-// CHECK:   </dict>
-// CHECK:   </dict>
-// CHECK:  </array>
-// CHECK: </dict>
-// CHECK: </plist>
+// CHECK:       <key>depth</key><integer>0</integer>
+// CHECK:       <key>extended_message</key>
+// CHECK:       <string>Use of memory after it is freed</string>
+// CHECK:       <key>message</key>
+// CHECK:  <string>Use of memory after it is freed</string>
+// CHECK:      </dict>
+// CHECK:     </array>
+// CHECK:     <key>description</key><string>Use of memory after it is freed</string>
+// CHECK:     <key>category</key><string>Memory Error</string>
+// CHECK:     <key>type</key><string>Use-after-free</string>
+// CHECK:    <key>location</key>
+// CHECK:    <dict>
+// CHECK:     <key>line</key><integer>62</integer>
+// CHECK:     <key>col</key><integer>5</integer>
+// CHECK:     <key>file</key><integer>0</integer>
+// CHECK:    </dict>
+// CHECK:    </dict>
+// CHECK:   </array>
+// CHECK:  </dict>
+// CHECK:  </plist>





More information about the cfe-commits mailing list