diff --git a/modules/base/pymod/export_logger.cc b/modules/base/pymod/export_logger.cc
index 8c00f377d984a0b085e0cd2e20aa75ef7ed293b3..7f29c16e51a935b65b395dfad2ed083c8a7c6da5 100644
--- a/modules/base/pymod/export_logger.cc
+++ b/modules/base/pymod/export_logger.cc
@@ -116,6 +116,8 @@ void export_Logger()
   // the sink stack, we will get "Fatal Python error: PyEval_SaveThread: 
   // NULL tstate" upon exiting ost. I don't completely understand why, though.
   scope().attr("__dict__")["atexit"]=import("atexit");
+
   def("_reset_sinks", &reset_sinks);
-  exec("atexit.register(_reset_sinks)", scope().attr("__dict__"));
+  object r=scope().attr("_reset_sinks");
+  scope().attr("atexit").attr("register")(r);
 }