cvsup broken on amd64?

Adrian Chadd adrian at freebsd.org
Sun Sep 18 10:11:24 UTC 2011


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


More information about the freebsd-current mailing list