[Mono-bugs] [Bug 537764] Mono crashes on OS X Snow Leopard
bugzilla_noreply at novell.com
bugzilla_noreply at novell.com
Sun Sep 27 05:02:21 EDT 2009
http://bugzilla.novell.com/show_bug.cgi?id=537764
User mahegdels at telenet.be added comment
http://bugzilla.novell.com/show_bug.cgi?id=537764#c8
--- Comment #8 from Sledge Ham <mahegdels at telenet.be> 2009-09-27 03:02:18 MDT ---
I created the following work around:
macbook-pro-van-admin-3:~ kenny$ diff -w mono-2.4.2.3/libgc/darwin_stop_world.c
orig/mono-2.4.2.3/libgc/darwin_stop_world.c
105,119d104
< if(r != KERN_SUCCESS) {
< mach_port_urefs_t refs=0;
< kern_return_t r=mach_port_get_refs(mach_task_self(),
p->stop_info.mach_thread, MACH_PORT_RIGHT_DEAD_NAME, &refs);
<
< if (r != KERN_SUCCESS) ABORT("Could not query thread_refs");
< if (refs == 0) ABORT("this is not a deadname");
<
< printf("We will be cleaning dead thread %p\n",
p->stop_info.mach_thread);
<
< r = mach_port_deallocate(mach_task_self(), p->stop_info.mach_thread);
< if (r != KERN_SUCCESS) ABORT("Could not deallocate thread");
<
< p -> flags |= FINISHED; //This might be a minor memory leak
< continue;
< }
Apparently snow leopard 6 creates an additional thread which is
killed/terminated in such a way that it does not execute the exit functions as
required by mono.
This patch will mark the entry in the GC_Threads table as finished so it never
is referenced anymore.
There is a small memory leak as this entry is never cleaned from the GC_Threads
table. In the application I use there is only one instance of a lost thread so
it should be a minor issue.
Could this patch be validated on other environments?
--
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
More information about the mono-bugs
mailing list