http://bugzilla.novell.com/show_bug.cgi?id=537764
User [email protected] added comment http://bugzilla.novell.com/show_bug.cgi?id=537764#c8 --- Comment #8 from Sledge Ham <[email protected]> 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. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
