common: introduce userMalloc() and userFree()
[model-checker.git] / threads.cc
index 7d4d22e7aafc68c2cf9e4332e9fceff7465ead46..a4ea252a2342e072385e10773a11008392eb1990 100644 (file)
 
 static void * stack_allocate(size_t size)
 {
-       return malloc(size);
+       return userMalloc(size);
 }
 
 static void stack_free(void *stack)
 {
-       free(stack);
+       userFree(stack);
 }
 
 Thread * thread_current(void)
@@ -58,7 +58,8 @@ void Thread::complete()
        if (state != THREAD_COMPLETED) {
                DEBUG("completed thread %d\n", get_id());
                state = THREAD_COMPLETED;
-               stack_free(stack);
+               if (stack)
+                       stack_free(stack);
        }
 }
 
@@ -85,10 +86,11 @@ Thread::Thread(thrd_t *t) {
        start_routine = NULL;
        arg = NULL;
 
+       create_context();
+       stack = NULL;
        state = THREAD_CREATED;
        id = model->get_next_id();
        *user_thread = id;
-       create_context();
        model->add_system_thread(this);
 }
 
@@ -156,8 +158,6 @@ int main()
 
                /* Wait for all threads to complete */
                thread_wait_finish();
-
-               model->print_trace();
        } while (model->next_execution());
 
        delete th;