2012-03-29 63 views
5

我收到以下錯誤用make(我有cygwin.dll)編譯運8,cygwin的堆故障

*** Couldn't reserve space for cygwin's heap (0x150000) in child, cygheap, Win32 error 0 
      0 [main] make 4336 sync_with_child: child 2968(0x120) died before initialization with status code 0x1 
     308 [main] make 4336 sync_with_child: *** child state waiting for longjmp 

怎麼可能解決呢? 感謝

+0

編譯哪個程序?你好,世界? – karlphillip 2012-03-29 20:24:42

+1

沒有,爲什麼它很重要?我有一個makefile,它在win7上工作正常。 – Yakov 2012-03-29 20:29:45

+0

如果不重要,我不會問這個問題。我試圖確定這是一個隨機問題,還是一直髮生的事情,以及它是否可以用盡可能小的應用程序重現。你是否告訴我編譯Hello World應用程序不會觸發這個錯誤?你測試過了嗎? – karlphillip 2012-03-29 20:38:47

回答

7
  • 重新引導系統:

大多數用戶抱怨這個問題,報告說,它在重新啓動後消失。如果您使用Windows 7,請查看BerndP的消息this thread,它提供了一些與調整Windows上的虛擬內存設置有關的提示。

  • 可能是一些軟件Cygwin的干擾:

This post帶來的使用Cygwin隨機問題,一個有趣的討論。 BLODA list列出了已知會導致Cygwin出現奇怪故障和問題的應用程序列表。

編輯

的Windows 8尚未正式發佈,所以don't expect Cygwin to work on it

Cygwin可以運行在所有現代32位版本的Windows上這包括,在編寫本文時,Windows 2000,Windows XP,Windows Server 2003,Windows Vista,Windows Server 2008,Windows 7以及發佈的64位Windows版本(XP/2003/Vista/2008/7/2008 R2)上的WOW64 32位環境。

+1

是的,重新啓動解決了我的Windows 8機器上的這個問題。我安裝了16Gb的內存,並且可能與我的虛擬內存設置不同步... – 2013-07-15 09:38:54

+1

即使在Windows 8.1 64位計算機上使用32GB內存,重新啓動也無濟於事。雖然rebase修復工作。 – simich 2014-08-09 13:24:48

1

我正在使用eclipse,並在Windows 8上使用MinGW + Yagarto。重新啓動時什麼也沒做。

我解決了這個問題,擴展了我的虛擬內存,最初設置爲896Mb,並且不在3000Mb並且工作正常。

12

我剛剛遇到了這個問題,並建議重新綁定msys-1.0.dll導致問題。

具體來說,我用ReBase.exe工具:

C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\x64\ReBase.Exe 

這是微軟的平臺SDK available here的V7.1(也許還有其他版本)的一部分。

採取的dll的備份,然後嘗試在平臺SDK命令提示符中以下命令行:

rebase -b 0x30000000 /path/to/msys-1.0.dll 

解決這個問題對我來說。

感興趣,我推薦的虛擬內存設置設置爲3GB左右,實際分配的虛擬內存爲6GB。

+0

這對我來說訣竅。非常感謝。 – ereOn 2013-09-13 06:44:29

+1

在我最終決定嘗試重設修復之前,我曾經遇到這個問題很長一段時間。儘管我沒有完全理解rebase地址的意義,但它起到了很好的作用。我在Windows 8.1 64位上輸入了另一個。我使用了git自己的rebase,因爲我沒有安裝Cygwin或類似軟件。僅供參考,這裏是我閱讀有關修復的地方:http://jakob.engbloms.se/archives/1403。 – simich 2014-08-09 13:22:50

0

這個問題可以通過改變gcc的兼容模式來解決。exe文件(或任何通過make調用)到Windows XP中(屬性 - >兼容性) 但是,腳本必須以管理員身份執行,以免在調用gcc.exe時多次確認。