Change History

What's going on here is this: a child 'cave perform' process is spawned to do the installing. This process communicates via pipes to the master 'cave execute-resolution' process. The 'cave execute-resolution' process waits to be asked to create an output manager. If it can't create the requested output manager, it throws an exception, which makes the main process exit with an error. The child process, meanwhile, sees this and exits too.

Except, it doesn't quite work... First, the error from the main program can very easily be lost. Second, the child doesn't always realise the main program has barfed, and so it waits forever.

I think what we need here is to catch exceptions when creating output managers in the IPC input manager in the main process, create 'standard' output managers for the child's "everything went horribly wrong!" messages, and pass a message to the child process telling it to exit abnormally.