I know this doesn't really answer the question, but you should at least take heart in the fact that message-based concurrency is much less prone to wierd errors than shared-memory-thread-based concurrency.
I presume you have seen the actor guidelines in Programming in Scala, but for the record:
- Actors should not block while processing a message. Where you might want to block try to arrange to get a message later instead.
- Use
react {}
rather than receive {}
when possible.
- Communicate with actors only via messages.
- Prefer immutable messages.
- Make messages self-contained.