diff --git a/Common/GmshGlobal.cpp b/Common/GmshGlobal.cpp
index 99967fa10e701251d8728d671715c65dedbc5e7a..06cf1f6a46336f97e371429d83284649df8f3d8d 100644
--- a/Common/GmshGlobal.cpp
+++ b/Common/GmshGlobal.cpp
@@ -24,6 +24,7 @@ typedef unsigned long intptr_t;
 #include "OS.h"
 #include "Context.h"
 #include "robustPredicates.h"
+#include "BasisFactory.h"
 
 #if defined(HAVE_PARSER)
 #include "Parser.h"
@@ -247,6 +248,9 @@ int GmshFinalize()
   PViewData::removeAllInterpolationSchemes();
 #endif
 
+  // Delete static interpolation bases
+  BasisFactory::clearAll();
+
   // Delete all Gmodels
   while(GModel::list.size() > 0) delete GModel::list[GModel::list.size() - 1];
   std::vector<GModel *>().swap(GModel::list);