[Mono-list] Patch for GC_stop_world bug in Android apps

Koushik Dutta koush at koushikdutta.com
Fri Oct 1 12:31:09 EDT 2010


I submit this patch under the terms of the MIT/X11 license

On Fri, Oct 1, 2010 at 7:12 AM, Geoff Norton <gnorton at novell.com> wrote:

> Koush,
>
>   Nice, can you please confirm on the list that you're willing to
> contribute this patch under the terms of the MIT/X11 license?
>
> Thanks
>
> -g
>
> On 2010-09-30, at 12:26 AM, Koushik Dutta wrote:
>
> Here is the fix for the following bug:
> https://bugzilla.novell.com/show_bug.cgi?id=633454
>
> The underlying problem is there is a bug in Android's libc, where after a
> process forks, the kernel id of the forked thread is not changed to reflect
> the new child thread. The pthread kernel id still points to the kernel id of
> the parent process: zygote.
>
> This bug breaks all multithread monodroid apps (as well as my mono on
> Android port), as Garbage Collection fails and the process hangs.
>
> The fix/workaround for the bug in Android is as follows:
> The GC_Thread structure on Android has a new "kernel_id" member. When
> GC_new_thread is called, the kernel id is also retrieved and stored with
> gettid. When the world needs to be stopped/started, a new function
> android_thread_kill is called, which is a reimplementation of Android's
> pthread_kill. Instead, which takes the correct kernel id, rather than the
> potentially hosed pthread.
>
> I have attached a patch file, as well as committed to my fork of mono on
> Github:
>
> http://github.com/koush/mono/commit/414aff5598a2dea618741bea714fa8dd1baf0d52
>
>
> <pthread_android.patch>_______________________________________________
> Mono-list maillist  -  Mono-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-list/attachments/20101001/ba30ac55/attachment.html 


More information about the Mono-list mailing list