Hi,

So I've taken a look at the csup source.

The problem here is the updater thread setting the "closed" state
(fixups_closed()) before calling updater_batch() again to handle
fixups.

Checking for size != 0 at that point may not be valid at the list size
may actually be 0 for a short period of time.

What about this patch:

Index: updater.c
===================================================================
--- updater.c   (revision 224905)
+++ updater.c   (working copy)
@@ -240,9 +240,9 @@
         * Make sure to close the fixups even in case of an error,
         * so that the lister thread doesn't block indefinitely.
         */
-       fixups_close(up->config->fixups);
        if (!error)
                error = updater_batch(up, 1);
+       fixups_close(up->config->fixups);
        switch (error) {
        case UPDATER_ERR_PROTO:
                xasprintf(&args->errmsg, "Updater failed: Protocol error");

Oliver, would you please try that?

Thanks,


Adrian
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to