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

ls-remote bug

From
LZLior Zeltzer <liorz@marvell.com>
Date
Oct 24, 2023, 10:55 UTC
Message-ID
<BL0PR18MB2130A3CA5DEF0DD7199F2979BADFA@BL0PR18MB2130.namprd18.prod.outlook.com>
In-Reply-To
<BL0PR18MB2130C672D503E49F955E04E8BADFA@BL0PR18MB2130.namprd18.prod.outlook.com>
>uname -a
Linux dc3lp-veld0045 3.10.0-1160.21.1.el7.x86_64 #1 SMP Tue Mar 16 18:28:22 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Gerrit version : 3.8.0

Bug description : When running ls-remote : sometime data gets cut in the middle

Reproducing : You need a few files with a few repo names (I used 4 files with 10 repos each) Call then l1..l4 And the code below just cd into each of them does ls-remote twice and compares the data Doing it in parallel on all lists. Data received in both ls-remotes should be the same , if not, it prints *** Repos should contain a lot of tags and refs

Note : 
1.  without stderr redirection (2>&1) all works well
2. On local repos (not through gerrit) all works well

I compared various git vers and found the bug to be between 2.31.8 and 2.32.0 Comparing ls-remote.c file between those vers gave me :

Lines :
if (transport_disconnect(transport))
		return 1;
moved to end of sub
copying ls-remote.c from 2.31.8 to 2.32.0 - fixed the bug
Code reproducing bug :

#!/proj/mislcad/areas/DAtools/tools/perl/5.10.1/bin/perl -w use strict; use Cwd qw(cwd);

my $count = 4;
for my $f (1..$count) {
  my $child = fork();
  if (!$child) {
    my $curr = cwd();
    
    my @repos = `cat l$f`;
    foreach my $repo (@repos) {
      chomp $repo;
      print "$repo\n";
      chdir($repo);
      my $remote_tags_str = `git ls-remote  2>&1`;
      my $remote_tags_str2 = `git ls-remote  2>&1 `;
      chdir($curr);
      if ( $remote_tags_str ne $remote_tags_str2) {
         print "***\n";
      }
    }
  
    exit(0);
  }
}
while (wait != -1) {}
1;
Next: Bagas Sanjaya
Message 1 of 6 in “ls-remote bug”
  1. Lior ZeltzerOct 24, 2023
  2. Bagas SanjayaOct 27, 2023
  3. Lior ZeltzerOct 27, 2023
  4. René ScharfeOct 29, 2023
  5. Lior ZeltzerOct 30, 2023
  6. René ScharfeOct 31, 2023

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.