On Wed, Feb 08, 2023 at 06:13:10PM -0500, Laine Stump wrote: >I initially had the passt process being started in an identical >fashion to the slirp-helper - libvirt was daemonizing the new process >and recording its pid in a pidfile. The problem with this is that, >since it is daemonized immediately, any startup error in passt happens >after the daemonization, and thus isn't seen by libvirt - libvirt >believes that the process has started successfully and continues on >its merry way. The result was that sometimes a guest would be started, >but there would be no passt process for qemu to use for network >traffic. > >Instead, we should be starting passt in the same manner we start >dnsmasq - we just exec it as normal (along with a request that passt >create the pidfile, which is just another option on the passt >commandline) and wait for the child process to exit; passt then has a >chance to parse its commandline and complete all the setup prior to >daemonizing itself; if it encounters an error and exits with a non-0 >code, libvirt will see the code and know about the failure. We can >then grab the output from stderr, log that so the "user" has some idea >of what went wrong, and then fail the guest startup. > >Signed-off-by: Laine Stump Reviewed-by: Martin Kletzander