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