[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/3] libxl: Fix libxl_postfork_child_noexec deadlock etc.
George Dunlap writes ("Re: [PATCH 1/3] libxl: Fix libxl_postfork_child_noexec deadlock etc."): > So it looks like this path gets called from a number of other places in xl: > > libxl_postfork_child_noexec() is called by xl.c:postfork(). In the old code the deadlock only happens when ctx->sigchld_user_registered (for the ctx passed to libxl_postfork_child_noexec). Because xl uses .chldowner = libxl_sigchld_owner_libxl rather than libxl_sigchld_owner_libxl_always, sigchld_user_registered is only true when libxl actually has a child process. In the single-threaded synchronous model used by xl for its long_running operations (ie always passing ao_how==0), libxl only has children _during_ the libxl call, when libxl calls back to the application with a progress callback. That's what happens in the pygrub case: xl needs to restart the console viewer. > postfork() is called in xl_cmdimpl.c by autoconnect_vncviewer(), > autoconnect_console(), and do_daemonize(). osstest doesn't use `xl create -c' so they weren't tested anyway. But it also works just fine in the non-pygrub case. Likewise `xl create -V' (autoconnect_vncviewer) works too. > do_daemonize() is called during "xl create", and "xl devd". These work without the bugfix. > Was this deadlock not triggered for those, or was it triggered and > nobody noticed? Mostly, the former. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |