From 0b3ade86a1c60cf0c7b56aa238aff458eb7f5974 Mon Sep 17 00:00:00 2001 From: Anna Zaks Date: Fri, 20 Apr 2012 21:59:08 +0000 Subject: [PATCH] [analyzer] Run remove dead bindings right before leaving a function. This is needed to ensure that we always report issues in the correct function. For example, leaks are identified when we call remove dead bindings. In order to make sure we report a callee's leak in the callee, we have to run the operation in the callee's context. This change required quite a bit of infrastructure work since: - We used to only run remove dead bindings before a given statement; here we need to run it after the last statement in the function. For this, we added additional Program Point and special mode in the SymbolReaper to remove all symbols in context lower than the current one. - The call exit operation turned into a sequence of nodes, which are now guarded by CallExitBegin and CallExitEnd nodes for clarity and convenience. (Sorry for the long diff.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155244 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Analysis/ProgramPoint.h | 74 +- .../Core/BugReporter/PathDiagnostic.h | 4 +- .../StaticAnalyzer/Core/CheckerManager.h | 3 +- .../Core/PathSensitive/CoreEngine.h | 2 +- .../Core/PathSensitive/ExprEngine.h | 22 +- .../Core/PathSensitive/SymbolManager.h | 6 + lib/Analysis/ProgramPoint.cpp | 6 +- lib/StaticAnalyzer/Core/BugReporter.cpp | 10 +- lib/StaticAnalyzer/Core/CheckerManager.cpp | 17 +- lib/StaticAnalyzer/Core/CoreEngine.cpp | 13 +- lib/StaticAnalyzer/Core/ExplodedGraph.cpp | 5 +- lib/StaticAnalyzer/Core/ExprEngine.cpp | 125 +- .../Core/ExprEngineCallAndReturn.cpp | 147 +- lib/StaticAnalyzer/Core/PathDiagnostic.cpp | 11 +- lib/StaticAnalyzer/Core/SymbolManager.cpp | 7 + test/Analysis/malloc-plist.c | 7213 ++++++++++------- 16 files changed, 4817 insertions(+), 2848 deletions(-) diff --git a/include/clang/Analysis/ProgramPoint.h b/include/clang/Analysis/ProgramPoint.h index aa7a33c956..377f1bc256 100644 --- a/include/clang/Analysis/ProgramPoint.h +++ b/include/clang/Analysis/ProgramPoint.h @@ -45,14 +45,16 @@ public: PostLoadKind, PreStoreKind, PostStoreKind, - PostPurgeDeadSymbolsKind, + PostStmtPurgeDeadSymbolsKind, + PreStmtPurgeDeadSymbolsKind, PostConditionKind, PostLValueKind, PostInitializerKind, CallEnterKind, - CallExitKind, + CallExitBeginKind, + CallExitEndKind, MinPostStmtKind = PostStmtKind, - MaxPostStmtKind = CallExitKind, + MaxPostStmtKind = CallExitEndKind, EpsilonKind}; private: @@ -113,6 +115,14 @@ public: return (Kind) x; } + /// \brief Is this a program point corresponding to purge/removal of dead + /// symbols and bindings. + bool isPurgeKind() { + Kind K = getKind(); + return (K == PostStmtPurgeDeadSymbolsKind || + K == PreStmtPurgeDeadSymbolsKind); + } + const ProgramPointTag *getTag() const { return Tag; } const LocationContext *getLocationContext() const { @@ -340,14 +350,29 @@ public: } }; -class PostPurgeDeadSymbols : public PostStmt { +/// \class Represents a point after we ran remove dead bindings BEFORE +/// processing the given statement. +class PreStmtPurgeDeadSymbols : public PostStmt { public: - PostPurgeDeadSymbols(const Stmt *S, const LocationContext *L, + PreStmtPurgeDeadSymbols(const Stmt *S, const LocationContext *L, const ProgramPointTag *tag = 0) - : PostStmt(S, PostPurgeDeadSymbolsKind, L, tag) {} + : PostStmt(S, PreStmtPurgeDeadSymbolsKind, L, tag) { } static bool classof(const ProgramPoint* Location) { - return Location->getKind() == PostPurgeDeadSymbolsKind; + return Location->getKind() == PreStmtPurgeDeadSymbolsKind; + } +}; + +/// \class Represents a point after we ran remove dead bindings AFTER +/// processing the given statement. +class PostStmtPurgeDeadSymbols : public PostStmt { +public: + PostStmtPurgeDeadSymbols(const Stmt *S, const LocationContext *L, + const ProgramPointTag *tag = 0) + : PostStmt(S, PostStmtPurgeDeadSymbolsKind, L, tag) { } + + static bool classof(const ProgramPoint* Location) { + return Location->getKind() == PostStmtPurgeDeadSymbolsKind; } }; @@ -383,6 +408,7 @@ public: } }; +/// \class Represents a point when we begin processing an inlined call. class CallEnter : public StmtPoint { public: CallEnter(const Stmt *stmt, const StackFrameContext *calleeCtx, @@ -402,14 +428,38 @@ public: } }; -class CallExit : public StmtPoint { +/// \class Represents a point when we start the call exit sequence (for +/// inlined call). +/// +/// The call exit is simulated with a sequence of nodes, which occur between +/// CallExitBegin and CallExitEnd. The following operations occur between the +/// two program points: +/// - CallExitBegin +/// - Bind the return value +/// - Run Remove dead bindings (to clean up the dead symbols from the callee). +/// - CallExitEnd +class CallExitBegin : public StmtPoint { +public: + // CallExitBegin uses the callee's location context. + CallExitBegin(const Stmt *S, const LocationContext *L) + : StmtPoint(S, 0, CallExitBeginKind, L, 0) {} + + static bool classof(const ProgramPoint *Location) { + return Location->getKind() == CallExitBeginKind; + } +}; + +/// \class Represents a point when we finish the call exit sequence (for +/// inlined call). +/// \sa CallExitBegin +class CallExitEnd : public StmtPoint { public: - // CallExit uses the callee's location context. - CallExit(const Stmt *S, const LocationContext *L) - : StmtPoint(S, 0, CallExitKind, L, 0) {} + // CallExitEnd uses the caller's location context. + CallExitEnd(const Stmt *S, const LocationContext *L) + : StmtPoint(S, 0, CallExitEndKind, L, 0) {} static bool classof(const ProgramPoint *Location) { - return Location->getKind() == CallExitKind; + return Location->getKind() == CallExitEndKind; } }; diff --git a/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h b/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h index 5a8a1c78ca..730a558b74 100644 --- a/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h +++ b/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h @@ -362,7 +362,7 @@ public: /// \brief Interface for classes constructing Stack hints. /// /// If a PathDiagnosticEvent occurs in a different frame than the final -/// diagnostic the hints can be used to summarise the effect of the call. +/// diagnostic the hints can be used to summarize the effect of the call. class StackHintGenerator { public: virtual ~StackHintGenerator() = 0; @@ -510,7 +510,7 @@ public: } static PathDiagnosticCallPiece *construct(const ExplodedNode *N, - const CallExit &CE, + const CallExitEnd &CE, const SourceManager &SM); static PathDiagnosticCallPiece *construct(PathPieces &pieces, diff --git a/include/clang/StaticAnalyzer/Core/CheckerManager.h b/include/clang/StaticAnalyzer/Core/CheckerManager.h index d215f992e6..252d36d69b 100644 --- a/include/clang/StaticAnalyzer/Core/CheckerManager.h +++ b/include/clang/StaticAnalyzer/Core/CheckerManager.h @@ -272,7 +272,8 @@ public: void runCheckersForDeadSymbols(ExplodedNodeSet &Dst, const ExplodedNodeSet &Src, SymbolReaper &SymReaper, const Stmt *S, - ExprEngine &Eng); + ExprEngine &Eng, + ProgramPoint::Kind K); /// \brief True if at least one checker wants to check region changes. bool wantsRegionChangeUpdate(ProgramStateRef state); diff --git a/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h b/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h index f5984021d8..5bd566ff63 100644 --- a/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h +++ b/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h @@ -104,7 +104,7 @@ private: CoreEngine(const CoreEngine&); // Do not implement. CoreEngine& operator=(const CoreEngine&); - ExplodedNode *generateCallExitNode(ExplodedNode *N); + ExplodedNode *generateCallExitBeginNode(ExplodedNode *N); public: /// Construct a CoreEngine object to analyze the provided CFG using diff --git a/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h b/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h index 2a21a03e9a..73f39b1bce 100644 --- a/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h +++ b/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h @@ -151,6 +151,25 @@ public: ExplodedGraph& getGraph() { return G; } const ExplodedGraph& getGraph() const { return G; } + /// \brief Run the analyzer's garbage collection - remove dead symbols and + /// bindings. + /// + /// \param Node - The predecessor node, from which the processing should + /// start. + /// \param Out - The returned set of output nodes. + /// \param ReferenceStmt - Run garbage collection using the symbols, + /// which are live before the given statement. + /// \param LC - The location context of the ReferenceStmt. + /// \param DiagnosticStmt - the statement used to associate the diagnostic + /// message, if any warnings should occur while removing the dead (leaks + /// are usually reported here). + /// \param K - In some cases it is possible to use PreStmt kind. (Do + /// not use it unless you know what you are doing.) + void removeDead(ExplodedNode *Node, ExplodedNodeSet &Out, + const Stmt *ReferenceStmt, const LocationContext *LC, + const Stmt *DiagnosticStmt, + ProgramPoint::Kind K = ProgramPoint::PreStmtPurgeDeadSymbolsKind); + /// processCFGElement - Called by CoreEngine. Used to generate new successor /// nodes by processing the 'effects' of a CFG element. void processCFGElement(const CFGElement E, ExplodedNode *Pred, @@ -199,7 +218,8 @@ public: /// Generate the entry node of the callee. void processCallEnter(CallEnter CE, ExplodedNode *Pred); - /// Generate the first post callsite node. + /// Generate the sequence of nodes that simulate the call exit and the post + /// visit for CallExpr. void processCallExit(ExplodedNode *Pred); /// Called by CoreEngine when the analysis worklist has terminated. diff --git a/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h b/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h index 69f5e7ca6b..4d329d2f10 100644 --- a/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h +++ b/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h @@ -553,6 +553,7 @@ public: BasicValueFactory &getBasicVals() { return BV; } }; +/// \class A class responsible for cleaning up unused symbols. class SymbolReaper { enum SymbolStatus { NotProcessed, @@ -576,6 +577,11 @@ class SymbolReaper { llvm::DenseMap includedRegionCache; public: + /// \brief Construct a reaper object, which removes everything which is not + /// live before we execute statement s in the given location context. + /// + /// If the statement is NULL, everything is this and parent contexts is + /// considered live. SymbolReaper(const LocationContext *ctx, const Stmt *s, SymbolManager& symmgr, StoreManager &storeMgr) : LCtx(ctx), Loc(s), SymMgr(symmgr), reapedStore(0, storeMgr) {} diff --git a/lib/Analysis/ProgramPoint.cpp b/lib/Analysis/ProgramPoint.cpp index 3f711b447a..7d67e8a91c 100644 --- a/lib/Analysis/ProgramPoint.cpp +++ b/lib/Analysis/ProgramPoint.cpp @@ -36,8 +36,10 @@ ProgramPoint ProgramPoint::getProgramPoint(const Stmt *S, ProgramPoint::Kind K, return PreStore(S, LC, tag); case ProgramPoint::PostLValueKind: return PostLValue(S, LC, tag); - case ProgramPoint::PostPurgeDeadSymbolsKind: - return PostPurgeDeadSymbols(S, LC, tag); + case ProgramPoint::PostStmtPurgeDeadSymbolsKind: + return PostStmtPurgeDeadSymbols(S, LC, tag); + case ProgramPoint::PreStmtPurgeDeadSymbolsKind: + return PreStmtPurgeDeadSymbols(S, LC, tag); } } diff --git a/lib/StaticAnalyzer/Core/BugReporter.cpp b/lib/StaticAnalyzer/Core/BugReporter.cpp index a2642120b7..4330d2ed47 100644 --- a/lib/StaticAnalyzer/Core/BugReporter.cpp +++ b/lib/StaticAnalyzer/Core/BugReporter.cpp @@ -427,7 +427,7 @@ static void GenerateMinimalPathDiagnostic(PathDiagnostic& PD, ProgramPoint P = N->getLocation(); - if (const CallExit *CE = dyn_cast(&P)) { + if (const CallExitEnd *CE = dyn_cast(&P)) { PathDiagnosticCallPiece *C = PathDiagnosticCallPiece::construct(N, *CE, SMgr); PD.getActivePath().push_front(C); @@ -440,7 +440,7 @@ static void GenerateMinimalPathDiagnostic(PathDiagnostic& PD, PD.popActivePath(); // The current active path should never be empty. Either we // just added a bunch of stuff to the top-level path, or - // we have a previous CallExit. If the front of the active + // we have a previous CallExitEnd. If the front of the active // path is not a PathDiagnosticCallPiece, it means that the // path terminated within a function call. We must then take the // current contents of the active path and place it within @@ -1066,10 +1066,10 @@ static void GenerateExtensivePathDiagnostic(PathDiagnostic& PD, ProgramPoint P = N->getLocation(); do { - if (const CallExit *CE = dyn_cast(&P)) { + if (const CallExitEnd *CE = dyn_cast(&P)) { const StackFrameContext *LCtx = CE->getLocationContext()->getCurrentStackFrame(); - PathDiagnosticLocation Loc(LCtx->getCallSite(), + PathDiagnosticLocation Loc(CE->getStmt(), PDB.getSourceManager(), LCtx); EB.addEdge(Loc, true); @@ -1099,7 +1099,7 @@ static void GenerateExtensivePathDiagnostic(PathDiagnostic& PD, // The current active path should never be empty. Either we // just added a bunch of stuff to the top-level path, or - // we have a previous CallExit. If the front of the active + // we have a previous CallExitEnd. If the front of the active // path is not a PathDiagnosticCallPiece, it means that the // path terminated within a function call. We must then take the // current contents of the active path and place it within diff --git a/lib/StaticAnalyzer/Core/CheckerManager.cpp b/lib/StaticAnalyzer/Core/CheckerManager.cpp index 0bcc343fba..8a6ea1d0f8 100644 --- a/lib/StaticAnalyzer/Core/CheckerManager.cpp +++ b/lib/StaticAnalyzer/Core/CheckerManager.cpp @@ -381,21 +381,25 @@ namespace { SymbolReaper &SR; const Stmt *S; ExprEngine &Eng; + ProgramPoint::Kind ProgarmPointKind; CheckersTy::const_iterator checkers_begin() { return Checkers.begin(); } CheckersTy::const_iterator checkers_end() { return Checkers.end(); } CheckDeadSymbolsContext(const CheckersTy &checkers, SymbolReaper &sr, - const Stmt *s, ExprEngine &eng) - : Checkers(checkers), SR(sr), S(s), Eng(eng) { } + const Stmt *s, ExprEngine &eng, + ProgramPoint::Kind K) + : Checkers(checkers), SR(sr), S(s), Eng(eng), ProgarmPointKind(K) { } void runChecker(CheckerManager::CheckDeadSymbolsFunc checkFn, NodeBuilder &Bldr, ExplodedNode *Pred) { - ProgramPoint::Kind K = ProgramPoint::PostPurgeDeadSymbolsKind; - const ProgramPoint &L = ProgramPoint::getProgramPoint(S, K, + const ProgramPoint &L = ProgramPoint::getProgramPoint(S, ProgarmPointKind, Pred->getLocationContext(), checkFn.Checker); CheckerContext C(Bldr, Eng, Pred, L); + // Note, do not pass the statement to the checkers without letting them + // differentiate if we ran remove dead bindings before or after the + // statement. checkFn(SR, C); } }; @@ -406,8 +410,9 @@ void CheckerManager::runCheckersForDeadSymbols(ExplodedNodeSet &Dst, const ExplodedNodeSet &Src, SymbolReaper &SymReaper, const Stmt *S, - ExprEngine &Eng) { - CheckDeadSymbolsContext C(DeadSymbolsCheckers, SymReaper, S, Eng); + ExprEngine &Eng, + ProgramPoint::Kind K) { + CheckDeadSymbolsContext C(DeadSymbolsCheckers, SymReaper, S, Eng, K); expandGraphWithCheckers(C, Dst, Src); } diff --git a/lib/StaticAnalyzer/Core/CoreEngine.cpp b/lib/StaticAnalyzer/Core/CoreEngine.cpp index ca662c7992..c9de20e500 100644 --- a/lib/StaticAnalyzer/Core/CoreEngine.cpp +++ b/lib/StaticAnalyzer/Core/CoreEngine.cpp @@ -248,7 +248,7 @@ void CoreEngine::dispatchWorkItem(ExplodedNode* Pred, ProgramPoint Loc, break; } - case ProgramPoint::CallExitKind: + case ProgramPoint::CallExitBeginKind: SubEng.processCallExit(Pred); break; @@ -531,14 +531,14 @@ void CoreEngine::enqueueStmtNode(ExplodedNode *N, WList->enqueue(Succ, Block, Idx+1); } -ExplodedNode *CoreEngine::generateCallExitNode(ExplodedNode *N) { - // Create a CallExit node and enqueue it. +ExplodedNode *CoreEngine::generateCallExitBeginNode(ExplodedNode *N) { + // Create a CallExitBegin node and enqueue it. const StackFrameContext *LocCtx = cast(N->getLocationContext()); const Stmt *CE = LocCtx->getCallSite(); // Use the the callee location context. - CallExit Loc(CE, LocCtx); + CallExitBegin Loc(CE, LocCtx); bool isNew; ExplodedNode *Node = G->getNode(Loc, N->getState(), false, &isNew); @@ -565,12 +565,13 @@ void CoreEngine::enqueue(ExplodedNodeSet &Set, void CoreEngine::enqueueEndOfFunction(ExplodedNodeSet &Set) { for (ExplodedNodeSet::iterator I = Set.begin(), E = Set.end(); I != E; ++I) { ExplodedNode *N = *I; - // If we are in an inlined call, generate CallExit node. + // If we are in an inlined call, generate CallExitBegin node. if (N->getLocationContext()->getParent()) { - N = generateCallExitNode(N); + N = generateCallExitBeginNode(N); if (N) WList->enqueue(N); } else { + // TODO: We should run remove dead bindings here. G->addEndOfPath(N); NumPathsExplored++; } diff --git a/lib/StaticAnalyzer/Core/ExplodedGraph.cpp b/lib/StaticAnalyzer/Core/ExplodedGraph.cpp index 0dcbe1ff4a..e433c353c1 100644 --- a/lib/StaticAnalyzer/Core/ExplodedGraph.cpp +++ b/lib/StaticAnalyzer/Core/ExplodedGraph.cpp @@ -57,7 +57,7 @@ ExplodedGraph::~ExplodedGraph() {} //===----------------------------------------------------------------------===// bool ExplodedGraph::shouldCollect(const ExplodedNode *node) { - // Reclaimn all nodes that match *all* the following criteria: + // Reclaim all nodes that match *all* the following criteria: // // (1) 1 predecessor (that has one successor) // (2) 1 successor (that has one predecessor) @@ -83,7 +83,8 @@ bool ExplodedGraph::shouldCollect(const ExplodedNode *node) { // Condition 3. ProgramPoint progPoint = node->getLocation(); if (!isa(progPoint) || - (isa(progPoint) || isa(progPoint))) + (isa(progPoint) || + isa(progPoint) || isa(progPoint))) return false; // Condition 4. diff --git a/lib/StaticAnalyzer/Core/ExprEngine.cpp b/lib/StaticAnalyzer/Core/ExprEngine.cpp index abc6316538..1fd4dcf712 100644 --- a/lib/StaticAnalyzer/Core/ExprEngine.cpp +++ b/lib/StaticAnalyzer/Core/ExprEngine.cpp @@ -42,8 +42,6 @@ using llvm::APSInt; STATISTIC(NumRemoveDeadBindings, "The # of times RemoveDeadBindings is called"); -STATISTIC(NumRemoveDeadBindingsSkipped, - "The # of times RemoveDeadBindings is skipped"); STATISTIC(NumMaxBlockCountReached, "The # of aborted paths due to reaching the maximum block count in " "a top level function"); @@ -231,6 +229,7 @@ void ExprEngine::processCFGElement(const CFGElement E, ExplodedNode *Pred, ProcessImplicitDtor(*E.getAs(), Pred); return; } + currentBuilderContext = 0; } static bool shouldRemoveDeadBindings(AnalysisManager &AMgr, @@ -260,62 +259,47 @@ static bool shouldRemoveDeadBindings(AnalysisManager &AMgr, return !PM.isConsumedExpr(cast(S.getStmt())); } -void ExprEngine::ProcessStmt(const CFGStmt S, - ExplodedNode *Pred) { - // Reclaim any unnecessary nodes in the ExplodedGraph. - G.reclaimRecentlyAllocatedNodes(); - - currentStmt = S.getStmt(); - PrettyStackTraceLoc CrashInfo(getContext().getSourceManager(), - currentStmt->getLocStart(), - "Error evaluating statement"); - - EntryNode = Pred; - - ProgramStateRef EntryState = EntryNode->getState(); - CleanedState = EntryState; - - // Create the cleaned state. - const LocationContext *LC = EntryNode->getLocationContext(); - SymbolReaper SymReaper(LC, currentStmt, SymMgr, getStoreManager()); - - if (shouldRemoveDeadBindings(AMgr, S, Pred, LC)) { - NumRemoveDeadBindings++; - getCheckerManager().runCheckersForLiveSymbols(CleanedState, SymReaper); - - const StackFrameContext *SFC = LC->getCurrentStackFrame(); - - // Create a state in which dead bindings are removed from the environment - // and the store. TODO: The function should just return new env and store, - // not a new state. - CleanedState = StateMgr.removeDeadBindings(CleanedState, SFC, SymReaper); - } else { - NumRemoveDeadBindingsSkipped++; - } +void ExprEngine::removeDead(ExplodedNode *Pred, ExplodedNodeSet &Out, + const Stmt *ReferenceStmt, + const LocationContext *LC, + const Stmt *DiagnosticStmt, + ProgramPoint::Kind K) { + assert((K == ProgramPoint::PreStmtPurgeDeadSymbolsKind || + ReferenceStmt == 0) && "PreStmt is not generally supported by " + "the SymbolReaper yet"); + NumRemoveDeadBindings++; + CleanedState = Pred->getState(); + SymbolReaper SymReaper(LC, ReferenceStmt, SymMgr, getStoreManager()); + + getCheckerManager().runCheckersForLiveSymbols(CleanedState, SymReaper); + + // Create a state in which dead bindings are removed from the environment + // and the store. TODO: The function should just return new env and store, + // not a new state. + const StackFrameContext *SFC = LC->getCurrentStackFrame(); + CleanedState = StateMgr.removeDeadBindings(CleanedState, SFC, SymReaper); // Process any special transfer function for dead symbols. - ExplodedNodeSet Tmp; // A tag to track convenience transitions, which can be removed at cleanup. static SimpleProgramPointTag cleanupTag("ExprEngine : Clean Node"); - if (!SymReaper.hasDeadSymbols()) { // Generate a CleanedNode that has the environment and store cleaned // up. Since no symbols are dead, we can optimize and not clean out // the constraint manager. - StmtNodeBuilder Bldr(Pred, Tmp, *currentBuilderContext); - Bldr.generateNode(currentStmt, EntryNode, CleanedState, false, &cleanupTag); + StmtNodeBuilder Bldr(Pred, Out, *currentBuilderContext); + Bldr.generateNode(DiagnosticStmt, Pred, CleanedState, false, &cleanupTag,K); } else { // Call checkers with the non-cleaned state so that they could query the // values of the soon to be dead symbols. ExplodedNodeSet CheckedSet; - getCheckerManager().runCheckersForDeadSymbols(CheckedSet, EntryNode, - SymReaper, currentStmt, *this); + getCheckerManager().runCheckersForDeadSymbols(CheckedSet, Pred, SymReaper, + DiagnosticStmt, *this, K); // For each node in CheckedSet, generate CleanedNodes that have the // environment, the store, and the constraints cleaned up but have the // user-supplied states as the predecessors. - StmtNodeBuilder Bldr(CheckedSet, Tmp, *currentBuilderContext); + StmtNodeBuilder Bldr(CheckedSet, Out, *currentBuilderContext); for (ExplodedNodeSet::const_iterator I = CheckedSet.begin(), E = CheckedSet.end(); I != E; ++I) { ProgramStateRef CheckerState = (*I)->getState(); @@ -324,10 +308,10 @@ void ExprEngine::ProcessStmt(const CFGStmt S, CheckerState = getConstraintManager().removeDeadBindings(CheckerState, SymReaper); - assert(StateMgr.haveEqualEnvironments(CheckerState, EntryState) && + assert(StateMgr.haveEqualEnvironments(CheckerState, Pred->getState()) && "Checkers are not allowed to modify the Environment as a part of " "checkDeadSymbols processing."); - assert(StateMgr.haveEqualStores(CheckerState, EntryState) && + assert(StateMgr.haveEqualStores(CheckerState, Pred->getState()) && "Checkers are not allowed to modify the Store as a part of " "checkDeadSymbols processing."); @@ -335,13 +319,35 @@ void ExprEngine::ProcessStmt(const CFGStmt S, // generate a transition to that state. ProgramStateRef CleanedCheckerSt = StateMgr.getPersistentStateWithGDM(CleanedState, CheckerState); - Bldr.generateNode(currentStmt, *I, CleanedCheckerSt, false, &cleanupTag, - ProgramPoint::PostPurgeDeadSymbolsKind); + Bldr.generateNode(DiagnosticStmt, *I, CleanedCheckerSt, false, + &cleanupTag, K); } } +} + +void ExprEngine::ProcessStmt(const CFGStmt S, + ExplodedNode *Pred) { + // Reclaim any unnecessary nodes in the ExplodedGraph. + G.reclaimRecentlyAllocatedNodes(); + + currentStmt = S.getStmt(); + PrettyStackTraceLoc CrashInfo(getContext().getSourceManager(), + currentStmt->getLocStart(), + "Error evaluating statement"); + // Remove dead bindings and symbols. + EntryNode = Pred; + ExplodedNodeSet CleanedStates; + if (shouldRemoveDeadBindings(AMgr, S, Pred, EntryNode->getLocationContext())){ + removeDead(EntryNode, CleanedStates, currentStmt, + Pred->getLocationContext(), currentStmt); + } else + CleanedStates.Add(EntryNode); + + // Visit the statement. ExplodedNodeSet Dst; - for (ExplodedNodeSet::iterator I=Tmp.begin(), E=Tmp.end(); I!=E; ++I) { + for (ExplodedNodeSet::iterator I = CleanedStates.begin(), + E = CleanedStates.end(); I != E; ++I) { ExplodedNodeSet DstI; // Visit the statement. Visit(currentStmt, *I, DstI); @@ -994,7 +1000,7 @@ bool ExprEngine::replayWithoutInlining(ExplodedNode *N, continue; // We reached the caller. Find the node right before we started // processing the CallExpr. - if (isa(L)) + if (L.isPurgeKind()) continue; if (const StmtPoint *SP = dyn_cast(&L)) if (SP->getStmt() == CalleeSF->getCallSite()) @@ -1861,10 +1867,17 @@ struct DOTGraphTraits : ProgramPoint Loc = N->getLocation(); switch (Loc.getKind()) { - case ProgramPoint::BlockEntranceKind: + case ProgramPoint::BlockEntranceKind: { Out << "Block Entrance: B" << cast(Loc).getBlock()->getBlockID(); + if (const NamedDecl *ND = + dyn_cast(Loc.getLocationContext()->getDecl())) { + Out << " ("; + ND->printName(Out); + Out << ")"; + } break; + } case ProgramPoint::BlockExitKind: assert (false); @@ -1874,8 +1887,20 @@ struct DOTGraphTraits : Out << "CallEnter"; break; - case ProgramPoint::CallExitKind: - Out << "CallExit"; + case ProgramPoint::CallExitBeginKind: + Out << "CallExitBegin"; + break; + + case ProgramPoint::CallExitEndKind: + Out << "CallExitEnd"; + break; + + case ProgramPoint::PostStmtPurgeDeadSymbolsKind: + Out << "PostStmtPurgeDeadSymbols"; + break; + + case ProgramPoint::PreStmtPurgeDeadSymbolsKind: + Out << "PreStmtPurgeDeadSymbols"; break; case ProgramPoint::EpsilonKind: diff --git a/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp b/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp index b9f4e153d7..4d0da06427 100644 --- a/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp +++ b/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp @@ -51,71 +51,140 @@ void ExprEngine::processCallEnter(CallEnter CE, ExplodedNode *Pred) { Engine.getWorkList()->enqueue(Node); } -static const ReturnStmt *getReturnStmt(const ExplodedNode *Node) { +// Find the last statement on the path to the exploded node and the +// corresponding Block. +static std::pair getLastStmt(const ExplodedNode *Node) { + const Stmt *S = 0; + const CFGBlock *Blk = 0; + const StackFrameContext *SF = + Node->getLocation().getLocationContext()->getCurrentStackFrame(); while (Node) { const ProgramPoint &PP = Node->getLocation(); - // Skip any BlockEdges. - if (isa(PP) || isa(PP)) { + // Skip any BlockEdges, empty blocks, and the CallExitBegin node. + if (isa(PP) || isa(PP) || isa(PP)){ assert(Node->pred_size() == 1); Node = *Node->pred_begin(); continue; - } + } + // If we reached the CallEnter, the function has no statements. + if (isa(PP)) + break; if (const StmtPoint *SP = dyn_cast(&PP)) { - const Stmt *S = SP->getStmt(); - return dyn_cast(S); + S = SP->getStmt(); + // Now, get the enclosing basic block. + while (Node && Node->pred_size() >=1 ) { + const ProgramPoint &PP = Node->getLocation(); + if (isa(PP) && + (PP.getLocationContext()->getCurrentStackFrame() == SF)) { + BlockEdge &EPP = cast(PP); + Blk = EPP.getDst(); + break; + } + Node = *Node->pred_begin(); + } + break; } break; } - return 0; + return std::pair(S, Blk); } -void ExprEngine::processCallExit(ExplodedNode *Pred) { - ProgramStateRef state = Pred->getState(); - const StackFrameContext *calleeCtx = - Pred->getLocationContext()->getCurrentStackFrame(); +/// The call exit is simulated with a sequence of nodes, which occur between +/// CallExitBegin and CallExitEnd. The following operations occur between the +/// two program points: +/// 1. CallExitBegin (triggers the start of call exit sequence) +/// 2. Bind the return value +/// 3. Run Remove dead bindings to clean up the dead symbols from the callee. +/// 4. CallExitEnd (switch to the caller context) +/// 5. PostStmt +void ExprEngine::processCallExit(ExplodedNode *CEBNode) { + // Step 1 CEBNode was generated before the call. + + const StackFrameContext *calleeCtx = + CEBNode->getLocationContext()->getCurrentStackFrame(); const LocationContext *callerCtx = calleeCtx->getParent(); const Stmt *CE = calleeCtx->getCallSite(); - + ProgramStateRef state = CEBNode->getState(); + // Find the last statement in the function and the corresponding basic block. + const Stmt *LastSt = 0; + const CFGBlock *Blk = 0; + llvm::tie(LastSt, Blk) = getLastStmt(CEBNode); + + // Step 2: generate node with binded return value: CEBNode -> BindedRetNode. + // If the callee returns an expression, bind its value to CallExpr. - if (const ReturnStmt *RS = getReturnStmt(Pred)) { - const LocationContext *LCtx = Pred->getLocationContext(); + if (const ReturnStmt *RS = dyn_cast_or_null(LastSt)) { + const LocationContext *LCtx = CEBNode->getLocationContext(); SVal V = state->getSVal(RS, LCtx); state = state->BindExpr(CE, callerCtx, V); } - + // Bind the constructed object value to CXXConstructExpr. if (const CXXConstructExpr *CCE = dyn_cast(CE)) { const CXXThisRegion *ThisR = - getCXXThisRegion(CCE->getConstructor()->getParent(), calleeCtx); - + getCXXThisRegion(CCE->getConstructor()->getParent(), calleeCtx); + SVal ThisV = state->getSVal(ThisR); // Always bind the region to the CXXConstructExpr. - state = state->BindExpr(CCE, Pred->getLocationContext(), ThisV); + state = state->BindExpr(CCE, CEBNode->getLocationContext(), ThisV); } - - static SimpleProgramPointTag returnTag("ExprEngine : Call Return"); - PostStmt Loc(CE, callerCtx, &returnTag); + + static SimpleProgramPointTag retValBindTag("ExprEngine : Bind Return Value"); + PostStmt Loc(LastSt, calleeCtx, &retValBindTag); bool isNew; - ExplodedNode *N = G.getNode(Loc, state, false, &isNew); - N->addPredecessor(Pred, G); + ExplodedNode *BindedRetNode = G.getNode(Loc, state, false, &isNew); + BindedRetNode->addPredecessor(CEBNode, G); if (!isNew) return; - - // Perform the post-condition check of the CallExpr. - ExplodedNodeSet Dst; - NodeBuilderContext Ctx(Engine, calleeCtx->getCallSiteBlock(), N); - SaveAndRestore NBCSave(currentBuilderContext, - &Ctx); - SaveAndRestore CBISave(currentStmtIdx, calleeCtx->getIndex()); - - getCheckerManager().runCheckersForPostStmt(Dst, N, CE, *this, - /* wasInlined */ true); - - // Enqueue the next element in the block. - for (ExplodedNodeSet::iterator I = Dst.begin(), E = Dst.end(); I != E; ++I) { - Engine.getWorkList()->enqueue(*I, - calleeCtx->getCallSiteBlock(), - calleeCtx->getIndex()+1); + + // Step 3: BindedRetNode -> CleanedNodes + // If we can find a statement and a block in the inlined function, run remove + // dead bindings before returning from the call. This is important to ensure + // that we report the issues such as leaks in the stack contexts in which + // they occurred. + ExplodedNodeSet CleanedNodes; + if (LastSt && Blk) { + NodeBuilderContext Ctx(getCoreEngine(), Blk, BindedRetNode); + currentBuilderContext = &Ctx; + // Here, we call the Symbol Reaper with 0 statement and caller location + // context, telling it to clean up everything in the callee's context + // (and it's children). We use LastStmt as a diagnostic statement, which + // which the PreStmtPurge Dead point will be associated. + removeDead(BindedRetNode, CleanedNodes, 0, callerCtx, LastSt, + ProgramPoint::PostStmtPurgeDeadSymbolsKind); + currentBuilderContext = 0; + } + + for (ExplodedNodeSet::iterator I = CleanedNodes.begin(), + E = CleanedNodes.end(); I != E; ++I) { + + // Step 4: Generate the CallExit and leave the callee's context. + // CleanedNodes -> CEENode + CallExitEnd Loc(CE, callerCtx); + bool isNew; + ExplodedNode *CEENode = G.getNode(Loc, (*I)->getState(), false, &isNew); + CEENode->addPredecessor(*I, G); + if (!isNew) + return; + + // Step 5: Perform the post-condition check of the CallExpr and enqueue the + // result onto the work list. + // CEENode -> Dst -> WorkList + ExplodedNodeSet Dst; + NodeBuilderContext Ctx(Engine, calleeCtx->getCallSiteBlock(), CEENode); + SaveAndRestore NBCSave(currentBuilderContext, + &Ctx); + SaveAndRestore CBISave(currentStmtIdx, calleeCtx->getIndex()); + + getCheckerManager().runCheckersForPostStmt(Dst, CEENode, CE, *this, true); + + // Enqueue the next element in the block. + for (ExplodedNodeSet::iterator PSI = Dst.begin(), PSE = Dst.end(); + PSI != PSE; ++PSI) { + Engine.getWorkList()->enqueue(*PSI, calleeCtx->getCallSiteBlock(), + calleeCtx->getIndex()+1); + } } } diff --git a/lib/StaticAnalyzer/Core/PathDiagnostic.cpp b/lib/StaticAnalyzer/Core/PathDiagnostic.cpp index 01dd965ac5..a1e662f129 100644 --- a/lib/StaticAnalyzer/Core/PathDiagnostic.cpp +++ b/lib/StaticAnalyzer/Core/PathDiagnostic.cpp @@ -510,9 +510,9 @@ static PathDiagnosticLocation getLastStmtLoc(const ExplodedNode *N, PathDiagnosticCallPiece * PathDiagnosticCallPiece::construct(const ExplodedNode *N, - const CallExit &CE, + const CallExitEnd &CE, const SourceManager &SM) { - const Decl *caller = CE.getLocationContext()->getParent()->getDecl(); + const Decl *caller = CE.getLocationContext()->getDecl(); PathDiagnosticLocation pos = getLastStmtLoc(N, SM); return new PathDiagnosticCallPiece(caller, pos); } @@ -667,16 +667,13 @@ StackHintGenerator::~StackHintGenerator() {} std::string StackHintGeneratorForSymbol::getMessage(const ExplodedNode *N){ ProgramPoint P = N->getLocation(); - const CallExit *CExit = dyn_cast(&P); - assert(CExit && "Stack Hints should be constructed at CallExit points."); + const CallExitEnd *CExit = dyn_cast(&P); + assert(CExit && "Stack Hints should be constructed at CallExitEnd points."); const CallExpr *CE = dyn_cast_or_null(CExit->getStmt()); if (!CE) return ""; - // Get the successor node to make sure the return statement is evaluated and - // CE is set to the result value. - N = *N->succ_begin(); if (!N) return getMessageForSymbolNotFound(); diff --git a/lib/StaticAnalyzer/Core/SymbolManager.cpp b/lib/StaticAnalyzer/Core/SymbolManager.cpp index adefb5858e..5fee9afc08 100644 --- a/lib/StaticAnalyzer/Core/SymbolManager.cpp +++ b/lib/StaticAnalyzer/Core/SymbolManager.cpp @@ -501,6 +501,9 @@ SymbolReaper::isLive(const Stmt *ExprVal, const LocationContext *ELCtx) const { return false; return true; } + // If no statement is provided, everything is this and parent contexts is live. + if (!Loc) + return true; return LCtx->getAnalysis()->isLive(Loc, ExprVal); } @@ -510,6 +513,10 @@ bool SymbolReaper::isLive(const VarRegion *VR, bool includeStoreBindings) const{ const StackFrameContext *CurrentContext = LCtx->getCurrentStackFrame(); if (VarContext == CurrentContext) { + // If no statemetnt is provided, everything is live. + if (!Loc) + return true; + if (LCtx->getAnalysis()->isLive(Loc, VR->getDecl())) return true; diff --git a/test/Analysis/malloc-plist.c b/test/Analysis/malloc-plist.c index db2e0f01e7..440be1d5f5 100644 --- a/test/Analysis/malloc-plist.c +++ b/test/Analysis/malloc-plist.c @@ -97,2718 +97,4503 @@ void LeakedSymbol(int in) { in++; } -// CHECK: -// CHECK: -// CHECK: -// CHECK: files -// CHECK: -// CHECK: -// CHECK: diagnostics -// CHECK: -// CHECK: -// CHECK: path -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line10 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line10 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line10 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line10 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line10 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line10 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line11 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line11 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line11 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line11 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line11 -// CHECK: col18 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line11 -// CHECK: col27 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line11 -// CHECK: col18 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line11 -// CHECK: col18 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line11 -// CHECK: col27 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth0 -// CHECK: extended_message -// CHECK: Memory is allocated -// CHECK: message -// CHECK: Memory is allocated -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line11 -// CHECK: col18 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line11 -// CHECK: col27 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line14 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line14 -// CHECK: col6 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line14 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line14 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line14 -// CHECK: col6 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth0 -// CHECK: extended_message -// CHECK: Memory is never released; potential leak of memory pointed to by 'p' -// CHECK: message -// CHECK: Memory is never released; potential leak of memory pointed to by 'p' -// CHECK: -// CHECK: -// CHECK: descriptionMemory is never released; potential leak of memory pointed to by 'p' -// CHECK: categoryMemory Error -// CHECK: typeMemory leak -// CHECK: issue_context_kindfunction -// CHECK: issue_contextdiagnosticTest -// CHECK: location -// CHECK: -// CHECK: line14 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: path -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line18 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line18 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line19 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line19 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line19 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line19 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line19 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line19 -// CHECK: col30 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line19 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line19 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line19 -// CHECK: col30 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth0 -// CHECK: extended_message -// CHECK: Memory is allocated -// CHECK: message -// CHECK: Memory is allocated -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line19 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line19 -// CHECK: col30 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line21 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line21 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line21 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: depth0 -// CHECK: extended_message -// CHECK: Memory is never released; potential leak of memory pointed to by 'A' -// CHECK: message -// CHECK: Memory is never released; potential leak of memory pointed to by 'A' -// CHECK: -// CHECK: -// CHECK: descriptionMemory is never released; potential leak of memory pointed to by 'A' -// CHECK: categoryMemory Error -// CHECK: typeMemory leak -// CHECK: issue_context_kindfunction -// CHECK: issue_contextmyArrayAllocation -// CHECK: location -// CHECK: -// CHECK: line21 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: path -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line24 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line24 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line24 -// CHECK: col18 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line24 -// CHECK: col28 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line24 -// CHECK: col18 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line24 -// CHECK: col18 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line24 -// CHECK: col28 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth0 -// CHECK: extended_message -// CHECK: Memory is allocated -// CHECK: message -// CHECK: Memory is allocated -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line24 -// CHECK: col18 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line24 -// CHECK: col28 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line26 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line26 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line26 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line26 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line26 -// CHECK: col18 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line26 -// CHECK: col40 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line26 -// CHECK: col18 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line26 -// CHECK: col18 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line26 -// CHECK: col40 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth0 -// CHECK: extended_message -// CHECK: Attempt to reallocate memory -// CHECK: message -// CHECK: Attempt to reallocate memory -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line26 -// CHECK: col18 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line26 -// CHECK: col40 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line27 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line27 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line27 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line27 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line27 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line27 -// CHECK: col12 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line27 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line27 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line27 -// CHECK: col12 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth0 -// CHECK: extended_message -// CHECK: Assuming 'tmp' is null -// CHECK: message -// CHECK: Assuming 'tmp' is null -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line27 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line27 -// CHECK: col12 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line27 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line27 -// CHECK: col6 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line27 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line27 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line27 -// CHECK: col6 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth0 -// CHECK: extended_message -// CHECK: Reallocation failed -// CHECK: message -// CHECK: Reallocation failed -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line27 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line27 -// CHECK: col6 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line28 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line28 -// CHECK: col14 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line28 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line28 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line28 -// CHECK: col14 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth0 -// CHECK: extended_message -// CHECK: Memory is never released; potential leak of memory pointed to by 'buf' -// CHECK: message -// CHECK: Memory is never released; potential leak of memory pointed to by 'buf' -// CHECK: -// CHECK: -// CHECK: descriptionMemory is never released; potential leak of memory pointed to by 'buf' -// CHECK: categoryMemory Error -// CHECK: typeMemory leak -// CHECK: issue_context_kindfunction -// CHECK: issue_contextreallocDiagnostics -// CHECK: location -// CHECK: -// CHECK: line28 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: path -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line43 -// CHECK: col3 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line43 -// CHECK: col3 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line43 -// CHECK: col15 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line43 -// CHECK: col15 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line43 -// CHECK: col15 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line43 -// CHECK: col15 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line43 -// CHECK: col23 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth0 -// CHECK: extended_message -// CHECK: Calling 'wrapper' -// CHECK: message -// CHECK: Calling 'wrapper' -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line34 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: depth1 -// CHECK: extended_message -// CHECK: Entered call from 'test_wrapper' -// CHECK: message -// CHECK: Entered call from 'test_wrapper' -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line34 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line34 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line35 -// CHECK: col3 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line35 -// CHECK: col3 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line35 -// CHECK: col3 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line35 -// CHECK: col3 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line35 -// CHECK: col13 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line35 -// CHECK: col23 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line35 -// CHECK: col13 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line35 -// CHECK: col13 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line35 -// CHECK: col23 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth1 -// CHECK: extended_message -// CHECK: Memory is allocated -// CHECK: message -// CHECK: Memory is allocated -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line35 -// CHECK: col13 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line35 -// CHECK: col23 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line37 -// CHECK: col3 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line37 -// CHECK: col3 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line37 -// CHECK: col3 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line37 -// CHECK: col3 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line37 -// CHECK: col7 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line37 -// CHECK: col7 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line37 -// CHECK: col7 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line37 -// CHECK: col7 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line37 -// CHECK: col7 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth1 -// CHECK: extended_message -// CHECK: Assuming 'x' is non-null -// CHECK: message -// CHECK: Assuming 'x' is non-null -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line37 -// CHECK: col7 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line37 -// CHECK: col7 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line38 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line38 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line43 -// CHECK: col15 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line43 -// CHECK: col15 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line43 -// CHECK: col23 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth1 -// CHECK: extended_message -// CHECK: Returned allocated memory -// CHECK: message -// CHECK: Returned allocated memory -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line43 -// CHECK: col15 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line43 -// CHECK: col23 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line45 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line45 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line45 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: depth0 -// CHECK: extended_message -// CHECK: Memory is never released; potential leak of memory pointed to by 'buf' -// CHECK: message -// CHECK: Memory is never released; potential leak of memory pointed to by 'buf' -// CHECK: -// CHECK: -// CHECK: descriptionMemory is never released; potential leak of memory pointed to by 'buf' -// CHECK: categoryMemory Error -// CHECK: typeMemory leak -// CHECK: issue_context_kindfunction -// CHECK: issue_contexttest_wrapper -// CHECK: location -// CHECK: -// CHECK: line45 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: path -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line59 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line59 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line60 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line60 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line60 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line60 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line60 -// CHECK: col28 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth0 -// CHECK: extended_message -// CHECK: Calling 'my_malloc_and_free' -// CHECK: message -// CHECK: Calling 'my_malloc_and_free' -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line52 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: depth1 -// CHECK: extended_message -// CHECK: Entered call from 'test_double_action_call' -// CHECK: message -// CHECK: Entered call from 'test_double_action_call' -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line52 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line52 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line53 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line53 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line53 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line53 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line53 -// CHECK: col10 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line53 -// CHECK: col20 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line53 -// CHECK: col10 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line53 -// CHECK: col10 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line53 -// CHECK: col20 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth1 -// CHECK: extended_message -// CHECK: Memory is allocated -// CHECK: message -// CHECK: Memory is allocated -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line53 -// CHECK: col10 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line53 -// CHECK: col20 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line54 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line54 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line54 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line54 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line55 -// CHECK: col7 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line55 -// CHECK: col7 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line55 -// CHECK: col7 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line55 -// CHECK: col7 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line55 -// CHECK: col17 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth1 -// CHECK: extended_message -// CHECK: Calling 'my_free' -// CHECK: message -// CHECK: Calling 'my_free' -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line49 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: depth2 -// CHECK: extended_message -// CHECK: Entered call from 'my_malloc_and_free' -// CHECK: message -// CHECK: Entered call from 'my_malloc_and_free' -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line49 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line49 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line50 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line50 -// CHECK: col11 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line50 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line50 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line50 -// CHECK: col11 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth2 -// CHECK: extended_message -// CHECK: Memory is released -// CHECK: message -// CHECK: Memory is released -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line55 -// CHECK: col7 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line55 -// CHECK: col7 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line55 -// CHECK: col17 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth2 -// CHECK: extended_message -// CHECK: Returned released memory via 1st parameter -// CHECK: message -// CHECK: Returned released memory via 1st parameter -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line55 -// CHECK: col7 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line55 -// CHECK: col17 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line56 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line56 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line60 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line60 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line60 -// CHECK: col28 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth1 -// CHECK: extended_message -// CHECK: Returned released memory via 1st parameter -// CHECK: message -// CHECK: Returned released memory via 1st parameter -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line60 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line60 -// CHECK: col28 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line61 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line61 -// CHECK: col14 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line61 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line61 -// CHECK: col12 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line61 -// CHECK: col14 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth0 -// CHECK: extended_message -// CHECK: Use of memory after it is freed -// CHECK: message -// CHECK: Use of memory after it is freed -// CHECK: -// CHECK: -// CHECK: descriptionUse of memory after it is freed -// CHECK: categoryMemory Error -// CHECK: typeUse-after-free -// CHECK: issue_context_kindfunction -// CHECK: issue_contexttest_double_action_call -// CHECK: location -// CHECK: -// CHECK: line61 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: path -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line74 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line74 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line74 -// CHECK: col25 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line74 -// CHECK: col35 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line74 -// CHECK: col25 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line74 -// CHECK: col25 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line74 -// CHECK: col35 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth0 -// CHECK: extended_message -// CHECK: Memory is allocated -// CHECK: message -// CHECK: Memory is allocated -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line74 -// CHECK: col25 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line74 -// CHECK: col35 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line75 -// CHECK: col11 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line75 -// CHECK: col11 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line75 -// CHECK: col11 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line75 -// CHECK: col11 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line75 -// CHECK: col25 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth0 -// CHECK: extended_message -// CHECK: Calling 'my_realloc' -// CHECK: message -// CHECK: Calling 'my_realloc' -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line65 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: depth1 -// CHECK: extended_message -// CHECK: Entered call from 'reallocIntra' -// CHECK: message -// CHECK: Entered call from 'reallocIntra' -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line65 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line65 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line66 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line66 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line66 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line66 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line67 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line67 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line67 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line67 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line67 -// CHECK: col18 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line67 -// CHECK: col40 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line67 -// CHECK: col18 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line67 -// CHECK: col18 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line67 -// CHECK: col40 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth1 -// CHECK: extended_message -// CHECK: Attempt to reallocate memory -// CHECK: message -// CHECK: Attempt to reallocate memory -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line67 -// CHECK: col18 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line67 -// CHECK: col40 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line68 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line68 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line68 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line68 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line68 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line68 -// CHECK: col12 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line68 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line68 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line68 -// CHECK: col12 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth1 -// CHECK: extended_message -// CHECK: Assuming 'tmp' is null -// CHECK: message -// CHECK: Assuming 'tmp' is null -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line68 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line68 -// CHECK: col12 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line68 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line68 -// CHECK: col6 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line68 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line68 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line68 -// CHECK: col6 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth1 -// CHECK: extended_message -// CHECK: Reallocation failed -// CHECK: message -// CHECK: Reallocation failed -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line68 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line68 -// CHECK: col6 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line69 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line69 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line75 -// CHECK: col11 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line75 -// CHECK: col11 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line75 -// CHECK: col25 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth1 -// CHECK: extended_message -// CHECK: Reallocation of 1st parameter failed -// CHECK: message -// CHECK: Reallocation of 1st parameter failed -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line75 -// CHECK: col11 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line75 -// CHECK: col25 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line76 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line76 -// CHECK: col13 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line76 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line76 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line76 -// CHECK: col13 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth0 -// CHECK: extended_message -// CHECK: Memory is never released; potential leak of memory pointed to by 'buf' -// CHECK: message -// CHECK: Memory is never released; potential leak of memory pointed to by 'buf' -// CHECK: -// CHECK: -// CHECK: descriptionMemory is never released; potential leak of memory pointed to by 'buf' -// CHECK: categoryMemory Error -// CHECK: typeMemory leak -// CHECK: issue_context_kindfunction -// CHECK: issue_contextreallocIntra -// CHECK: location -// CHECK: -// CHECK: line76 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: path -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line84 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line84 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line85 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line85 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line85 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line85 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line85 -// CHECK: col28 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth0 -// CHECK: extended_message -// CHECK: Calling 'malloc_wrapper_ret' -// CHECK: message -// CHECK: Calling 'malloc_wrapper_ret' -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line80 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: depth1 -// CHECK: extended_message -// CHECK: Entered call from 'use_ret' -// CHECK: message -// CHECK: Entered call from 'use_ret' -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line80 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line80 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line81 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line81 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line81 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line81 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line81 -// CHECK: col19 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line81 -// CHECK: col28 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line81 -// CHECK: col19 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line81 -// CHECK: col19 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line81 -// CHECK: col28 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth1 -// CHECK: extended_message -// CHECK: Memory is allocated -// CHECK: message -// CHECK: Memory is allocated -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line85 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line85 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line85 -// CHECK: col28 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth1 -// CHECK: extended_message -// CHECK: Returned allocated memory -// CHECK: message -// CHECK: Returned allocated memory -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line85 -// CHECK: col9 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line85 -// CHECK: col28 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line86 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line86 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line86 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: depth0 -// CHECK: extended_message -// CHECK: Memory is never released; potential leak of memory pointed to by 'v' -// CHECK: message -// CHECK: Memory is never released; potential leak of memory pointed to by 'v' -// CHECK: -// CHECK: -// CHECK: descriptionMemory is never released; potential leak of memory pointed to by 'v' -// CHECK: categoryMemory Error -// CHECK: typeMemory leak -// CHECK: issue_context_kindfunction -// CHECK: issue_contextuse_ret -// CHECK: location -// CHECK: -// CHECK: line86 -// CHECK: col1 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: path -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line90 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line90 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line92 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line92 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line92 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line92 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line92 -// CHECK: col15 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line92 -// CHECK: col24 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line92 -// CHECK: col15 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line92 -// CHECK: col15 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line92 -// CHECK: col24 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth0 -// CHECK: extended_message -// CHECK: Memory is allocated -// CHECK: message -// CHECK: Memory is allocated -// CHECK: -// CHECK: -// CHECK: kindcontrol -// CHECK: edges -// CHECK: -// CHECK: -// CHECK: start -// CHECK: -// CHECK: -// CHECK: line92 -// CHECK: col15 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line92 -// CHECK: col24 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: end -// CHECK: -// CHECK: -// CHECK: line97 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line97 -// CHECK: col8 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line97 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line97 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line97 -// CHECK: col8 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: depth0 -// CHECK: extended_message -// CHECK: Memory is never released; potential leak of memory pointed to by 'm' -// CHECK: message -// CHECK: Memory is never released; potential leak of memory pointed to by 'm' -// CHECK: -// CHECK: -// CHECK: descriptionMemory is never released; potential leak of memory pointed to by 'm' -// CHECK: categoryMemory Error -// CHECK: typeMemory leak -// CHECK: issue_context_kindfunction -// CHECK: issue_contextLeakedSymbol -// CHECK: location -// CHECK: -// CHECK: line97 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: -// CHECK: +// Tests that exercise running remove dead bindings at Call exit. +static void function_with_leak1() { + char *x = (char*)malloc(12); +} +void use_function_with_leak1() { + function_with_leak1(); + int y = 0; +} + +static void function_with_leak2() { + char *x = (char*)malloc(12); + int m = 0; +} +void use_function_with_leak2() { + function_with_leak2(); +} + +static void function_with_leak3(int y) { + char *x = (char*)malloc(12); + if (y) + y++; +} +void use_function_with_leak3(int y) { + function_with_leak3(y); +} + +static void function_with_leak4(int y) { + char *x = (char*)malloc(12); + if (y) + y++; + else + y--; +} +void use_function_with_leak4(int y) { + function_with_leak4(y); +} + +int anotherFunction5() { + return 5; +} +static int function_with_leak5() { + char *x = (char*)malloc(12); + return anotherFunction5(); +} +void use_function_with_leak5() { + function_with_leak5(); +} + +void anotherFunction6(int m) { + m++; +} +static void function_with_leak6() { + char *x = (char*)malloc(12); + anotherFunction6(3); +} +void use_function_with_leak6() { + function_with_leak6(); +} + +static void empty_function(){ +} +void use_empty_function() { + empty_function(); +} +static char *function_with_leak7() { + return (char*)malloc(12); +} +void use_function_with_leak7() { + function_with_leak7(); +} +//CHECK: +//CHECK: files +//CHECK: +//CHECK: +//CHECK: diagnostics +//CHECK: +//CHECK: +//CHECK: path +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line10 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line10 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line10 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line10 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line10 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line10 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line11 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line11 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line11 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line11 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line11 +//CHECK: col18 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line11 +//CHECK: col27 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line11 +//CHECK: col18 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line11 +//CHECK: col18 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line11 +//CHECK: col27 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Memory is allocated +//CHECK: message +//CHECK: Memory is allocated +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line11 +//CHECK: col18 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line11 +//CHECK: col27 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line14 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line14 +//CHECK: col6 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line14 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line14 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line14 +//CHECK: col6 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Memory is never released; potential leak of memory pointed to by 'p' +//CHECK: message +//CHECK: Memory is never released; potential leak of memory pointed to by 'p' +//CHECK: +//CHECK: +//CHECK: descriptionMemory is never released; potential leak of memory pointed to by 'p' +//CHECK: categoryMemory Error +//CHECK: typeMemory leak +//CHECK: issue_context_kindfunction +//CHECK: issue_contextdiagnosticTest +//CHECK: location +//CHECK: +//CHECK: line14 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: path +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line18 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line18 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line19 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line19 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line19 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line19 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line19 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line19 +//CHECK: col30 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line19 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line19 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line19 +//CHECK: col30 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Memory is allocated +//CHECK: message +//CHECK: Memory is allocated +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line19 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line19 +//CHECK: col30 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line21 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line21 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line21 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Memory is never released; potential leak of memory pointed to by 'A' +//CHECK: message +//CHECK: Memory is never released; potential leak of memory pointed to by 'A' +//CHECK: +//CHECK: +//CHECK: descriptionMemory is never released; potential leak of memory pointed to by 'A' +//CHECK: categoryMemory Error +//CHECK: typeMemory leak +//CHECK: issue_context_kindfunction +//CHECK: issue_contextmyArrayAllocation +//CHECK: location +//CHECK: +//CHECK: line21 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: path +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line24 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line24 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line24 +//CHECK: col18 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line24 +//CHECK: col28 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line24 +//CHECK: col18 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line24 +//CHECK: col18 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line24 +//CHECK: col28 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Memory is allocated +//CHECK: message +//CHECK: Memory is allocated +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line24 +//CHECK: col18 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line24 +//CHECK: col28 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line26 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line26 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line26 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line26 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line26 +//CHECK: col18 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line26 +//CHECK: col40 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line26 +//CHECK: col18 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line26 +//CHECK: col18 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line26 +//CHECK: col40 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Attempt to reallocate memory +//CHECK: message +//CHECK: Attempt to reallocate memory +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line26 +//CHECK: col18 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line26 +//CHECK: col40 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line27 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line27 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line27 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line27 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line27 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line27 +//CHECK: col12 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line27 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line27 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line27 +//CHECK: col12 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Assuming 'tmp' is null +//CHECK: message +//CHECK: Assuming 'tmp' is null +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line27 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line27 +//CHECK: col12 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line27 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line27 +//CHECK: col6 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line27 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line27 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line27 +//CHECK: col6 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Reallocation failed +//CHECK: message +//CHECK: Reallocation failed +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line27 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line27 +//CHECK: col6 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line28 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line28 +//CHECK: col14 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line28 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line28 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line28 +//CHECK: col14 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Memory is never released; potential leak of memory pointed to by 'buf' +//CHECK: message +//CHECK: Memory is never released; potential leak of memory pointed to by 'buf' +//CHECK: +//CHECK: +//CHECK: descriptionMemory is never released; potential leak of memory pointed to by 'buf' +//CHECK: categoryMemory Error +//CHECK: typeMemory leak +//CHECK: issue_context_kindfunction +//CHECK: issue_contextreallocDiagnostics +//CHECK: location +//CHECK: +//CHECK: line28 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: path +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line43 +//CHECK: col3 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line43 +//CHECK: col3 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line43 +//CHECK: col15 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line43 +//CHECK: col15 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line43 +//CHECK: col15 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line43 +//CHECK: col15 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line43 +//CHECK: col23 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Calling 'wrapper' +//CHECK: message +//CHECK: Calling 'wrapper' +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line34 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Entered call from 'test_wrapper' +//CHECK: message +//CHECK: Entered call from 'test_wrapper' +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line34 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line34 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line35 +//CHECK: col3 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line35 +//CHECK: col3 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line35 +//CHECK: col3 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line35 +//CHECK: col3 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line35 +//CHECK: col13 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line35 +//CHECK: col23 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line35 +//CHECK: col13 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line35 +//CHECK: col13 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line35 +//CHECK: col23 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Memory is allocated +//CHECK: message +//CHECK: Memory is allocated +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line35 +//CHECK: col13 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line35 +//CHECK: col23 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line37 +//CHECK: col3 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line37 +//CHECK: col3 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line37 +//CHECK: col3 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line37 +//CHECK: col3 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line37 +//CHECK: col7 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line37 +//CHECK: col7 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line37 +//CHECK: col7 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line37 +//CHECK: col7 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line37 +//CHECK: col7 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Assuming 'x' is non-null +//CHECK: message +//CHECK: Assuming 'x' is non-null +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line37 +//CHECK: col7 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line37 +//CHECK: col7 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line38 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line38 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line43 +//CHECK: col15 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line43 +//CHECK: col15 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line43 +//CHECK: col23 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Returned allocated memory +//CHECK: message +//CHECK: Returned allocated memory +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line43 +//CHECK: col15 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line43 +//CHECK: col23 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line45 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line45 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line45 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Memory is never released; potential leak of memory pointed to by 'buf' +//CHECK: message +//CHECK: Memory is never released; potential leak of memory pointed to by 'buf' +//CHECK: +//CHECK: +//CHECK: descriptionMemory is never released; potential leak of memory pointed to by 'buf' +//CHECK: categoryMemory Error +//CHECK: typeMemory leak +//CHECK: issue_context_kindfunction +//CHECK: issue_contexttest_wrapper +//CHECK: location +//CHECK: +//CHECK: line45 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: path +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line59 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line59 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line60 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line60 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line60 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line60 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line60 +//CHECK: col28 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Calling 'my_malloc_and_free' +//CHECK: message +//CHECK: Calling 'my_malloc_and_free' +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line52 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Entered call from 'test_double_action_call' +//CHECK: message +//CHECK: Entered call from 'test_double_action_call' +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line52 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line52 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line53 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line53 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line53 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line53 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line53 +//CHECK: col10 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line53 +//CHECK: col20 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line53 +//CHECK: col10 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line53 +//CHECK: col10 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line53 +//CHECK: col20 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Memory is allocated +//CHECK: message +//CHECK: Memory is allocated +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line53 +//CHECK: col10 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line53 +//CHECK: col20 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line54 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line54 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line54 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line54 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line55 +//CHECK: col7 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line55 +//CHECK: col7 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line55 +//CHECK: col7 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line55 +//CHECK: col7 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line55 +//CHECK: col17 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Calling 'my_free' +//CHECK: message +//CHECK: Calling 'my_free' +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line49 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: depth2 +//CHECK: extended_message +//CHECK: Entered call from 'my_malloc_and_free' +//CHECK: message +//CHECK: Entered call from 'my_malloc_and_free' +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line49 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line49 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line50 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line50 +//CHECK: col11 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line50 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line50 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line50 +//CHECK: col11 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth2 +//CHECK: extended_message +//CHECK: Memory is released +//CHECK: message +//CHECK: Memory is released +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line55 +//CHECK: col7 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line55 +//CHECK: col7 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line55 +//CHECK: col17 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth2 +//CHECK: extended_message +//CHECK: Returned released memory via 1st parameter +//CHECK: message +//CHECK: Returned released memory via 1st parameter +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line55 +//CHECK: col7 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line55 +//CHECK: col17 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line56 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line56 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line60 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line60 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line60 +//CHECK: col28 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Returned released memory via 1st parameter +//CHECK: message +//CHECK: Returned released memory via 1st parameter +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line60 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line60 +//CHECK: col28 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line61 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line61 +//CHECK: col14 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line61 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line61 +//CHECK: col12 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line61 +//CHECK: col14 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Use of memory after it is freed +//CHECK: message +//CHECK: Use of memory after it is freed +//CHECK: +//CHECK: +//CHECK: descriptionUse of memory after it is freed +//CHECK: categoryMemory Error +//CHECK: typeUse-after-free +//CHECK: issue_context_kindfunction +//CHECK: issue_contexttest_double_action_call +//CHECK: location +//CHECK: +//CHECK: line61 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: path +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line74 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line74 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line74 +//CHECK: col25 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line74 +//CHECK: col35 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line74 +//CHECK: col25 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line74 +//CHECK: col25 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line74 +//CHECK: col35 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Memory is allocated +//CHECK: message +//CHECK: Memory is allocated +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line74 +//CHECK: col25 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line74 +//CHECK: col35 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line75 +//CHECK: col11 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line75 +//CHECK: col11 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line75 +//CHECK: col11 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line75 +//CHECK: col11 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line75 +//CHECK: col25 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Calling 'my_realloc' +//CHECK: message +//CHECK: Calling 'my_realloc' +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line65 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Entered call from 'reallocIntra' +//CHECK: message +//CHECK: Entered call from 'reallocIntra' +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line65 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line65 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line66 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line66 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line66 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line66 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line67 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line67 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line67 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line67 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line67 +//CHECK: col18 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line67 +//CHECK: col40 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line67 +//CHECK: col18 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line67 +//CHECK: col18 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line67 +//CHECK: col40 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Attempt to reallocate memory +//CHECK: message +//CHECK: Attempt to reallocate memory +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line67 +//CHECK: col18 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line67 +//CHECK: col40 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line68 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line68 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line68 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line68 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line68 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line68 +//CHECK: col12 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line68 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line68 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line68 +//CHECK: col12 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Assuming 'tmp' is null +//CHECK: message +//CHECK: Assuming 'tmp' is null +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line68 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line68 +//CHECK: col12 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line68 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line68 +//CHECK: col6 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line68 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line68 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line68 +//CHECK: col6 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Reallocation failed +//CHECK: message +//CHECK: Reallocation failed +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line68 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line68 +//CHECK: col6 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line69 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line69 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line75 +//CHECK: col11 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line75 +//CHECK: col11 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line75 +//CHECK: col25 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Reallocation of 1st parameter failed +//CHECK: message +//CHECK: Reallocation of 1st parameter failed +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line75 +//CHECK: col11 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line75 +//CHECK: col25 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line76 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line76 +//CHECK: col13 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line76 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line76 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line76 +//CHECK: col13 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Memory is never released; potential leak of memory pointed to by 'buf' +//CHECK: message +//CHECK: Memory is never released; potential leak of memory pointed to by 'buf' +//CHECK: +//CHECK: +//CHECK: descriptionMemory is never released; potential leak of memory pointed to by 'buf' +//CHECK: categoryMemory Error +//CHECK: typeMemory leak +//CHECK: issue_context_kindfunction +//CHECK: issue_contextreallocIntra +//CHECK: location +//CHECK: +//CHECK: line76 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: path +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line84 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line84 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line85 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line85 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line85 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line85 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line85 +//CHECK: col28 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Calling 'malloc_wrapper_ret' +//CHECK: message +//CHECK: Calling 'malloc_wrapper_ret' +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line80 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Entered call from 'use_ret' +//CHECK: message +//CHECK: Entered call from 'use_ret' +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line80 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line80 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line81 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line81 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line81 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line81 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line81 +//CHECK: col19 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line81 +//CHECK: col28 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line81 +//CHECK: col19 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line81 +//CHECK: col19 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line81 +//CHECK: col28 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Memory is allocated +//CHECK: message +//CHECK: Memory is allocated +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line85 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line85 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line85 +//CHECK: col28 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Returned allocated memory +//CHECK: message +//CHECK: Returned allocated memory +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line85 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line85 +//CHECK: col28 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line86 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line86 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line86 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Memory is never released; potential leak of memory pointed to by 'v' +//CHECK: message +//CHECK: Memory is never released; potential leak of memory pointed to by 'v' +//CHECK: +//CHECK: +//CHECK: descriptionMemory is never released; potential leak of memory pointed to by 'v' +//CHECK: categoryMemory Error +//CHECK: typeMemory leak +//CHECK: issue_context_kindfunction +//CHECK: issue_contextuse_ret +//CHECK: location +//CHECK: +//CHECK: line86 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: path +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line90 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line90 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line92 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line92 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line92 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line92 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line92 +//CHECK: col15 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line92 +//CHECK: col24 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line92 +//CHECK: col15 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line92 +//CHECK: col15 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line92 +//CHECK: col24 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Memory is allocated +//CHECK: message +//CHECK: Memory is allocated +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line92 +//CHECK: col15 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line92 +//CHECK: col24 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line97 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line97 +//CHECK: col8 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line97 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line97 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line97 +//CHECK: col8 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Memory is never released; potential leak of memory pointed to by 'm' +//CHECK: message +//CHECK: Memory is never released; potential leak of memory pointed to by 'm' +//CHECK: +//CHECK: +//CHECK: descriptionMemory is never released; potential leak of memory pointed to by 'm' +//CHECK: categoryMemory Error +//CHECK: typeMemory leak +//CHECK: issue_context_kindfunction +//CHECK: issue_contextLeakedSymbol +//CHECK: location +//CHECK: +//CHECK: line97 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: path +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line105 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line105 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line105 +//CHECK: col25 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Calling 'function_with_leak1' +//CHECK: message +//CHECK: Calling 'function_with_leak1' +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line101 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Entered call from 'use_function_with_leak1' +//CHECK: message +//CHECK: Entered call from 'use_function_with_leak1' +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line101 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line101 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line102 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line102 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line102 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line102 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line102 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line102 +//CHECK: col31 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line102 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line102 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line102 +//CHECK: col31 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Memory is allocated +//CHECK: message +//CHECK: Memory is allocated +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line102 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line102 +//CHECK: col31 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line102 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line102 +//CHECK: col11 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line102 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line102 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line102 +//CHECK: col11 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Memory is never released; potential leak of memory pointed to by 'x' +//CHECK: message +//CHECK: Memory is never released; potential leak of memory pointed to by 'x' +//CHECK: +//CHECK: +//CHECK: descriptionMemory is never released; potential leak of memory pointed to by 'x' +//CHECK: categoryMemory Error +//CHECK: typeMemory leak +//CHECK: issue_context_kindfunction +//CHECK: issue_contextfunction_with_leak1 +//CHECK: location +//CHECK: +//CHECK: line102 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: path +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line114 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line114 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line114 +//CHECK: col25 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Calling 'function_with_leak2' +//CHECK: message +//CHECK: Calling 'function_with_leak2' +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line109 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Entered call from 'use_function_with_leak2' +//CHECK: message +//CHECK: Entered call from 'use_function_with_leak2' +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line109 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line109 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line110 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line110 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line110 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line110 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line110 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line110 +//CHECK: col31 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line110 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line110 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line110 +//CHECK: col31 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Memory is allocated +//CHECK: message +//CHECK: Memory is allocated +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line110 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line110 +//CHECK: col31 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line111 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line111 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line111 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line111 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line111 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Memory is never released; potential leak of memory pointed to by 'x' +//CHECK: message +//CHECK: Memory is never released; potential leak of memory pointed to by 'x' +//CHECK: +//CHECK: +//CHECK: descriptionMemory is never released; potential leak of memory pointed to by 'x' +//CHECK: categoryMemory Error +//CHECK: typeMemory leak +//CHECK: issue_context_kindfunction +//CHECK: issue_contextfunction_with_leak2 +//CHECK: location +//CHECK: +//CHECK: line111 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: path +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line123 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line123 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line123 +//CHECK: col26 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Calling 'function_with_leak3' +//CHECK: message +//CHECK: Calling 'function_with_leak3' +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line117 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Entered call from 'use_function_with_leak3' +//CHECK: message +//CHECK: Entered call from 'use_function_with_leak3' +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line117 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line117 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line118 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line118 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line118 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line118 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line118 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line118 +//CHECK: col31 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line118 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line118 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line118 +//CHECK: col31 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Memory is allocated +//CHECK: message +//CHECK: Memory is allocated +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line118 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line118 +//CHECK: col31 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line119 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line119 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line119 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line119 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line119 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line119 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line119 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line119 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line120 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line120 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line120 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line120 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line120 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Memory is never released; potential leak of memory pointed to by 'x' +//CHECK: message +//CHECK: Memory is never released; potential leak of memory pointed to by 'x' +//CHECK: +//CHECK: +//CHECK: descriptionMemory is never released; potential leak of memory pointed to by 'x' +//CHECK: categoryMemory Error +//CHECK: typeMemory leak +//CHECK: issue_context_kindfunction +//CHECK: issue_contextfunction_with_leak3 +//CHECK: location +//CHECK: +//CHECK: line120 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: path +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line134 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line134 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line134 +//CHECK: col26 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Calling 'function_with_leak4' +//CHECK: message +//CHECK: Calling 'function_with_leak4' +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line126 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Entered call from 'use_function_with_leak4' +//CHECK: message +//CHECK: Entered call from 'use_function_with_leak4' +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line126 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line126 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line127 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line127 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line127 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line127 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line127 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line127 +//CHECK: col31 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line127 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line127 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line127 +//CHECK: col31 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Memory is allocated +//CHECK: message +//CHECK: Memory is allocated +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line127 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line127 +//CHECK: col31 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line128 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line128 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line128 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line128 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line128 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line128 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line128 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line128 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line131 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line131 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line131 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line131 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line131 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Memory is never released; potential leak of memory pointed to by 'x' +//CHECK: message +//CHECK: Memory is never released; potential leak of memory pointed to by 'x' +//CHECK: +//CHECK: +//CHECK: descriptionMemory is never released; potential leak of memory pointed to by 'x' +//CHECK: categoryMemory Error +//CHECK: typeMemory leak +//CHECK: issue_context_kindfunction +//CHECK: issue_contextfunction_with_leak4 +//CHECK: location +//CHECK: +//CHECK: line131 +//CHECK: col9 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: path +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line145 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line145 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line145 +//CHECK: col25 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Calling 'function_with_leak5' +//CHECK: message +//CHECK: Calling 'function_with_leak5' +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line140 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Entered call from 'use_function_with_leak5' +//CHECK: message +//CHECK: Entered call from 'use_function_with_leak5' +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line140 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line140 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line141 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line141 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line141 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line141 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line141 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line141 +//CHECK: col31 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line141 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line141 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line141 +//CHECK: col31 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Memory is allocated +//CHECK: message +//CHECK: Memory is allocated +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line141 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line141 +//CHECK: col31 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line142 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line142 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line142 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line142 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line142 +//CHECK: col12 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line142 +//CHECK: col29 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line142 +//CHECK: col12 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line142 +//CHECK: col12 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line142 +//CHECK: col29 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Memory is never released; potential leak of memory pointed to by 'x' +//CHECK: message +//CHECK: Memory is never released; potential leak of memory pointed to by 'x' +//CHECK: +//CHECK: +//CHECK: descriptionMemory is never released; potential leak of memory pointed to by 'x' +//CHECK: categoryMemory Error +//CHECK: typeMemory leak +//CHECK: issue_context_kindfunction +//CHECK: issue_contextfunction_with_leak5 +//CHECK: location +//CHECK: +//CHECK: line142 +//CHECK: col12 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: path +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line156 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line156 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line156 +//CHECK: col25 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Calling 'function_with_leak6' +//CHECK: message +//CHECK: Calling 'function_with_leak6' +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line151 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Entered call from 'use_function_with_leak6' +//CHECK: message +//CHECK: Entered call from 'use_function_with_leak6' +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line151 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line151 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line152 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line152 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line152 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line152 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line152 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line152 +//CHECK: col31 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line152 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line152 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line152 +//CHECK: col31 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Memory is allocated +//CHECK: message +//CHECK: Memory is allocated +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line152 +//CHECK: col22 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line152 +//CHECK: col31 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line153 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line153 +//CHECK: col23 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line153 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line153 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line153 +//CHECK: col23 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Memory is never released; potential leak of memory pointed to by 'x' +//CHECK: message +//CHECK: Memory is never released; potential leak of memory pointed to by 'x' +//CHECK: +//CHECK: +//CHECK: descriptionMemory is never released; potential leak of memory pointed to by 'x' +//CHECK: categoryMemory Error +//CHECK: typeMemory leak +//CHECK: issue_context_kindfunction +//CHECK: issue_contextfunction_with_leak6 +//CHECK: location +//CHECK: +//CHECK: line153 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: path +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line168 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line168 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line168 +//CHECK: col25 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Calling 'function_with_leak7' +//CHECK: message +//CHECK: Calling 'function_with_leak7' +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line164 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Entered call from 'use_function_with_leak7' +//CHECK: message +//CHECK: Entered call from 'use_function_with_leak7' +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line164 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line164 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line165 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line165 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line165 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line165 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line165 +//CHECK: col19 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line165 +//CHECK: col28 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line165 +//CHECK: col19 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line165 +//CHECK: col19 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line165 +//CHECK: col28 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Memory is allocated +//CHECK: message +//CHECK: Memory is allocated +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line168 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: ranges +//CHECK: +//CHECK: +//CHECK: +//CHECK: line168 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line168 +//CHECK: col25 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: depth1 +//CHECK: extended_message +//CHECK: Returned allocated memory +//CHECK: message +//CHECK: Returned allocated memory +//CHECK: +//CHECK: +//CHECK: kindcontrol +//CHECK: edges +//CHECK: +//CHECK: +//CHECK: start +//CHECK: +//CHECK: +//CHECK: line168 +//CHECK: col5 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line168 +//CHECK: col25 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: end +//CHECK: +//CHECK: +//CHECK: line169 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: line169 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: kindevent +//CHECK: location +//CHECK: +//CHECK: line169 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: depth0 +//CHECK: extended_message +//CHECK: Memory is never released; potential leak +//CHECK: message +//CHECK: Memory is never released; potential leak +//CHECK: +//CHECK: +//CHECK: descriptionMemory is never released; potential leak +//CHECK: categoryMemory Error +//CHECK: typeMemory leak +//CHECK: issue_context_kindfunction +//CHECK: issue_contextuse_function_with_leak7 +//CHECK: location +//CHECK: +//CHECK: line169 +//CHECK: col1 +//CHECK: file0 +//CHECK: +//CHECK: +//CHECK: +//CHECK: +//CHECK: -- 2.40.0