diff --git a/product/CMFActivity/ActivityTool.py b/product/CMFActivity/ActivityTool.py
index 32b69c20265b9c4d05ab9cb7c0b0ccfc49ac2138..c3ce696998b3587c53c0d64dca75bc813491de7c 100644
--- a/product/CMFActivity/ActivityTool.py
+++ b/product/CMFActivity/ActivityTool.py
@@ -353,17 +353,21 @@ Exception: %s %s
     if is_executed != MESSAGE_EXECUTED:
       if exc_info is None:
         exc_info = sys.exc_info()
-      if extract_stack is not None and exc_info == (None, None, None):
-        exc_info = (None, None, extract_stack())
       if log:
         LOG('ActivityTool', WARNING, 'Could not call method %s on object %s. Activity created at:\n%s' % (self.method_id, self.object_path, self.call_traceback), error=exc_info)
         # push the error in ZODB error_log
         error_log = getattr(context, 'error_log', None)
         if error_log is not None:
           error_log.raising(exc_info)
+      if exc_info == (None, None, None):
+        if format_list is not None:
+          self.traceback = ''.join(format_list(extract_stack()[:-1]))
+        else:
+          self.traceback = ''
+      else:
+        self.traceback = ''.join(ExceptionFormatter.format_exception(*exc_info))
       self.exc_type = exc_info[0]
       self.exc_value = str(exc_info[1])
-      self.traceback = ''.join(ExceptionFormatter.format_exception(*exc_info))
 
   def getExecutionState(self):
     return self.is_executed