2013-04-01 15 views
1

我不斷收到相同類型的錯誤消息,並且我盡我所能去除它們。該消息是如下,只有模塊可以在時間變化:試圖運行Rails時,如「軌道控制檯」在不同的時間發生使用Cygwin和Ruby解決地址空間已被佔用錯誤

ruby 5740 child_info_fork::abort: address space needed by 'date_core.so' (0x600000) is already occupied 

這些消息。 我運行以下環境:

  • Windows 7旗艦版64位
  • Cygwin網絡使用設置2.774(來自互聯網鏡子安裝)
  • 紅寶石1.9.3p392
  • 的Rails 3.2.11

我已試圖解決這個問題的步驟如下:

  • 刪除所有BLODA並重新啓動,包括Norton 360和Malwarebytes。 (BLODA是Dodgy Apps的大名單。)
  • 刪除並重新安裝Cygwin。
  • 執行「rvm implode」並重建RVM和Ruby on Rails環境。
  • 使用CMD & ASH運行「peflagsall」&「rebaseall」。 Ran「rubyrebase」。重新啓動。
  • 使用FIND構建所有* .so & * .dll文件的文件。 Ran「rebase -T」。重新啓動。這也使用「-b 0x77000000」開關完成。
  • 使用相同的文件創建針對每個單獨文件發出peflags的「to_peflags」腳本。重新啓動。

所有修理嘗試都是徒勞的。有時候,「rebase -si | grep'*'」會很乾淨。任何試圖運行「rails console」或類似命令的嘗試都會導致地址空間佔用的消息。隨後的「rebase -si」會再次顯示衝突。 我一直在試圖對Ruby模塊運行「peflags」,但是我只在那裏「跳過因爲無法打開」的錯誤消息。文件權限和ACL都顯示正確的權限。無論是否使用管理員,都會發生相同的錯誤。

這很令人沮喪。我想修復當前的環境,但我正在考慮轉向MSYS或SFU,但我不知道這兩種方案是否都是不錯的選擇。我也在考慮使用本地UNIX,但當我接觸到它時,我會跳下懸崖。

現在,有沒有人爲我解決這個特定的錯誤?謝謝...

回答

0

我已經用procexp來監視「rails console」的執行。 Bash調用cmd.exe來運行rails.bat文件。 Cmd.exe以ASLR模式運行。使用Microsoft EMET 3.0爲bash和cmd關閉強制ASLR和自底向上ASLR。 Cmd.exe仍然以ASLR模式運行。它必須以這種方式進行編譯。

已更新註冊表以將HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Memory Management \ MoveImages設置爲0,然後1. 0導致系統問題。 -1沒有效果。 1,這應該是默認的,只要EMET改變到位,就會有所幫助。但是,地址空間佔用最終會再次發生,這是不可靠的。

決定試圖安裝一個命令處理器,它不需要ASLR或允許我使用PE標誌禁用它。我安裝了TCC/LE並試圖讓Cygwin Bash使用它來處理.bat文件。我嘗試使用路徑變量,COMSPEC變量以及在註冊表中更改爲batfile和cmdfile都無效。 Cygwin Bash必須讓它硬編碼或一些不明顯的控制。

我的修復是取代我的環境。我知道我最終會遷移到一些Unix,但現在我轉換到MinGW/MSYS和RubyStack。我所要做的就是爲今天運行一個穩定的RoR(Ruby on Rails)環境。我沒有看到使用Cygwin與Windows 7旗艦版發生的事情。我一直遇到太多問題,這是一個非常非常艱難的突破。謝謝...

+0

到目前爲止,我必須強烈推薦MSYS和RubyStack。一天之後,我整個環境都能正常運轉,沒有任何問題。對於我至少在做的事情,這比Cygwin解決方案的體驗要好得多。 –

+0

MSYS/MinGW變得不必要和重要。我單獨使用RubyStack。 RVM缺少,因爲它僅限於UNIX,所以我使用的是PIK,它是Windows的替代品。這裏唯一可能的是,我不會有UNIX編譯/鏈接環境,但是對於RubyStack來說,這似乎不成問題。如果它成爲問題,我將需要再次查看MSYS。 –

相關問題