diff --git a/src/threads.c b/src/threads.c
index 03e3aee60b26afed0243741feddcd9ef5be4ba61..62666f15a866515b935de44e3daaa58b39312674 100644
--- a/src/threads.c
+++ b/src/threads.c
@@ -35,11 +35,12 @@ void *new_thread_func(void * data)
 
   if(SETJMP(back))
   {
-    exit_on_error="Error in handle_error in master object!\nPrevious error:";
+    ONERROR tmp;
+    SET_ONERROR(tmp,exit_on_error,"Error in handle_error in master object!");
     assign_svalue_no_free(sp++, & throw_value);
     APPLY_MASTER("handle_error", 1);
     pop_stack();
-    automatic_fatal=0;
+    UNSET_ONERROR(tmp);
   } else {
     push_array_items(arg.args);
     arg.args=0;