Re: cvsup broken on amd64?

From: Adrian Chadd <adrian_at_freebsd.org>
Date: Sun, 18 Sep 2011 18:11:23 +0800
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)
_at__at_ -240,9 +240,9 _at__at_
         * 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
Received on Sun Sep 18 2011 - 08:11:24 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:18 UTC