X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=lttv%2Flttv%2Fsync%2Fevent_analysis_eval.c;h=0c8e0497abafdd42f8de9aa23d97f8cd3e649fe6;hb=6ce8ceacae04955f2ccaf93f14c086b72bc14f09;hp=3c3f8636398ec5ddb657a80665aa758d1a57bbfe;hpb=48b641c1f6320eca569b2894f253d9d815250d45;p=lttv.git diff --git a/lttv/lttv/sync/event_analysis_eval.c b/lttv/lttv/sync/event_analysis_eval.c index 3c3f8636..0c8e0497 100644 --- a/lttv/lttv/sync/event_analysis_eval.c +++ b/lttv/lttv/sync/event_analysis_eval.c @@ -584,7 +584,7 @@ static void destroyAnalysisEval(SyncState* const syncState) for (j= 0; j < i; j++) { // There seems to be a memory leak in glpk, valgrind reports a - // loss even if the problem is deleted + // loss (reachable) even if the problem is deleted glp_delete_prob(graphs->lps[i][j]); } free(graphs->lps[i]); @@ -1741,20 +1741,23 @@ static void finalizeAnalysisEvalLP(SyncState* const syncState) unsigned int i, j; AnalysisDataEval* analysisData= syncState->analysisData; AnalysisDataCHull* chAnalysisData= analysisData->chullSS->analysisData; - FactorsCHull** lpFactorsArray= createAllFactors(syncState->traceNb); - FactorsCHull* lpFactors; + FactorsCHull** lpFactorsArray; if (!syncState->stats && !syncState->graphsStream) { return; } + /* Because of matching_distributor, this analysis may be called twice. + * Only run it once */ if ((syncState->graphsStream && analysisData->graphs->lps != NULL) || (syncState->stats && analysisData->stats->chFactorsArray != NULL)) { return; } + lpFactorsArray= createAllFactors(syncState->traceNb); + if (syncState->stats) { analysisData->stats->chFactorsArray= @@ -1794,7 +1797,6 @@ static void finalizeAnalysisEvalLP(SyncState* const syncState) else { glp_delete_prob(lp); - destroyFactorsCHull(lpFactors); } } }