Changeset: 0ce585606d54 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0ce585606d54
Modified Files:
        clients/Tests/exports.stable.out
        monetdb5/mal/mal.c
        monetdb5/mal/mal_namespace.c
        monetdb5/optimizer/opt_pipes.c
        monetdb5/optimizer/opt_pipes.h
Branch: Jul2017
Log Message:

Fixed memory leaks while shuting down the database


diffs (78 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -1959,6 +1959,7 @@ void chkFlow(stream *out, MalBlkPtr mb);
 int chkInstruction(stream *out, Module s, MalBlkPtr mb, InstrPtr p);
 void chkProgram(stream *out, Module s, MalBlkPtr mb);
 void chkTypes(stream *out, Module s, MalBlkPtr mb, int silent);
+void cleanOptimizerPipe(void);
 str cleanupTraces(void);
 void clearStack(MalStkPtr s);
 void clearTrace(void);
diff --git a/monetdb5/mal/mal.c b/monetdb5/mal/mal.c
--- a/monetdb5/mal/mal.c
+++ b/monetdb5/mal/mal.c
@@ -35,6 +35,7 @@ int have_hge;
 #include "mal_private.h"
 #include "mal_runtime.h"
 #include "mal_resource.h"
+#include "opt_pipes.h"
 
 MT_Lock     mal_contextLock MT_LOCK_INITIALIZER("mal_contextLock");
 MT_Lock     mal_namespaceLock MT_LOCK_INITIALIZER("mal_namespaceLock");
@@ -156,14 +157,14 @@ void mserver_reset(int exit)
        mal_resource_reset();
        mal_runtime_reset();
        mal_module_reset();
+       mal_namespace_reset();
        mdbExit();
+       cleanOptimizerPipe();
 
        memset((char*)monet_cwd,0, sizeof(monet_cwd));
        monet_memory = 0;
        memset((char*)monet_characteristics,0, sizeof(monet_characteristics));
        mal_trace = 0;
-       /* No need to clean up the namespace, it will simply be extended
-        * upon restart mal_namespace_reset(); */
        GDKreset(0, exit);      // terminate all other threads
 }
 
diff --git a/monetdb5/mal/mal_namespace.c b/monetdb5/mal/mal_namespace.c
--- a/monetdb5/mal/mal_namespace.c
+++ b/monetdb5/mal/mal_namespace.c
@@ -49,6 +49,7 @@ static struct namespace {
 } *namespace;
 
 void initNamespace(void) {
+       namespace = NULL;
 }
 
 void mal_namespace_reset(void) {
diff --git a/monetdb5/optimizer/opt_pipes.c b/monetdb5/optimizer/opt_pipes.c
--- a/monetdb5/optimizer/opt_pipes.c
+++ b/monetdb5/optimizer/opt_pipes.c
@@ -514,3 +514,14 @@ addOptimizerPipe(Client cntxt, MalBlkPtr
        }
        return msg;
 }
+
+void
+cleanOptimizerPipe(void) {
+       int j;
+       for (j = 0; j < MAXOPTPIPES && pipes[j].def; j++) {
+               if (pipes[j].mb) {
+                       freeMalBlk(pipes[j].mb);
+                       pipes[j].mb = NULL;
+               }
+       }
+}
diff --git a/monetdb5/optimizer/opt_pipes.h b/monetdb5/optimizer/opt_pipes.h
--- a/monetdb5/optimizer/opt_pipes.h
+++ b/monetdb5/optimizer/opt_pipes.h
@@ -17,5 +17,6 @@ mal_export str addPipeDefinition(Client 
 mal_export int isOptimizerPipe(str name);
 mal_export str addOptimizerPipe(Client cntxt, MalBlkPtr mb, str name);
 mal_export str compileOptimizer(Client cntxt, str name);
+mal_export void cleanOptimizerPipe(void);
 
 #endif
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to