On Mon, Jul 15, 2013 at 09:41:19PM +0200, Christian Borntraeger wrote:
> When running with trace backend e.g. "simple" the writer thread needs to be
> implemented in the same process context as the trace points that will be
> processed. Under libvirtd control, qemu gets first started in daemonized
> mode to privide its capabilities. Creating the writer thread in the initial
> process context then leads to a dead lock because the thread gets termined
> together with the initial parent. (-daemonize) This results in
> stale qemu processes.
> Fix this by deferring trace initialization.

I don't think this works since trace events will fill up trace_buf[] and
eventually invoke flush_trace_file().

At that point we use trace_available_cond and trace_empty_cond, which
may be NULL in Glib <2.31.0.

Perhaps this can be made safe by checking trace_writeout_enabled.  It
will be false before the backend has been initialized.

Stefan

Reply via email to