All of lore.kernel.org
 help / color / mirror / Atom feed
From: Patrick Steinhardt <ps@pks.im>
To: Pranav P <pranav.p7@ibm.com>
Cc: "git@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: [BUG]: backfill min batch size test case failure on s390x
Date: Tue, 22 Apr 2025 15:53:49 +0200	[thread overview]
Message-ID: <aAefbU-MmY_734oB@pks.im> (raw)
In-Reply-To: <BY5PR15MB35396BEBCAB2C559080F08C6A0BB2@BY5PR15MB3539.namprd15.prod.outlook.com>

Hi,

On Tue, Apr 22, 2025 at 12:31:18PM +0000, Pranav P wrote:
> Hi,
>
> When running `make test` on an s390x machine in Debian it is failing on 'do partial clone 2, backfill min batch size'
> Reference: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1102106
>
> After processing the command line arguments structure member min_batch_size should have had the value 20
>
> Instead of having the value 20 (--min-batch-size=20) it was having a very large value
>
> min_batch_size in `struct backfill_context` is of type `size_t` and since in the function cmd_backfill, in the
> options struct it is passed on to OPT_INTEGER, which eventually causes
>
> ```
> *(int *)opt->value = strtol(arg, (char **)&s, 10);
> ```
> in parse-options.c line 188. This is writing the data in the first 4 bytes of min_batch_size and on big endian
> systems this will lead min_batch_size to be a big number. This issue is immediately visible in little endian systems.
>
> Changing OPT_INTEGER to OPT_MAGNITUDE seems to be working on x86 and s390x

Yup, indeed.

> ```
> diff --git a/builtin/backfill.c b/builtin/backfill.c
> index 18f9701487..33e1ea2f84 100644
> --- a/builtin/backfill.c
> +++ b/builtin/backfill.c
> @@ -123,7 +123,7 @@ int cmd_backfill(int argc, const char **argv, const char *prefix, struct reposit
>                 .sparse = 0,
>         };
>         struct option options[] = {
> -               OPT_MAGNITUDE(0, "min-batch-size", &ctx.min_batch_size,
> +               OPT_INTEGER(0, "min-batch-size", &ctx.min_batch_size,
>                             N_("Minimum number of objects to request at a time")),
>                 OPT_BOOL(0, "sparse", &ctx.sparse,
>                          N_("Restrict the missing objects to the current sparse-checkout")),
> ```
>
> But on systems where size_t which not be unsigned long, this might lead to an issue.
> So, one other suggestion I have is to change the data type of min_batch_size from size_t to int. But I am not able to
> determine whether a practical upper bound for min_batch_size would exceed what an int variable can store.
> With that clarification, I can a raise patch for the issue.

True, as well. Overall the current state is a bit unfortunate because
it's so easy to get this wrong, and the compiler won't even spit out a
warning.

> I am fairly new to opensource and was following the `git bugreport`. So I am extremely sorry for any lack of clarity in the report.

No need to be sorry, this bug report contains all the details we'd need
and is of quite high quality :) The only thing is that we've already got
this bug reported via [1].

The underlying issue is addressed via [2], which has already been merged
to `next`. It also fixes the underlying issue you observed with
different integer widths as well as with signedness.

Thanks!

Patrick

[1]: https://lore.kernel.org/git/89257ab82cd60d135cce02d51eacee7ec35c1c37.camel@physik.fu-berlin.de/
[2]: https://lore.kernel.org/git/20250401-b4-pks-parse-options-integers-v1-0-a628ad40c3b4@pks.im/

      parent reply	other threads:[~2025-04-22 13:53 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-22 12:31 [BUG]: backfill min batch size test case failure on s390x Pranav P
2025-04-22 12:35 ` Pranav P
2025-04-22 13:53 ` Patrick Steinhardt [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aAefbU-MmY_734oB@pks.im \
    --to=ps@pks.im \
    --cc=git@vger.kernel.org \
    --cc=pranav.p7@ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.