I've realized now that the binder system is aware of thread and process ids which I've messed around a bit with. In particular no binder calls are made on the thread that is created after the fork from zygote (i.e. no tid matches its pid). Is it possible that is a problem?
It's also possible (but it seems unlikely) that some calls into the binder system that come from the same Java thread could actually be made on different threads. As far as I can tell this isn't happening, however.
Also I guess I should mention that I'm working with CyanogenMod 7 (gingerbread).
-Mark