When mplayerplug-in sets up a new child process, it calls:
Where sig_child is:
static void sig_child(int signo)
This causes Firefox to hang if there are child processes belonging to other extensions or plugins (such as java, which runs java_vm as a child).
Please only wait for processes that mplayerplug-in started. Even better, don't override the global SIGCHLD handler for Firefox, since that's bound to step on other extensions/plugins/future features.