On 06/04/2018 02:03 PM, Daniel P. Berrangé wrote: > When using --daemonize, the initial lead process will fork a child and > then wait to be notified that setup is complete via a pipe, before it > exits. When using --preconfig there is an extra call to main_loop() > before the notification is done from os_setup_post(). Thus the parent > process won't exit until the mgmt application connects to the monitor > and tells QEMU to leave the RUN_STATE_PRECONFIG. The mgmt application > won't connect to the monitor until daemonizing has completed though. > > This is a chicken and egg problem, leading to deadlock at startup. > > The only viable way to fix this is to call os_setup_post() before > the early main_loop() call when in RUN_STATE_PRECONFIG. This has the > downside that any errors from this point onwards won't be handled > well by the mgmt application, because it will think QEMU has started > successfully, so not be expecting an abrupt exit. The only way to > deal with that is to move as much user input validation as possible > to before the main_loop() call. This is left as an exercise for > future interested developers. > > Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> > --- > vl.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-)
Yup, this fixes the problem I've raised in my patch. Thanks! Reviewed-by: Michal Privoznik <mpriv...@redhat.com> (if my R-b line means anything here :-)) Michal