[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] fix assert fail in libxl__sigchld_installhandler
when libxl_sigchld_owner_libxl_always is used in libvirt or other tools stack, there is a assertion fail in restore in libxl__sigchld_installhandler during the following sequence: create -> save -> restore. here is the backtrace: #0 0x00007f7a522453d5 in raise () from /lib64/libc.so.6 #1 0x00007f7a52246858 in abort () from /lib64/libc.so.6 #2 0x00007f7a5223e2e2 in __assert_fail_base () from /lib64/libc.so.6 #3 0x00007f7a5223e392 in __assert_fail () from /lib64/libc.so.6 #4 0x00007f7a48008113 in libxl__sigchld_installhandler ( gc=gc@entry=0x7f7a4f080480) at libxl_fork.c:225 #5 0x00007f7a480081f4 in perhaps_installhandler (gc=gc@entry=0x7f7a4f080480, creating=creating@entry=false) at libxl_fork.c:272 #6 0x00007f7a4800851f in libxl_childproc_setmode (ctx=0x7f7a400c0ee0, hooks=hooks@entry=0x7f7a482694a0 <childproc_hooks>, user=user@entry=0x7f7a48474f80 <child_info>) at libxl_fork.c:427 the sigchld_owner exists but it is not the same as the new CTX. meanwhile the old sigchild is not removed in perhaps_removehandler. Signed-off-by: Bamvor Jian Zhang <bjzhang@xxxxxxxx> --- tools/libxl/libxl_fork.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/libxl/libxl_fork.c b/tools/libxl/libxl_fork.c index 4ae9f94..9f1a5ce 100644 --- a/tools/libxl/libxl_fork.c +++ b/tools/libxl/libxl_fork.c @@ -252,7 +252,7 @@ static bool chldmode_ours(libxl_ctx *ctx, bool creating) case libxl_sigchld_owner_mainloop: return 0; case libxl_sigchld_owner_libxl_always: - return 1; + return creating || !LIBXL_LIST_EMPTY(&ctx->children); } abort(); } -- 1.8.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |