From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45420) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aSqn3-0002Pl-TC for qemu-devel@nongnu.org; Mon, 08 Feb 2016 13:44:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aSqn0-0000l2-Lb for qemu-devel@nongnu.org; Mon, 08 Feb 2016 13:44:01 -0500 Received: from mail-wm0-x230.google.com ([2a00:1450:400c:c09::230]:37034) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aSqn0-0000kl-8E for qemu-devel@nongnu.org; Mon, 08 Feb 2016 13:43:58 -0500 Received: by mail-wm0-x230.google.com with SMTP id g62so129356490wme.0 for ; Mon, 08 Feb 2016 10:43:58 -0800 (PST) References: <1454514465-11856-1-git-send-email-stefanha@redhat.com> <1454514465-11856-6-git-send-email-stefanha@redhat.com> From: Alex =?utf-8?Q?Benn=C3=A9e?= In-reply-to: <1454514465-11856-6-git-send-email-stefanha@redhat.com> Date: Mon, 08 Feb 2016 18:43:55 +0000 Message-ID: <87lh6vvy8k.fsf@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PULL 05/13] trace: split trace_init_file out of trace_init_backends List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: "Denis V. Lunev" , Paolo Bonzini , qemu-devel@nongnu.org, Peter Maydell Stefan Hajnoczi writes: > From: Paolo Bonzini > > This is cleaner, and improves error reporting with -daemonize. > > Signed-off-by: Paolo Bonzini > Signed-off-by: Denis V. Lunev > Acked-by: Christian Borntraeger > Message-id: 1452174932-28657-4-git-send-email-den@openvz.org > Signed-off-by: Stefan Hajnoczi > --- > qemu-io.c | 2 +- > trace/control.c | 17 ++++++++++++----- > trace/control.h | 13 ++++++++++++- > trace/simple.c | 6 ++---- > trace/simple.h | 4 ++-- > vl.c | 13 +++++++++---- > 6 files changed, 38 insertions(+), 17 deletions(-) > > diff --git a/qemu-io.c b/qemu-io.c > index 1c11d57..83c48f4 100644 > --- a/qemu-io.c > +++ b/qemu-io.c > @@ -435,7 +435,7 @@ int main(int argc, char **argv) > } > break; > case 'T': > - if (!trace_init_backends(optarg)) { > + if (!trace_init_backends()) { > exit(1); /* error message will have been printed */ > } > break; > diff --git a/trace/control.c b/trace/control.c > index 931d64c..f5a497a 100644 > --- a/trace/control.c > +++ b/trace/control.c > @@ -145,17 +145,24 @@ void trace_init_events(const char *fname) > loc_pop(&loc); > } > > -bool trace_init_backends(const char *file) > +void trace_init_file(const char *file) > { > #ifdef CONFIG_TRACE_SIMPLE > - if (!st_init(file)) { > - fprintf(stderr, "failed to initialize simple tracing backend.\n"); > - return false; > - } > + st_set_trace_file(file); This breaks "make check" as st_set_trace_file will attempt to flush the file: /* Halt trace writeout */ flush_trace_file(true); trace_writeout_enabled = false; flush_trace_file(true); And this deadlocks waiting for trace_empty_cond to get tickled which will never happen because: > diff --git a/vl.c b/vl.c > index ff2a7d5..955f364 100644 > --- a/vl.c > +++ b/vl.c > @@ -2988,7 +2988,7 @@ int main(int argc, char **argv, char **envp) > bool userconfig = true; > const char *log_mask = NULL; > const char *log_file = NULL; > - const char *trace_file = NULL; > + char *trace_file = NULL; > ram_addr_t maxram_size; > uint64_t ram_slots = 0; > FILE *vmstate_dump_file = NULL; > @@ -3905,7 +3905,10 @@ int main(int argc, char **argv, char **envp) > exit(1); > } > trace_init_events(qemu_opt_get(opts, "events")); > - trace_file = qemu_opt_get(opts, "file"); > + if (trace_file) { > + g_free(trace_file); > + } > + trace_file = g_strdup(qemu_opt_get(opts, "file")); > qemu_opts_del(opts); > break; > } > @@ -4089,6 +4092,8 @@ int main(int argc, char **argv, char **envp) > exit(0); > } > > + trace_init_file(trace_file); > + This happens before: > */ > if (log_file) { > @@ -4106,7 +4111,7 @@ int main(int argc, char **argv, char **envp) > } > > if (!is_daemonized()) { > - if (!trace_init_backends(trace_file)) { > + if (!trace_init_backends()) { > exit(1); > } > } > @@ -4653,7 +4658,7 @@ int main(int argc, char **argv, char **envp) > os_setup_post(); > > if (is_daemonized()) { > - if (!trace_init_backends(trace_file)) { > + if (!trace_init_backends()) { This which creates the thread. > exit(1); > } > } -- Alex Bennée