HANDLE thread_handle;
MonoNativeThreadId tid;
gboolean ret;
+ gsize stack_set_size;
if (start_delegate)
g_assert (!start_func && !start_func_arg);
mono_coop_sem_init (&start_info->registered, 0);
if (stack_size == 0)
- stack_size = default_stacksize_for_thread (internal);
+ stack_set_size = default_stacksize_for_thread (internal);
+ else
+ stack_set_size = 0;
- thread_handle = mono_threads_create_thread (start_wrapper, start_info, stack_size, &tid);
+ thread_handle = mono_threads_create_thread (start_wrapper, start_info, &stack_set_size, &tid);
if (thread_handle == NULL) {
/* The thread couldn't be created, so set an exception */
goto done;
}
+ internal->stack_size = (int) stack_set_size;
+
THREAD_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") Launching thread %p (%"G_GSIZE_FORMAT")", __func__, mono_native_thread_id_get (), internal, (gsize)internal->tid));
/*
if (thread != pthread_self ()) {
MONO_ENTER_GC_SAFE;
/* This shouldn't block */
- pthread_join (thread, NULL);
+ mono_native_thread_join (thread);
MONO_EXIT_GC_SAFE;
}
} else {
return;
thread = (pthread_t)tid;
MONO_ENTER_GC_SAFE;
- pthread_join (thread, NULL);
+ mono_native_thread_join (thread);
MONO_EXIT_GC_SAFE;
#endif
}