Re: Git clone failures on armv7, was Re: Git core dump checking out main on armv7

From: Mark Millard <marklmi_at_yahoo.com>
Date: Thu, 27 Jun 2024 22:54:41 UTC
On Jun 27, 2024, at 14:40, Mark Millard <marklmi@yahoo.com> wrote:

> On Jun 27, 2024, at 12:15, Warner Losh <imp@bsdimp.com> wrote:
> 
> On Thu, Jun 27, 2024 at 10:24 AM bob prohaska <fbsd@www.zefoxnet> wrote:
>> On Wed, Jun 26, 2024 at 06:24:59PM -0700, Mark Millard wrote:
>>> 
>>> Does using the chroot setup using --depth=1 on the
>>> RPi2B consistently work when tried repeatedly? Or
>>> was this just an example of a rare success?
>>> 
>> Apparently it was a rare success. Five back-to-back retries
>> all failed in an orderly way, though with different messages;
>> invalid fetch-pack and missing blob object.
>> The transcript is at
>> http://www.zefox.net/~fbsd/rpi2/git_problems/readme_shallow_armv7_chroot_gittests
>> 
>> Is it worthwhile to repeat with different --depth= values? I'm not sure
>> what the sensible range might be, maybe a 1, 2, 5 sequence? It would
>> be convenient to avoid a panic, as that slows repetition.
>> 
>> What happens if you start limiting the memory resources inside a armv7 jail
>> on a aarch64 machine?
>> 
>> Sometimes it works, sometimes it doesn't triggers a "memory shortage" or
>> "marginal amounts of memory available" bug hunting memories for me.
> 
> As I reported in a earlier submittal to the list, I've
> replicated the problem on an armv7 system running main [15]
> with RAM+SWAP being:
> 
> 2048 MiBytes RAM + 3685 MiBytes SWAP == 5733 MiBytes OVERALL
> 
> This was on a Orange Pi+ 2ed. A top variation monitoring and
> reporting various maximum observed figures did not show any
> large memory use compared to even 1024 MiBytes. Any limitation
> would appear to have to be local to some more specific kind
> of constraint rather than overall system RAM or RAM+SWAP.
> 
>> Warner

FYI:

So far, doing the likes of "truss -o ~/truss.txt -f -a -H -p 2136"
towards the end of "Receiving objects" (where 2136 was the original
git process) has always resulted in a normal completion of the clone.

comparing/contrasting use of

(gdb) run clone --depth=1 -o freebsd ssh://anongit@192.158.248.9/src.git /tmp/DOES-NOT-EXIST

Such still gets the errors:

(gdb) run clone --depth=1 -o freebsd ssh://anongit@192.158.248.9/src.git /tmp/DOES-NOT-EXIST
Starting program: /usr/local/bin/git clone --depth=1 -o freebsd ssh://anongit@192.158.248.9/src.git /tmp/DOES-NOT-EXIST
Cloning into '/tmp/DOES-NOT-EXIST'...
[Detaching after fork from child process 2172]
[New LWP 100254 of process 2171]
[Detaching after fork from child process 2173]
remote: Enumerating objects: 104642, done.
remote: Counting objects: 100% (104642/104642), done.
remote: Compressing objects: 100% (88919/88919), done.
remote: Total 104642 (delta 22161), reused 43523 (delta 11808), pack-reused 0 (from 0)
Receiving objects: 100% (104642/104642), 344.50 MiB | 1.11 MiB/s, done.
[LWP 100254 of process 2171 exited]
Resolving deltas: 100% (22161/22161), done.
[Detaching after fork from child process 2176]
fatal: missing blob object '64981a94f867c4c6f9c4aaa26c1117cc8d85de34'
fatal: remote did not send all necessary objects
[Inferior 1 (process 2171) exited with code 0200]

>>  Thanks for reading,
>> 
>> bob prohaska
>> 
>> 
>>>> A second try without chroot resulted in failure but no panic:
>>> 
>>>> <jemalloc>: Should own extent_mutex_pool(17)
>>> 
>>> That looks like it would be interesting to someone
>>> appropriately knowledgeable. If jemalloc can see bad
>>> mutex ownerships, that seems like such could lead to
>>> all sorts of later problems: Garbage-in/garbage-out.
>>> 
>>> I do not know if the message means that various
>>> corruptions might be in place afterwards so that
>>> various later problems might be consequences that
>>> are not surprising possibilities.
>>> 
>>>> 47.25 MiB | 1.35 MiB/s  
>>>> error: index-pack died of signal 6
>>>> 
>>>> A repeat session produced an oft-seen failure:
>>>> 
>>>> root@www:/mnt # mkdir 3rdarmv7gittest
>>>> root@www:/mnt # cd 3rdarmv7gittest
>>>> root@www:/mnt/3rdarmv7gittest # git clone  -o freebsd ssh://anongit@192.158.248.9/src.git .
>>>> Cloning into '.'...
>>>> remote: Enumerating objects: 4511481, done.
>>>> remote: Counting objects: 100% (383480/383480), done.
>>>> remote: Compressing objects: 100% (28955/28955), done.
>>> 
>>>> <jemalloc>: Should own extent_mutex_pool(17)
>>> 
>>> That is the same error notice as above that looked
>>> to be interesting.
>>> 
>>> Note that it happens before the later message
>>> "error: index-pack died of signal 6". So that
>>> last may just be a later consequence of the
>>> earlier error(s).
>>> 
>>>> 47.25 MiB | 1.35 MiB/s  
>>>> error: index-pack died of signal 6
>>>> fatal: index-pack failed
>>>> root@www:/mnt/3rdarmv7gittest # ls
>>>> root@www:/mnt/3rdarmv7gittest # cd ..
>>>> root@www:/mnt # mkdir 4tharmv7gittest
>>>> root@www:/mnt # cd 4tharmv7gittest
>>>> root@www:/mnt/4tharmv7gittest # git clone -o freebsd ssh://anongit@192.158.248.9/src.git .
>>>> Cloning into '.'...
>>>> remote: Enumerating objects: 4511481, done.
>>>> remote: Counting objects: 100% (383480/383480), done.
>>>> remote: Compressing objects: 100% (28955/28955), done.
>>>> Receiving objects:  43% (1966916/4511481), 926.00 MiB | 626.00 KiB/s 
>>>> remote: Total 4511481 (delta 377747), reused 354525 (delta 354525), pack-reused 4128001 (from 1)
>>>> Receiving objects: 100% (4511481/4511481), 1.64 GiB | 705.00 KiB/s, done.
>>>> fatal: pack is corrupted (SHA1 mismatch)
>>>> fatal: index-pack failed
>>> 
>>> Note the lack of a local message:
>>> 
>>> <jemalloc>: Should own extent_mutex_pool
>>> 
>>> But the prior jemalloc message(s) may be sufficient
>>> context to not be surprised about this.
>>> 
>>>> root@www:/mnt/4tharmv7gittest # 
>>>> 
>>>> No panic, however, and it seems reproducible:
>>>> root@www:/mnt # mkdir 5tharmv7gittest
>>>> root@www:/mnt # cd 5tharmv7gittest
>>>> root@www:/mnt/5tharmv7gittest # git clone -o freebsd ssh://anongit@192.158.248.9/src.git .
>>>> Cloning into '.'...
>>>> remote: Enumerating objects: 4511513, done.
>>>> remote: Counting objects: 100% (383480/383480), done.
>>>> remote: Compressing objects: 100% (28955/28955), done.
>>>> remote: Total 4511513 (delta 377756), reused 354525 (delta 354525), pack-reused 4128033 (from 1)
>>>> Receiving objects: 100% (4511513/4511513), 1.64 GiB | 1.28 MiB/s, done.
>>>> fatal: pack is corrupted (SHA1 mismatch)
>>>> fatal: index-pack failed
>>> 
>>> Note the lack of a local message:
>>> 
>>> <jemalloc>: Should own extent_mutex_pool
>>> 
>>> But the prior jemalloc message(s) may be sufficient
>>> context to not be surprised about this (again).
>>> 
>>>> root@www:/mnt/5tharmv7gittest 
>>>> 
>>>> Not sure what to try next, thanks for reading this far! 
>>>> 
>>>> bob prohaska
>>>> 
>>>> 
>>>> Archived at 
>>>> http://www.zefox.net/~fbsd/rpi2/git_problems/readme_armv7
>>> 
>>> 


===
Mark Millard
marklmi at yahoo.com