1

同じタイプのエラー メッセージが何度も表示されますが、それらを取り除くためにできることはすべて実行しました。メッセージは次のとおりです。モジュールのみが時々変化する可能性があります。

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

これらのメッセージは、「rails console」など、Rails を実行しようとするとさまざまなタイミングで表示されます。次の環境を実行しています。

  • Windows 7 アルティメット 64 ビット
  • セットアップ 2.774 を使用する Cygwin Net (インターネット ミラーからインストール)
  • ルビー 1.9.3p392
  • レール 3.2.11

これを修正するために、次の手順を実行しました。

  • Norton 360 と Malwarebytes を含むすべての BLODA を削除し、再起動しました。(BLODA は危険なアプリのビッグ リストです。)
  • Cygwinを削除して再インストールしました。
  • 「rvm implode」を実行し、RVM と Ruby on Rails の環境を再構築しました。
  • CMD と ASH を使用して「peflagsall」と「rebaseall」を実行しました。「rubyrebase」を実行しました。再起動しました。
  • FIND を使用して、すべての *.so および *.dll ファイルのファイルを作成しました。「rebase -T」を実行しました。再起動しました。これは、「-b 0x77000000」スイッチを使用して行われました。
  • 同じファイルを使用して、個々のファイルに対して peflags を発行する「to_peflags」スクリプトを作成しました。再起動しました。

すべての修復の試みは無駄でした。場合によっては、「rebase -si |grep '*'」でクリーンになることもあります。「rails console」または同様のコマンドを実行しようとすると、Address Space Occupied メッセージが表示されます。後続の「rebase -si」は、再び競合を示します。Ruby モジュールに対して「peflags」を実行しようとしましたが、「skiped because could not open」というエラー メッセージしか表示されません。ファイルのアクセス許可と ACL の両方が正しいアクセス許可を示しています。Administrator を使用するかどうかに関係なく、同じエラーが発生します。

これはかなりイライラします。現在の環境を改善したいのですが、MSYS または SFU への移行を検討していますが、どちらが適切なオプションかわかりません。ネイティブ UNIX への移行も検討していますが、到達したら崖から飛び降ります。

今のところ、この特定のエラーを修正してくれる人はいますか? ありがとう…

4

1 に答える 1

0

「rails console」の実行を監視するために procexp を使用しました。Bash は cmd.exe を呼び出して rails.bat ファイルを実行しています。Cmd.exe は ASLR モードで実行されます。Microsoft EMET 3.0 を使用して、必須の ASLR をオフにし、bash と cmd の両方でボトムアップ ASLR をオフにしました。Cmd.exe は引き続き ASLR モードで実行されます。そのようにコンパイルする必要があります。

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\MoveImages を 0、-1、1 に設定するようにレジストリを更新しました。0 はシステムの問題を引き起こしました。-1 は効果がありませんでした。デフォルトであるはずの 1 は、EMET の変更が行われている限り、いくらか役に立ちました。しかし、Address Space Occupied が最終的に再発するため、信頼性がありませんでした。

ASLR を必要としないか、PE フラグを使用して無効にできるコマンド プロセッサのインストールを試みることにしました。TCC/LE をインストールし、Cygwin Bash を使用して .bat ファイルを処理しようとしました。path 変数、COMSPEC 変数、およびレジストリの batfile と cmdfile への変更を使用してみましたが、すべて効果がありませんでした。Cygwin Bash は、ハードコードされているか、何らかの非自明な制御を備えている必要があります。

私の修正は、私の環境を置き換えることです。最終的に一部の Unix に移行することはわかっていますが、今のところ、MinGW/MSYS と RubyStack に移行しています。私がやりたいことは、今日のために安定した RoR (Ruby on Rails) 環境を稼働させることだけです。Windows 7 Ultimate で Cygwin を使用すると、そのようなことが起こるとは思いません。私はあまりにも多くの問題に遭遇し続けていますが、これは非常に難しい問題です。ありがとう…</p>

于 2013-04-02T18:21:08.957 に答える