Message ID | 1492674416-9408-3-git-send-email-zhang.zhanghailiang@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 2017年04月20日 15:46, zhanghailiang wrote: > If some errors happen before main_loop is initialized in colo > compare thread, qemu will go into finalizing process where > we call g_main_loop_quit(s->main_loop), if main_loop is NULL, there > will be an error report: > "(process:14861): GLib-CRITICAL **: g_main_loop_quit: assertion 'loop != NULL' failed". > > We need to check if main_loop is NULL or not before call g_main_loop_quit(). Do we need check and fail early in colo_compare_thread() too? Thanks > > Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com> > --- > net/colo-compare.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/net/colo-compare.c b/net/colo-compare.c > index a6bf419..d6a5e4c 100644 > --- a/net/colo-compare.c > +++ b/net/colo-compare.c > @@ -770,7 +770,9 @@ static void colo_compare_finalize(Object *obj) > s->worker_context, true); > qemu_chr_fe_deinit(&s->chr_out); > > - g_main_loop_quit(s->compare_loop); > + if (s->compare_loop) { > + g_main_loop_quit(s->compare_loop); > + } > qemu_thread_join(&s->thread); > > /* Release all unhandled packets after compare thead exited */
On 2017/4/24 12:13, Jason Wang wrote: > > On 2017年04月20日 15:46, zhanghailiang wrote: >> If some errors happen before main_loop is initialized in colo >> compare thread, qemu will go into finalizing process where >> we call g_main_loop_quit(s->main_loop), if main_loop is NULL, there >> will be an error report: >> "(process:14861): GLib-CRITICAL **: g_main_loop_quit: assertion 'loop != NULL' failed". >> >> We need to check if main_loop is NULL or not before call g_main_loop_quit(). > Do we need check and fail early in colo_compare_thread() too? Yes, we need to check there too, will add the check in next version, thanks. > Thanks > >> Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com> >> --- >> net/colo-compare.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/net/colo-compare.c b/net/colo-compare.c >> index a6bf419..d6a5e4c 100644 >> --- a/net/colo-compare.c >> +++ b/net/colo-compare.c >> @@ -770,7 +770,9 @@ static void colo_compare_finalize(Object *obj) >> s->worker_context, true); >> qemu_chr_fe_deinit(&s->chr_out); >> >> - g_main_loop_quit(s->compare_loop); >> + if (s->compare_loop) { >> + g_main_loop_quit(s->compare_loop); >> + } >> qemu_thread_join(&s->thread); >> >> /* Release all unhandled packets after compare thead exited */ > > . >
diff --git a/net/colo-compare.c b/net/colo-compare.c index a6bf419..d6a5e4c 100644 --- a/net/colo-compare.c +++ b/net/colo-compare.c @@ -770,7 +770,9 @@ static void colo_compare_finalize(Object *obj) s->worker_context, true); qemu_chr_fe_deinit(&s->chr_out); - g_main_loop_quit(s->compare_loop); + if (s->compare_loop) { + g_main_loop_quit(s->compare_loop); + } qemu_thread_join(&s->thread); /* Release all unhandled packets after compare thead exited */
If some errors happen before main_loop is initialized in colo compare thread, qemu will go into finalizing process where we call g_main_loop_quit(s->main_loop), if main_loop is NULL, there will be an error report: "(process:14861): GLib-CRITICAL **: g_main_loop_quit: assertion 'loop != NULL' failed". We need to check if main_loop is NULL or not before call g_main_loop_quit(). Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com> --- net/colo-compare.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)