If a users system isn't configured properly, chrome will "pretend" to start and then exit sometime after starting. For whatever reason, it doesn't trigger a "Pipe broken" or other OS error, probably because it never attached to them.
1) After starting the process, start a separate thread that simply waits on the process and calls pipe.close() once wait returns.
2) Some atomics/locks in Brower.close() would help our different closers navigate between each other.- in fact, it makes sense to me that every file descriptor have a mutex/atomic that, once we are sure we have closed it once, or once we are sure it was closed somehow, we don't close it again.
However, it makes sense to do this after the API change.
If a users system isn't configured properly, chrome will "pretend" to start and then exit sometime after starting. For whatever reason, it doesn't trigger a "Pipe broken" or other OS error, probably because it never attached to them.
1) After starting the process, start a separate thread that simply waits on the process and calls
pipe.close()
once wait returns. 2) Some atomics/locks inBrower.close()
would help our different closers navigate between each other.- in fact, it makes sense to me that every file descriptor have a mutex/atomic that, once we are sure we have closed it once, or once we are sure it was closed somehow, we don't close it again.However, it makes sense to do this after the API change.