diff options
Diffstat (limited to 'mono/metadata/sgen-gc.c')
-rw-r--r-- | mono/metadata/sgen-gc.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/mono/metadata/sgen-gc.c b/mono/metadata/sgen-gc.c index 8ce0994b507..e209329eaea 100644 --- a/mono/metadata/sgen-gc.c +++ b/mono/metadata/sgen-gc.c @@ -4080,6 +4080,7 @@ sgen_thread_register (SgenThreadInfo* info, void *addr) binary_protocol_thread_register ((gpointer)mono_thread_info_get_tid (info)); + // FIXME: Unift with mono_thread_get_stack_bounds () /* try to get it with attributes first */ #if (defined(HAVE_PTHREAD_GETATTR_NP) || defined(HAVE_PTHREAD_ATTR_GET_NP)) && defined(HAVE_PTHREAD_ATTR_GETSTACK) { @@ -4104,8 +4105,14 @@ sgen_thread_register (SgenThreadInfo* info, void *addr) pthread_attr_destroy (&attr); } #elif defined(HAVE_PTHREAD_GET_STACKSIZE_NP) && defined(HAVE_PTHREAD_GET_STACKADDR_NP) - info->stack_end = (char*)pthread_get_stackaddr_np (pthread_self ()); - info->stack_start_limit = (char*)info->stack_end - pthread_get_stacksize_np (pthread_self ()); + { + size_t stsize = 0; + guint8 *staddr = NULL; + + mono_thread_get_stack_bounds (&staddr, &stsize); + info->stack_start_limit = staddr; + info->stack_end = staddr + stsize; + } #else { /* FIXME: we assume the stack grows down */ |