I'm sorry, the UI makes it difficult to understand what exactly is going on. Are you sure that you are looking at the crashing thread? What does frame 0 look like it is doing? Did you look at the disassembly of the innermost frame on the crashing thread?
I think it would be useful to get the equivalent of WinDBG's ~*k or gdb's thread apply all bt. That might shed some clue. Also, Dispatch has some pretty good messages on what went wrong, so providing the actual printed message of libdispatch would also be useful.
That sounds like a race condition. It sounds like pthread_cancel may have been invoked on the thread handle? @adierking may have some thoughts on this as well.
Actually, are you calling pthread_exit yourself on a thread that is managed by dispatch? If so, that is invalid. Can you please provide some source code that demonstrates the issue?
I think that there is something wrong in the android setup (not in dispatch) - the stack trace indicates that pthread_exit was invoked, the question is how.