Git Extensions: Semuanya berfungsi dengan baik hingga kemarin.
Tapi tiba-tiba saya mendapatkan kesalahan ini ketika saya mencoba menarik beberapa repositori menggunakan git extensions
C:\Program Files\Git\bin\git.exe pull --progress "origin"
Done
0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x68560000, RegionSize 0x390000, State 0x10000
C:\Program Files\Git\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
Ini terjadi untuk semua repositori yang telah saya kloning. Tapi, git bash saya berfungsi dengan baik. Saya tidak tahu apa yang sedang terjadi. Adakah yang tahu mengapa ini terjadi?
git
cygwin
git-extensions
Uchia Itachi
sumber
sumber
Jawaban:
Cygwin menggunakan bagian memori bersama yang persisten, yang kadang-kadang bisa rusak. Gejala ini adalah bahwa beberapa program Cygwin mulai gagal, tetapi aplikasi lain tidak terpengaruh. Karena bagian memori bersama ini persisten, sering kali sistem reboot diperlukan untuk menghapusnya sebelum masalah dapat diselesaikan.
sumber
Saya memiliki masalah yang sama. Saya menemukan solusi di sini http://jakob.engbloms.se/archives/1403
Bagi saya solusinya sedikit berbeda. Dulu
Sebelum Anda rebase dll, Anda harus memastikan itu tidak digunakan:
Dan buat cadangan:
Jika perintah rebase gagal dengan sesuatu seperti:
Anda harus melakukan langkah-langkah berikut secara berurutan:
Jika ada masalah jalankan perintah sebagai Administrator
sumber
tl; dr: Instal 64-bit Git untuk Windows 2 .
Rincian teknis
Gejala ini dengan sendirinya tidak ada hubungannya dengan basis gambar executable, rusak bagian memori bersama Cygwin, versi DLL yang saling bertentangan dll.
Itu kode Cygwin gagal mengalokasikan ~ 5 MB besar memori untuk tumpukan di alamat tetap ini 0x68570000, sementara hanya lubang ~ 2,5 MB besar tampaknya tersedia di sana. Kode yang relevan dapat dilihat di sumber msysgit .
Mengapa bagian ruang alamat itu tidak gratis?
Mungkin ada banyak alasan. Dalam kasus saya itu adalah beberapa modul lain dimuat di alamat yang saling bertentangan:
Alamat terakhir adalah sekitar 0x68570000 + 5 MB = 0x68C50000, tetapi ada DLL terkait WOW64 yang dimuat dari 0x68810000 ke atas, yang memblokir alokasi.
Setiap kali ada beberapa DLL bersama, Windows secara umum mencoba memuatnya di alamat virtual yang sama di semua proses untuk menyimpan beberapa pemrosesan relokasi. Ini hanya masalah nasib buruk bahwa komponen sistem ini entah bagaimana dimuat pada alamat yang saling bertentangan kali ini .
Mengapa ada Cygwin di Git Anda?
Karena Git adalah rangkaian kaya yang terdiri dari beberapa perintah tingkat rendah dan banyak utilitas bermanfaat, dan sebagian besar dikembangkan pada sistem mirip Unix. Untuk dapat membangun dan menjalankannya tanpa penulisan ulang besar-besaran, diperlukan setidaknya sebagian seperti lingkungan Unix.
Untuk mencapai itu, orang-orang telah menemukan MinGW dan MSYS - satu set minimal alat membangun untuk mengembangkan program pada Windows dengan cara seperti Unix. MSYS juga berisi pustaka bersama, ini
msys-1.0.dll
, yang membantu dengan beberapa masalah kompatibilitas antara kedua platform selama runtime. Dan banyak bagian yang telah diambil dari Cygwin, karena seseorang sudah harus menyelesaikan masalah yang sama di sana.Jadi bukan Cygwin, itu DLL runtime MinGW yang berperilaku aneh di sini.
Di Cygwin, kode ini sebenarnya telah banyak berubah sejak apa yang ada di MSYS 1.0 - pesan komit terakhir untuk file itu mengatakan "Impor Cygwin 1.3.4", yang berasal dari tahun 2001!
Baik Cygwin saat ini dan versi baru MSYS - MSYS2 - sudah memiliki logika yang berbeda, yang diharapkan lebih kuat. Ini hanya versi lama dari Git untuk Windows yang masih dibangun menggunakan sistem MSYS lama yang rusak.
Solusi bersih:
Solusi peretasan:
PATH
kadang-kadang bisa berfungsi karena mungkin ada versi berbedamsys-1.0.dll
di versi Git yang berbeda atau aplikasi berbasis MSYS lainnya, yang mungkin menggunakan alamat yang berbeda, ukuran tumpukan yang berbeda, dll.msys-1.0.dll
mungkin buang-buang waktu, karena 1) menjadi DLL, sudah memiliki informasi relokasi dan 2) "dalam versi Windows OS tidak ada jaminan bahwa (...) DLL akan selalu memuat pada ruang alamat yang sama" lagi pula ( sumber ). Satu-satunya cara ini dapat membantu adalah jikamsys-1.0.dll
dirinya sendiri memuat pada alamat yang saling bertentangan yang kemudian ia coba gunakan. Kadang-kadang itulah yang terjadi, karena inilah yang dilakukan Git untuk Windows secara otomatis pada sistem 32-bit .msys-1.0.dll
biner untuk menggunakan nilai yang berbeda untuk_cygheap_start
dan yang segera menyelesaikan masalah.sumber
cmder/vendor/git-for-windows
direktori & mengganti nama folder lama menjadigit-for-windows-x86
. Jika Anda membukacmder/vendor/git-for-windows
, Anda akan melihat foldermingw32
, yang merupakan petunjuk Anda menggunakan 32bit. Di x64 Git, Anda akan melihat foldermingw64
.Sangat sederhana solusi rebase:
Buka folder tempat git diinstal, seperti:
Dengan menahan shift dan mengklik kanan di folder, Anda seharusnya dapat membuka command prompt sebagai administrator dari sana (terima kasih kepada https://stackoverflow.com/users/355389/darren-lewis untuk komentar itu),
Lalu lari:
Ini memperbaikinya bagi saya ketika pendekatan restart tidak berhasil.
Semoga ini bisa membantu.
sumber
Saya telah melihat pesan kesalahan yang sama setelah memutakhirkan ke git1.8.5.2:
Cukup lakukan pencarian untuk semua yang ada
msys-1.0.dll
diC:\
drive Anda , dan buat yang digunakan oleh Git menjadi yang utama.Misalnya, dalam kasus saya, saya hanya mengubah urutan:
Dengan membuat jalan Git
C:\prgs\git\PortableGit-1.8.5.2-preview20131230\bin\
menjadi yang utama di saya%PATH%
, pesan kesalahannya menghilang.Tidak perlu reboot atau bahkan mengubah sesi DOS.
Setelah
%PATH%
diperbarui dalam sesi DOS itu, perintah git hanya berfungsi.Perhatikan bahwa carmbrester dan Sixto Saez keduanya melaporkan di bawah ini (dalam komentar) harus reboot untuk memperbaiki masalah.
Catatan: Pertama, hapus juga
msys-1.0.dll
, seperti yang ada di%LOCALAPPDATA%
sumber
Jika reboot tidak memperbaiki masalah (seperti yang disarankan oleh jawaban Greg Hegwill) maka periksa PATH Anda untuk instalasi yang bertentangan dari msys-1.0.dll (dan mungkin juga DLL terkait lainnya).
Dalam situasi khusus saya, instalasi MinGW untuk msys memiliki salinan DLL dalam
bin
direktori (<MinGW_Install_Path>\msys\1.0\bin
), dan terdaftar di PATH.cmd
Direktori Git terdaftar di PATH, tetapibin
tidak. (Versi msys-1.0.dll Git ada dibin
direktori. Rupanya instalasi default MSys-Git tidak menambahkannyabin
ke PATH.)Perbaikan sementara adalah menambahkan
bin
direktori Git ke PATH sehingga muncul sebelum jalur MinGW. (Perbaikan yang lebih permanen kemungkinan akan melibatkan memilah konflik jalan antara msys MinGW dan Git dan / atau menghapus instalasi msys duplikat.)sumber
Hanya ingin berbagi pengalaman saya di sini. Saya menemukan masalah yang sama saat mengkompilasi silang untuk platform MTK pada mesin Windows 64 bit. MinGW dan MSYS terlibat dalam proses pembangunan dan masalah ini muncul. Saya menyelesaikannya dengan mengubah
msys-1.0.dll
file. Baikrebase.exe
reboot sistem tidak bekerja untuk saya.Karena tidak ada rebase.exe yang diinstal di komputer saya. Saya menginstal cygwin64 dan menggunakan bagian
rebase.exe
dalamnya:Meskipun rebasing terlihat berhasil, kesalahan tetap ada. Kemudian saya menjalankan
rebase
perintah di dalam terminal Cygwin64 dan mendapat kesalahan:Saya kemudian mencoba alamat pasangan tetapi tidak ada yang berhasil. Jadi saya akhirnya mengubah
msys-1.0.dll
file dan menyelesaikan masalah.sumber
Saya mengalami ini hari ini. Dipimpin oleh jawaban Greg Hewgill, saya melihat proses yang berjalan pada sistem saya untuk melihat apakah ada sesuatu yang "macet" atau jika pengguna lain masuk ke mesin melakukan sesuatu dengan git. Saya kemudian meluncurkan cygwin (diinstal secara terpisah) pada mesin khusus ini. Diluncurkan ok. Saya menutupnya dan kemudian mencoba Git Extensions lagi (saya mencoba operasi tarikan) dan berhasil. Tidak yakin apakah peluncuran cygwin membersihkan sesuatu yang dibagikan tetapi ini adalah pertama kalinya saya mengalami kesalahan ini dan ini sepertinya memperbaikinya untuk saya.
sumber
Saya memiliki masalah yang sama, setelah beberapa crash dan pembaruan Windows 8.0, pada msys git 1.9. Saya tidak menemukan msys / git di jalur saya, jadi saya hanya menambahkannya di pengaturan lingkungan windows-user local. Ini bekerja tanpa memulai ulang.
Pada dasarnya, mirip dengan RobertB, tapi saya tidak punya apa git / msys di jalan saya.
Btw:
Saya mencoba menggunakan rebase -b blablabla msys.dll, tetapi mengalami kesalahan "ReBaseImage (msys-1.0.dll) gagal dengan kesalahan terakhir = 6"
jika Anda memerlukan ini dengan cepat dan tidak memiliki waktu debugging, saya perhatikan "Git Bash.vbs" di direktori Git berhasil memulai bash shell.
sumber
c:\Program Files (x86)\Git\bin
ke jalur dan sekarang aku emas.Kesalahan ini sangat jarang terjadi pada mesin Windows saya. Saya akhirnya me-reboot mesin, dan kesalahan hilang.
sumber
Saya telah mengalami masalah ini dengan LPCEXpresso building.jika Anda memiliki C: \ MinGW \ bin di PATH. entah bagaimana saya harus menghapusnya untuk menyingkirkan masalah ini karena beberapa MinGW lain juga suka
sumber
Untuk memperbaiki masalah ini, saya cukup biarkan Tortoise Git menginstal pembaruannya.
sumber
c: \ msysgit \ bin> rebase.exe -b 0x50000000 msys-1.0.dll
sumber
Menghapus versi lama% USERPROFILE% \ AppData \ Local \ SourceTree \ app-xxx bekerja untuk saya. Tidak yakin bagaimana itu terhubung ke perintah ...
sumber