2012-07-10 72 views
15

由於前幾天,我每次在資源庫中啓動Git的圖形用戶界面,它會顯示這個可怕的錯誤消息,並退出我點擊確定後:的Git GUI崩潰每次打開倉庫時

prepare-commit-msg hook failed: 

     0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487 
AllocationBase 0x0, BaseAddress 0x68560000, RegionSize 0x260000, State 0x10000 
C:\Program Files (x86)\Git\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0 

You must correct the above errors before committing. 

它只是發生使用Git GUI,只有在存儲庫中(舊的或新創建的)。 Git Bash中的常用命令包括提交工作正常。

用較新的軟件包解除安裝和重新安裝(僅次要版本更改)並未消除此問題。它仍舊發生在舊版本庫以及新創建的版本庫中。

在一臺乾淨的機器上,這個問題沒有重現,所以我猜這是我盒子上的東西,但我不記得安裝任何有趣的東西。我記得在很長一段時間之後關掉我的盒子,所以也許有些Windows Update可能觸發了這個 - 這也解釋了爲什麼其他機器不會受到影響 - 這是自上次Win更新以來的2-3個月。

任何想法如何闡明這一點? (我只能看到它單獨的機器上,我不喜歡它提交給官方的跟蹤器之前,我知道這是不是我的/其他應用程序的故障......)


更新第一批意見後:

  • 如果您刪除或重命名的鉤子腳本,它的工作原理?

    夠搞怪,但鉤子腳本實際上根本不存在的所有(無鉤腳本 禮物 - 只有*。樣品文件git的\掛鉤)。甚至沒有在其他地方(GIT程序 目錄等)

  • 跟蹤,所以你知道它跑什麼命令 - 從混帳bash的運行git gui --trace

    可悲的是,這並不輸出任何東西到shell 。行爲是一樣的。

  • 也許會在那裏得到gdb。

    我試過了,但gdb沒有輸出任何有用的東西。但是,我沒有任何與GDB的經驗 ,我可能做錯了。我得到一個MinGW's gdb,從命令 以git.exe作爲參數運行它,然後運行run gui。 GDB沒有得到任何輸出 有趣:

    (gdb) run gui 
    Starting program: C:\Program Files (x86)\Git\bin\git.exe gu 
    [New Thread 8264.0x1ce4] 
    [New Thread 8264.0x394] 
    [Inferior 1 (process 8264) exited with code 01] 
    (gdb) 
    

    但我幾乎可以肯定,我做錯了,所以建議是多人歡迎:)

  • 確保你沒有cygwin的安裝或至少它不存在於你的 PATH所有

    我有cygwin的安裝(因爲我一直有,以前的git爆發)。從Cygwin我只有 路徑中有一些* .bat發射器和一些* .dll文件,但我已與 檢查ProcMon,它不會觸及它們,即使我將它們從路徑中刪除,我仍然得到 同樣的崩潰。

+1

如果您刪除或重命名鉤子腳本的人,它的工作原理? '.git/hooks/prepare-commit-msg' – fork0 2012-07-10 18:41:07

+2

跟蹤它,讓你知道它運行的命令 - 從git-bash運行'git gui --trace'。當它運行prepare-commit-hook時,它會發出它運行的命令,你可以查看該命令以獲得進一步的調試信息。也許會在那裏得到gdb。它抱怨cygwin的堆是可疑的。確保你沒有安裝cygwin,或者至少它沒有安裝在你的PATH中。 cygwin和msys不會混用。 – patthoyts 2012-07-10 21:37:04

+0

@patthoyts,fork0感謝指針,更新了Q並附有回覆 – 2012-07-11 09:41:50

回答

3

在Windows更新和操作系統重新啓動後,問題消失。

它似乎是一個更新引入了一個在另一個修復的錯誤。或者它可能是一個「月相」錯誤。

我想我們永遠也不會知道......

2

我是一個Win64的機器上安裝1.8.0後,得到同樣的問題。我通過刪除1.8.0和安裝1.7.11

+0

不幸的是,OP沒有指定版本,所以我們無法將他的報告與您的案例進行比較。 – 2013-06-20 11:10:34

9

我有這個問題,以及解決問題

我已經與

http://support.code-red-tech.com/CodeRedWiki/VirtualAllocPointerNull

顯然,這是造成解決它一些功能,並更換DLL修復它對於大多數人來說

的情況下,該網站是下跌 -


虛擬分配指針爲空

極少數情況下,運行make可能會導致類似這樣的錯誤:

0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487 
AllocationBase 0x0, BaseAddress 0x71110000, RegionSize 0x350000, State 0x10000 
\msys\bin\make.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0 

這是影響客戶的極少數的問題,並取決於他們正在同時運行哪些其他應用程序。

這是由我們用來爲產品提供構建環境的MSYS二進制文件中的一項功能引起的。

如果發生這種情況,您可以用附件zipfile中的文件替換文件 \ msys \ bin \ msys-1.0.dll 。 msys-1.0.zip

請注意,這並不解決問題,而是它移動DLL基地址。 不幸的是,這個替換DLL也可能會出現錯誤,這取決於其他應用程序的運行情況。


+1

工作就像一個魅力! – sepehr 2013-08-29 02:26:59

+1

它工作!謝啦! – 2013-09-06 07:44:34

+0

也許是實際問題的一個線索,關閉並重新啓用cli使這個問題對我而言消失。它只發生在長時間正確工作之後。就我而言,我有兩個遙控器,提供不同數量的提交。如果它再次發生,將會替換該dll。謝謝 – isimmons 2013-12-31 19:56:05

3

我也遇到過這種情況,這是因爲MacType干擾了bash.exe和msys1.0.dll。 (MacType是一種用於Windows的字體平滑程序,它嘗試模擬OS-X樣式字體柵格化。)僅在我需要的程序上啓用MacType,而不是在試圖加載bash.exe的Console2窗口中修復問題。

也許這將幫助別人修復錯誤。

1

只需在您的C:\驅動器上搜索所有msys-1.0.dll,然後使Git使用的驅動器名列前茅。

就我而言,我只是改變了順序:

C:\prgs\Gow\Gow-0.7.0\bin\msys-1.0.dll 
C:\prgs\git\PortableGit-1.8.5.2-preview20131230\bin\msys-1.0.dll 

通過使Git的路徑C:\prgs\git\PortableGit-1.8.5.2-preview20131230\bin\來先在我%PATH%,該錯誤信息消失了!

無需重新啓動或甚至更改DOS會話。
在該DOS會話中更新%PATH%後,git命令正常工作。

10

這對我有效。

http://www.trinitycore.org/f/topic/5194-msysgit-couldnt-reserve-space-for-cygwins-heap/

解決方案:

更改msysgit.dll

c:\msysgit\bin>rebase.exe -b 0x50000000 msys-1.0.dll

+0

適合我,Windows 7 64bit,git 1.9.4 – jasonslyvia 2014-08-24 14:02:01

+0

我不知道底座是什麼與dll(感覺像DLL本身是在源代碼控制下,如果需要rebasing)但我不在乎。它的工作原理:) – 2015-07-29 20:55:13

+0

適用於Windows 10破損的GitHub桌面客戶端 – 2015-11-03 17:22:10

3

我有同樣的問題的基址。這爲我工作的解決方案是幾乎一樣的一個建議的XandrGuard

c:\msysgit\bin>rebase.exe -b 0x50000000 msys-1.0.dll 

的解決方案是在這裏http://jakob.engbloms.se/archives/1403

對我解釋解決方案略有不同。這是

C:\Program Files (x86)\Git\bin>rebase.exe -b 0x50000000 msys-1.0.dll 

希望它可以幫助誰試圖谷歌這個問題

+0

這個解決方案最適合我,因爲它直接指向Git GUI應用程序 – JPeroutek 2016-05-31 12:00:26

+0

雖然第一次嘗試失敗,但它工作正常: 'ReBaseImage(msys-1.0.dll)失敗,最後一個錯誤= 2' 重新運行它從一個命令提示符作爲管理員做的伎倆。 – df778899 2016-06-11 16:17:58