|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH for-4.5 0/6] libxl: events: Tear down fd interests when idle
Konrad: here is a set of fixes for libxl which ought IMO to be in 4.5.
See below, or the rest of the thread, for details. It's broken up
into 6 tiny patches for ease of review.
Ian Jackson writes ("[PATCH for-4.5 0/6] libxl: events: Tear down fd interests
when idle"):
> If libxl_event_register_callbacks is called with nonzero hooks while
> any part of libxl has any fd interests registered internally, then:
>
> * There is no way for libxl to notify the application that it wants
> to be told about these fds, because the spec in the doc comment
> says that the new hooks are not called for existing interests.
>
> * When libxl becomes no longer interested, it will try to find the
> nexus for the deregistration hook. But such a nexus is only set up
> with nonzero hooks, so libxl will dereference NULL.
>
> * Specifically, since 66bff9fd492f, libxl would unconditionally
> become interested in its event channel fd during setup. So if the
> application sets nontrivial hooks it will always crash in
> libxl_ctx_free. (This case reported as a bug by Ian Campbell.)
>
> To fix this, it would be nice to simply forbid `late' registration of
> event hooks. But this would be an incompatible API changel. And
> indeed libvirt already registers event hooks after using the ctx to
> create a domain (!)
>
> So instead we add the minimum workable restriction: hooks can (only)
> be registered when libxl is idle.
>
> To do this we need to:
> * Defer registration of fds until they are needed.
> * Deregister fds again as they become idle.
> There is no need to do anything about timeouts because an idle libxl
> already never has any timeouts.
>
> In this series I add defensive assertions. This is a good idea
> because violations of the rules typically produce crashes anyway, but
> distant from the cause.
>
>
> This series should be included in Xen 4.5:
>
> The evtchn fd issue is new in 4.5 - that is, we have a regression
> since 4.4. It causes libvirt to segfault.
>
> But even in 4.4 there are potential bugs, with symptoms such as the
> libxl watch fd not being properly registered, so that operations are
> unreasonably delayed, or crashes on ctx teardown. So after these
> patches make it into 4.5 master the relevant subset should probably be
> backported.
Thanks,
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |