On Mon, Jul 21, 2025 at 3:04 PM Daniel P. Berrangé <berra...@redhat.com> wrote:
>
> On Mon, Jul 21, 2025 at 02:10:51PM -0400, Stefan Hajnoczi wrote:
> > From: Vladimir Sementsov-Ogievskiy <vsement...@yandex-team.ru>
> >
> > So tired to parse all these timestamps, when need to compare them
> > with other logs.
> >
> > Use iso8601 format as in warn_report() (info_report(), error_report())
> > already used.
> >
> > Also, start line with date, to be similar with warn_report() as well.
> >
> > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsement...@yandex-team.ru>
> > Message-id: 20250626195514.366177-1-vsement...@yandex-team.ru
> > Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com>
> > ---
> >  scripts/tracetool/backend/log.py | 11 ++++++++---
> >  1 file changed, 8 insertions(+), 3 deletions(-)
> >
> > diff --git a/scripts/tracetool/backend/log.py 
> > b/scripts/tracetool/backend/log.py
> > index 17ba1cd90e..61118474b1 100644
> > --- a/scripts/tracetool/backend/log.py
> > +++ b/scripts/tracetool/backend/log.py
> > @@ -39,10 +39,15 @@ def generate_h(event, group):
> >          '        if (message_with_timestamp) {',
> >          '            struct timeval _now;',
> >          '            gettimeofday(&_now, NULL);',
> > +        '            time_t _seconds = _now.tv_sec;',
> > +        '            struct tm _tm;',
> > +        '            gmtime_r(&_seconds, &_tm);',
> >          '#line %(event_lineno)d "%(event_filename)s"',
> > -        '            qemu_log("%%d@%%zu.%%06zu:%(name)s " %(fmt)s "\\n",',
> > -        '                     qemu_get_thread_id(),',
> > -        '                     (size_t)_now.tv_sec, (size_t)_now.tv_usec',
> > +        '            qemu_log("%%04d-%%02d-%%02dT%%02d:%%02d:%%02d.%%06ldZ'
> > +        ' (%%d) %(name)s " %(fmt)s "\\n",',
> > +        '                     _tm.tm_year + 1900, _tm.tm_mon + 1, 
> > _tm.tm_mday,',
> > +        '                     _tm.tm_hour, _tm.tm_min, _tm.tm_sec, 
> > _now.tv_usec,',
> > +        '                     qemu_get_thread_id()',
> >          '                     %(argnames)s);',
>
> IMHO this is undesirable, as it bloats the QEMU binaries by another 1 MB
> as we have an excessive amount of code being inlined in every trace call
> location. I've co-incidentally just sent a patch that would fix the same
> problem based on a discussion last week about a bug caused by this log
> backend adding 'error-report.h' into all files:
>
>   https://lists.nongnu.org/archive/html/qemu-devel/2025-07/msg04905.html
>
> >          '#line %(out_next_lineno)d "%(out_filename)s"',
> >          '        } else {',

There is also a format string portability issue that CI has just found:
https://gitlab.com/qemu-project/qemu/-/jobs/10761777777#L2294

This patch will need to be reworked.

Stefan

>
> With regards,
> Daniel
> --
> |: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
> |: https://libvirt.org         -o-            https://fstop138.berrange.com :|
> |: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
>
>

Reply via email to