Hi

On Mon, Aug 24, 2026 at 6:19 PM Daniel P. Berrangé <[email protected]> wrote:
>
> On Mon, Aug 24, 2026 at 03:17:06PM +0100, Daniel P. Berrangé wrote:
> > On Sun, Aug 16, 2026 at 11:13:02PM +0400, Marc-André Lureau wrote:
> > > Instead of passing a Monitor pointer through error_vprintf_mon() and
> > > error_printf_mon(), call monitor_cur_hmp() directly. This removes the
> > > monitor parameter from the internal helpers and the manual
> > > object_dynamic_cast() in vreport().
> > >
> > > Signed-off-by: Marc-André Lureau <[email protected]>
> > > ---
> > >  util/error-report.c | 72 
> > > +++++++++++++++++++++++++----------------------------
> > >  1 file changed, 34 insertions(+), 38 deletions(-)
> > >
> > > diff --git a/util/error-report.c b/util/error-report.c
> > > index aaa15bc79827..70cbd174ffae 100644
> > > --- a/util/error-report.c
> > > +++ b/util/error-report.c
> > > @@ -30,34 +30,31 @@ bool error_with_guestname;
> > >  const char *error_guest_name;
> > >
> > >  /*
> > > - * Print to the current human monitor if we have one, else to stderr.
> > > + * Print to the current HMP monitor if we have one, else to stderr.
> > >   */
> > > -static int G_GNUC_PRINTF(2, 0)
> > > -error_vprintf_mon(Monitor *cur_mon, const char *fmt, va_list ap)
> > > +static int G_GNUC_PRINTF(1, 0)
> > > +error_vprintf_mon(const char *fmt, va_list ap)
> >
> > Please don't remove this 'cur_mon' parameter.
> >
> > >  {
> > > -    /*
> > > -     * This will return -1 if 'cur_mon' is NULL, or is QMP.
> > > -     * IOW this will only print if in HMP, otherwise we
> > > -     * fallback to stderr for QMP / no-monitor scenarios.
> > > -     */
> > > -    int ret = monitor_vprintf(cur_mon, fmt, ap);
> > > -    if (ret == -1) {
> > > -        ret = vfprintf(stderr, fmt, ap);
> > > +    MonitorHMP *hmp = monitor_cur_hmp();
> >
> > This calls qemu_mutex_lock/unlock, which have trace points.
> > As a result if you have 'log' tracing enabled, error messages
> > will get trace point output splattered on top.
> >
> > We must fetch monitor_cur_hmp once only at the top of
> > vreport() and never query it again.
>
> See my previous fix for this problem in:
>
>   commit 2eb00abcfebc3fa0a7c2915d1d29fa8fe0b88379
>   Author: Daniel P. Berrangé <[email protected]>
>   Date:   Wed Sep 10 17:32:37 2025 +0100
>
>     util: fix interleaving of error & trace output
>
>

Ok, I will update the patch and adjust the doc comments.

thanks


Reply via email to