Saya memiliki repositori telanjang di Raspberry Pi saya yang hanya saya gunakan. Saat mendorongnya hari ini, saya menerima pesan kesalahan ini:
Counting objects: 460, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (367/367), done.
remote: fatal: pack has bad object at offset 1641: inflate returned -5
error: pack-objects died of signal 13
error: failed to push some refs to 'ssh://[email protected]/media/christoph/afacc396-ec79-4920-9105-513ca4616c06/git/Documents'
Seperti yang Anda lihat, repositori diakses melalui ssh. (Saya mengubah alamat IP.)
Saya mencoba beberapa kali tetapi mendapat kesalahan yang sama (bahkan dengan nomor yang sama). Kemudian saya memutuskan untuk membuat repositori baru dengan menghapus folder yang lama, membuat folder dengan nama yang sama, dan mengeksekusi git init --bare
di dalamnya.
Sekarang saya mendapatkan kesalahan ini ketika mendorongnya:
Counting objects: 3129, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2265/2265), done.
remote: fatal: pack has bad object at offset 426983445: inflate returned -5
error: pack-objects died of signal 13
error: failed to push some refs to 'ssh://[email protected]/media/christoph/afacc396-ec79-4920-9105-513ca4616c06/git/Documents'
Apa masalahnya dan bagaimana saya membuatnya bekerja lagi?
Saya menjalankan git versi 1.9.1 pada kernel 3.19 mesin 64 bit Linux.
Memperbarui dengan output tambahan:
laptop-14-04:~/Documents Container$ GIT_TRACE=1 git push --porcelain --progress --recurse-submodules=check origin refs/heads/master:refs/heads/master
trace: built-in: git 'push' '--porcelain' '--progress' '--recurse-submodules=check' 'origin' 'refs/heads/master:refs/heads/master'
trace: run_command: 'ssh' '[email protected]' 'git-receive-pack '\''/media/christoph/afacc396-ec79-4920-9105-513ca4616c06/git/Documents'\'''
[email protected]'s password:
trace: run_command: 'pack-objects' '--all-progress-implied' '--revs' '--stdout' '--thin' '--delta-base-offset' '--progress'
trace: exec: 'git' 'pack-objects' '--all-progress-implied' '--revs' '--stdout' '--thin' '--delta-base-offset' '--progress'
trace: built-in: git 'pack-objects' '--all-progress-implied' '--revs' '--stdout' '--thin' '--delta-base-offset' '--progress'
Counting objects: 3383, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2257/2257), done.
remote: fatal: pack has bad object at offset 426983770: inflate returned -5
error: pack-objects died of signal 13
error: failed to push some refs to 'ssh://[email protected]/media/christoph/afacc396-ec79-4920-9105-513ca4616c06/git/Documents'
laptop-14-04:~/Documents Container$ git count-objects -Hv
count: 0
size: 0 bytes
in-pack: 3452
packs: 1
size-pack: 13.03 GiB
prune-packable: 0
garbage: 0
size-garbage: 0 bytes
laptop-14-04:~/Documents Container$ git fsck --full
Checking object directories: 100% (256/256), done.
Checking objects: 100% (3452/3452), done.
laptop-14-04:~/Documents Container$ git gc
Counting objects: 3452, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2254/2254), done.
Writing objects: 100% (3452/3452), done.
Total 3452 (delta 915), reused 3452 (delta 915)
laptop-14-04:~/Documents Container$ git push --porcelain --progress --recurse-submodules=check origin refs/heads/master:refs/heads/master
[email protected]'s password:
Counting objects: 3383, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2257/2257), done.
remote: fatal: pack has bad object at offset 426983770: inflate returned -5
error: pack-objects died of signal 13
error: failed to push some refs to 'ssh://[email protected]/media/christoph/afacc396-ec79-4920-9105-513ca4616c06/git/Documents'
Saya sekarang menginstal OS baru (Ubuntu 16.04 64 bit menjalankan kernel 4.4.0-21-generik) dan git sekarang versi 2.7.4. Saya tidak menyalin repo lama ke sistem baru tetapi sebaliknya hanya menyalin kontennya dan membuat repo baru. Selanjutnya saya menghapus repo pada Raspberry Pi saya dan membuat repo telanjang baru di atasnya. Saya sekarang menggunakan SmartGit untuk menambahkan file ke repo dan untuk mencoba mendorongnya. Namun, masalahnya masih ada:
Ini berfungsi jika saya membuat repositori telanjang secara lokal, menambahkannya sebagai remote, dan kemudian mendorongnya. Saya kemudian dapat mentransfer direktori repositori ke Raspberry Pi dan menggunakannya sebagai remote via ssh. Jadi sepertinya masalah hanya terjadi ketika mendorong banyak data (atau mungkin komitmen besar) melalui jaringan.
git fsck --full
dangit gc
? Apakah ini membantu? Lakukan jugafsck
pada perangkat penyimpanan Raspberry Anda dan lakukan beberapa pengujian memori. Coba jalankan perintah berikut denganGIT_TRACE=1
.du -hs .git/objects/pack
)? Apakah Anda menggunakan semacam VPN atau proxy?GIT_TRACE=1
.Jawaban:
The
pack-objects
(mangit-pack-objects
) mati karena sinyal 13 ( pipa rusak ), karenagit
tidak dapat mengembang (uncompress) objek dan gagal dengan kesalahan (kode kesalahan -5 bisa berarti out-of-mem atau menimpa / tumpang tindih kesalahan ).Penjelasan
Menurut manual zlib , kesalahan didefinisikan sebagai berikut:
di mana
-5
berarti tidak ada kemajuan yang mungkin terjadi atau jika tidak ada cukup ruang di buffer output.Inilah yang bisa kita baca di FAQ zlib :
Larutan
Ini mungkin terkait dengan beberapa hal:
objek yang didorong terlalu besar sehingga zlib adalah memori, jadi Anda perlu lebih banyak ruang dalam buffer output zlib,
Dalam hal ini, coba tambah
http.postBuffer
, misAtau gunakan
bfg
untuk menghapus gumpalan yang lebih besar, misalnyaobjek Anda rusak, jadi jalankan
git fsck --full
dangit gc
Alasan potensial bisa jadi memori rusak atau perangkat penyimpanan, jadi coba lagi di repositori bersih atau komputer lain.
bisa menjadi bug git, karena tidak boleh dibatalkan
Z_BUF_ERROR
, tetapi untuk memberikan lebih banyak ruang keluaran atau input lebih banyak, lihat: zLib inflate () hang sementara buffer yang tidak dikompresiAnda dapat melaporkan laporan bug git ke milis .
bisa menjadi masalah gzip mengembang sendiri (mis. Apakah ini bug dalam metode mengembang gzip ini? )
bisa jadi bug kernel lama (<= 2.6.32-rc4), jadi tingkatkan kernel Anda
Lihat: Bug # 547503: git-core: "git clone" gagal pada armel
Perintah lain yang berguna untuk dipertimbangkan:
GIT_TRACE=1 git push origin
git count-objects -Hv
untuk memeriksa kelebihan batas ukuranLihat juga:
Berikut ini gagal kode Git yang relevan (
builtin/index-pack.c
):dan git_inflate () dari zlib.c
sumber
git config http.postBuffer 13421772800
(menambahkan 2 nol untuk ini) pada sistem sekarang. Tidak bekerja (Kesalahan yang sama.) Program yang terlibat dalam perintah alternatif tampaknya memiliki masalah besar sendiri karena melempar pengecualian. Ini adalah output. Itu juga mengatakan sesuatu tentang file kotor. Apa maksudnya dengan itu?bfg
, tetapi pengecualian mengatakan:No such file or directory
. Jika file tersebut ada, mungkin itu adalah bug yang tidak menguraikan spasi putih dengan benar. Atau bug ini terdengar mirip (mungkin folder induk tidak memiliki izin menulis?).