On Thu, 5 May 2022, at 12:04, Laszlo Ersek wrote: > On 05/05/22 09:59, Nikolaus Rath wrote: >> Hello, >> >> When nbdkit calls a plugin's unload() method, is it guaranteed that all >> pending requests have been handled (and all worker threads exited)? >> >> (I would have expected this to be the case, but I'm getting errors from >> threads accessing data that my unload() handler frees, so I wanted to >> confirm my assumption). > > From <https://libguestfs.org/nbdkit-plugin.3.html>: > > .cleanup > > is called once after all connections have been closed, prior to > unloading the plugin from memory. This is only called if .after_fork > succeeded earlier (even in cases where nbdkit did not fork but is > running in the foreground), which makes it a good place to > gracefully end any background threads. > > So I would think you need to either join all threads in .cleanup (at the > latest), waiting for them to drain any pending work, or cancel them > (with appropriate cancellation handlers in the background threads). >
I am taking about the threads started by nbdkit itself. I don't think the plug-in is in a position to join those in the handler - or is it? Best, Nikolaus -- GPG Fingerprint: ED31 791B 2C5C 1613 AF38 8B8A D113 FCAC 3C4E 599F »Time flies like an arrow, fruit flies like a Banana.« _______________________________________________ Libguestfs mailing list [email protected] https://listman.redhat.com/mailman/listinfo/libguestfs
