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  -  [email protected]
> http://lists.ximian.com/mailman/listinfo/mono-list

_______________________________________________
Mono-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to