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: android-kernel+unsubscr...@googlegroups.com website: http://groups.google.com/group/android-kernel