Fei Li <f...@suse.com> writes: > On 10/15/2018 07:53 PM, Markus Armbruster wrote: >> Calling error_report() in a function that takes an Error ** argument >> is suspicious. vnc_init_func() does that, and then fails without >> setting an error. Its caller main(), via qemu_opts_foreach(), is fine >> with it, but clean it up anyway. >> >> Cc: Gerd Hoffmann <kra...@redhat.com> >> Signed-off-by: Markus Armbruster <arm...@redhat.com> >> --- >> ui/vnc.c | 9 +++++---- >> vl.c | 2 +- >> 2 files changed, 6 insertions(+), 5 deletions(-) >> >> diff --git a/ui/vnc.c b/ui/vnc.c >> index 98e3d3b1d8..fcd2744d52 100644 >> --- a/ui/vnc.c >> +++ b/ui/vnc.c >> @@ -4082,13 +4082,14 @@ int vnc_init_func(void *opaque, QemuOpts *opts, >> Error **errp) >> assert(id); >> vnc_display_init(id, &local_err); >> if (local_err) { >> - error_report_err(local_err); >> - exit(1); >> + error_propagate(errp, local_err); > Shall we use error_propagate(errp, local_err, ("Failed to init VNC > server: "); > like vnc_display_open does?
I don't know. The error reporting is somewhat poor around here. Consider: $ qemu-system-x86_64 -display vnc=:0,share=nope qemu-system-x86_64: -display vnc=:0,share=nope: Failed to start VNC server: unknown vnc share= option The "Failed to start VNC server: " prefix doesn't really add value. $ qemu-system-x86_64 -display vnc=:0 -k bad qemu-system-x86_64: -display vnc=:0: could not read keymap file: 'bad' The error message refers to -display instead of -k. I doubt adding the prefix would improve it. Gerd, what do you think? > If yes, I guess this error message should be added from last patch [26/35]. Yes. > If not, please omit. :) > > Have a nice day > Fei >> + return -1; >> } >> vnc_display_open(id, &local_err); >> if (local_err != NULL) { >> - error_reportf_err(local_err, "Failed to start VNC server: "); >> - exit(1); >> + error_propagate_prepend(errp, local_err, >> + "Failed to start VNC server: "); >> + return -1; >> } >> return 0; >> } >> diff --git a/vl.c b/vl.c >> index c053117028..8e0006d49c 100644 >> --- a/vl.c >> +++ b/vl.c >> @@ -4526,7 +4526,7 @@ int main(int argc, char **argv, char **envp) >> /* init remote displays */ >> #ifdef CONFIG_VNC >> qemu_opts_foreach(qemu_find_opts("vnc"), >> - vnc_init_func, NULL, NULL); >> + vnc_init_func, NULL, &error_fatal); >> #endif >> if (using_spice) {