git fsck informando "sha1 mismatch"

Tenemos el siguiente problema al ejecutar el command git fsck --full --strict :

 error: sha1 mismatch ced885d12a0677f2db9025e1e684c72e67283fcd error: ced885d12a0677f2db9025e1e684c72e67283fcd: object corrupt or missing error: sha1 mismatch cf5a1546bd2de5611eaf6136fb5ca02b4e358bec error: cf5a1546bd2de5611eaf6136fb5ca02b4e358bec: object corrupt or missing error: sha1 mismatch cf5d9d5723014921370de479c54a73230c86a981 error: cf5d9d5723014921370de479c54a73230c86a981: object corrupt or missing error: sha1 mismatch cf675ce5bc5eeb5937441c6a02976cf2fa40076b error: cf675ce5bc5eeb5937441c6a02976cf2fa40076b: object corrupt or missing error: sha1 mismatch cf7c5156cf127eb7141505946df51b2b57925a50 error: cf7c5156cf127eb7141505946df51b2b57925a50: object corrupt or missing dangling commit 3468455f0d9d055bbe957744aa10e670469d3912 dangling commit daeec54632203157a70bae93b9d7c3290820c2f9 (more dangling commit messages) 

(Nota: Realmente no me importan los posts de compromiso pendientes. Me concentro en el problema de falta de coincidencia sha1).

Mi interpretación de este post es que git-fsck vuelve a calcular el sha1 de la carga, pero encontró un sha1 diferente del utilizado para designar el object. Los objects no faltan en el repository (he comprobado w / git cat-file).

Lo extraño es que si ejecuto el command nuevamente, todavía tengo los posts sha1 pero para diferentes objects:

 error: sha1 mismatch 1452752024456a509540591c4879b3e3534f457e error: 1452752024456a509540591c4879b3e3534f457e: object corrupt or missing error: sha1 mismatch 16e08310d7182e97092d2783c911dbcf66538238 error: 16e08310d7182e97092d2783c911dbcf66538238: object corrupt or missing dangling commit 3468455f0d9d055bbe957744aa10e670469d3912 

Nota: el repository no ha cambiado entre las dos ejecuciones.

Estamos ejecutando Linux y la versión actual de git es:

 $git --version git version 1.7.2.2.170.g5c7f2 

Los errores estaban allí en una versión anterior (1.6.5.rc2.18.g6d8b). Esos git se construyeron a partir de las fonts usando gcc 3.4.4.

SIN EMBARGO, cuando copio el repository en otro host, git fsck no informa ningún problema. La versión de Git es 1.7.2.1 (proporcionada por Fedora).

He hecho las siguientes observaciones:

  1. Los objects que tienen sha1 no válido a menudo están en el mismo range (en el primer ejemplo, los sha1s comienzan con ce o cf) y los errores se desencadenan dentro de un período pequeño durante la ejecución de fsck. Creo que git-fsck hace un escaneo orderado (o tal vez los objects se clasifican dentro del package).
  2. Esos objects son manchas relativamente grandes (> 900k)
  3. Hemos ejecutado un pase de memtest completo de 15 minutos para una posible falla de memory de hardware. No hemos encontrado ningún problema. No se observa ningún otro comportamiento extraño en este server que también realice muchas otras tareas que no son git.
  4. git gc no se queja

Hipótesis hasta el momento:

  1. Este problema es causado por una compilation incorrecta de git (comstackdor de versión de biblioteca?)
  2. Nuestro memtest no pudo encontrar un problema de memory real.
  3. Existe un error sutil en el cálculo de git-fsck sha1 que se produce aleatoriamente (o más precisamente dentro de ciertas windows de time corto) para blobs grandes.

¿Cómo podemos solucionar esto?

Debe haber sido algún tipo de problema de hardware.