git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[BUG]: backfill min batch size test case failure on s390x

From
PPPranav P <pranav.p7@ibm.com>
Date
Apr 22, 2025, 12:31 UTC
Message-ID
<BY5PR15MB35396BEBCAB2C559080F08C6A0BB2@BY5PR15MB3539.namprd15.prod.outlook.com>
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                                                                                                                     
                                                                                                                                                                                               
```                                                                                                                                                                                            
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.                                                                                                                                    
                                                                                                                                                                                               
Please review the rest of the bug report below.

[System Info]                                                                                                                                                                                  
git version:                                                                                                                                                                                   
git version 2.49.0.391.g4bbb303af6                                                                                                                                                             
cpu: s390x                                                                                                                                                                                     
built from commit: 4bbb303af69990ccd05fe3a2eb58a1ce036f8220                                                                                                                                    
sizeof-long: 8                                                                                                                                                                                 
sizeof-size_t: 8                                                                                                                                                                               
shell-path: /bin/sh                                                                                                                                                                            
libcurl: 8.13.0                                                                                                                                                                                
OpenSSL: OpenSSL 3.4.1 11 Feb 2025                                                                                                                                                             
zlib: 1.3.1                                                                                                                                                                                    
SHA-1: SHA1_DC                                                                                                                                                                                 
SHA-256: SHA256_BLK                                                                                                                                                                            
uname: Linux 6.1.0-31-s390x #1 SMP Debian 6.1.128-1 (2025-02-07) s390x                                                                                                                         
compiler info: gnuc: 14.2                                                                                                                                                                      
libc info: glibc: 2.41                                                                                                                                                                         
$SHELL (typically, interactive shell): /bin/bash                                                                                                                                               
                                                                                                                                                                                               
                                                                                                                                                                                               
[Enabled Hooks]

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.

Thanks,
Pranav
Next: Pranav P
Message 1 of 3 in “[BUG]: backfill min batch size test case failure on s390x”
  1. Pranav PApr 22, 2025
  2. Pranav PApr 22, 2025
  3. Patrick SteinhardtApr 22, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.