Ticket #1041 (closed defect: fixed)

Opened 8 years ago

Last modified 8 years ago

cave hangs if IPCInputManager throws

Reported by: gregf Owned by:
Priority: Sometime Milestone:
Component: clients/cave Version: scm
Keywords: Cc:
Blocked By: Blocking:
Distribution: Exherbo

Description

If the log directory is missing (/var/log/paludis) cave just sits there indefinitely without giving any type of indication of what is going on.

Change History

comment:1 Changed 8 years ago by ciaranm

  • Summary changed from cave hangs on missing log directory. to cave hangs if IPCInputManager throws

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.

comment:2 Changed 8 years ago by ciaranm

  • Status changed from new to closed
  • Resolution set to fixed

Think this should give a reasonable error now.

Note: See TracTickets for help on using tickets.