Hello all, In recent kernels we encountered very mysterious binder related crashes, and only on a particular board port on powerpc.
The symptoms were a backtrace from a WARN at kernel/workqueue.c
flush_cpu_workqueue and afterwards the system hanged with a flurry of
binder: 1903: binder_alloc_buf, no vma
binder: 2084:2084 transaction failed 536900113, size60-0
messages.
It turns out the reason is that the deffered path was executed
from a workqueue context, and called files_put.
files_put would call recursively flush the workqueue, and we
ended up recursively at flush_cpu_workqueue.
That workqueue got blocked and soon after we crashed.
There is a patch pending in linux testing that detects the recursion but
the backtrace still remains, and it's problematic.
We fixed it, by creating a binder kthread that handles the deferred
operations.
We include a reworked patch against the top of the android mainline kernel.
Hope this helps anyone encountering the same problem, like anil with the eclair porting problem: (Subject eclair-porting-problem) Regards -- Pantelis
binder-android-mainline.patch
Description: Binary data
-- unsubscribe: [email protected] website: http://groups.google.com/group/android-kernel
