well, i don't exactly understand your code and its intentions, as i never worked with the modules you use. but what i'm tripping over in your question is the word "hopefully":
"so that the forked Server process and mpg123 instance would hopefully exit."
you didn't mention whether the errors can be reproduced. if they are not, but appear at random, then all that reminds me to some sort of a race condition. as if you are trying to communicate with a process, which may still be alive, but mustn't.
language is a virus from outer space.