web-dev-qa-db-ja.com

Cygwinエラー:「-bash:fork:retry:リソースが一時的に利用できません」

最近、私はコンピューターにCygwinを再インストールして、欠落していたいくつかのコマンドライン要素にアクセスできるようにしました。 Cygwinでこれまで問題があったことはありませんが、この再インストール後、(ほぼ)各コマンドを入力した後、エラーメッセージが表示され続けます。例えば:

-bash-4.1$ wc m1.txt
      3 [main] bash 2216 child_info_fork::abort: data segment start: parent(0x26D000) !=     child(0x38D000)
-bash: fork: retry: Resource temporarily unavailable
2013930  4027950 74968256 m1.txt

通常、コマンドは引き続き実行されます(上記参照)が、常にではありません。時折、「エラー」メッセージが数回連続して発生します(最初の番号「3」は、特に2番目のCygwinウィンドウを起動すると、「4」または「2」に変わります。

また、Cygwinを起動するとすぐに、プロンプトの前に次のメッセージが表示されます。

      3 [main] bash 6140 child_info_fork::abort: data segment start: parent(0x26D000)     != child(0x36D000)
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable
-bash-4.1$

現時点では、Cygwinを再度アンインストール/再インストールするか、エラーメッセージをそのまま表示するかを議論していますが、気付いていない問題があるのではないかと思いました。

65
David C

(CygwinがC:\ Cygwinにインストールされていると仮定):

  1. タスクマネージャーを開き、Cygwinに関連していると思われるプロセスを閉じます。
  2. WindowsエクスプローラーでC:\ Cygwin\binを開きます
  3. Dash.exe、ash.exe、rebase.exe、およびrebaseallがこのフォルダーに存在することを確認します
    • それらのいずれかが欠落している場合は、Cygwinセットアップを再実行し、ダッシュ、アッシュ、リベースパッケージを選択します
  4. c:\ Cygwinフォルダーを右クリックし、読み取り専用(チェックされている場合)のチェックを外して、OKを押します。
    • 一部のファイルを切り替えられないというエラーが表示されたら、「すべて無視」を選択します。このプロセスが完了するまで待ちます。
  5. WindowsエクスプローラーでC:\ Cygwin\binを参照します
  6. Dash.exeを右クリックし、「管理者として実行」をクリックします。コマンドプロンプトは$のみで表示されるはずです
  7. /usr/bin/rebaseall -vと入力してEnterキーを押し、プロセスが完了するまで待ちます。
    • 実行中のCygwinプロセスに関するエラーが発生した場合は、ステップ1をもう一度試してください。それでも解決しない場合は、コンピューターをセーフモードで再起動し、これらの手順をもう一度試してください。
    • コメント者は、設定によっては、代わりにcd /usr/bin && ./rebaseall -vと入力する必要がある場合があると指摘しました。
  8. Cygwinをもう一度開いてみてください。

このプロセスはうまくいきました。皆さんにもお役に立てば幸いです。

ソース: http://cygwin.wikia.com/wiki/Rebaseall

118
Cody S

Cygwinを再インストールした後に行う必要があるため、上記の回答に次を追加したいと思います。

「/ usr/bin」ディレクトリ(通常はC:\ cygwin\bin)に移動し、管理者としてファイルを右クリックして実行します。dash.exe次に、$プロンプトで次を入力し、各行の後にEnterキーを押します。

cd /usr/bin/
/usr/bin/peflags * -d 1
/usr/bin/rebaseall -v

それは、dllを「リベース可能」としてマークし、リベースします。上記のファイル(以前の回答)に加えて、peflags.exeが必要です。これを行った後、ウィンドウを再起動する必要があり、実行中のcygwinに属するプロセスやサービスがないことを確実に確認する必要があります。 (タスクマネージャーを使用し、関連するプロセスを強制終了し、[サービス]タブでCYGで始まるサービスを探して停止します。)

これを行った後、間違ったアドレスにdllがロードされているというエラーもなく別名フォークエラーなどでcygwinを実行することができました.

見つけるのが苦痛だったので、これが他の人を助けることを願っています。

SOURCE: http://www.cygwin.com/faq.html#faq.using.fixing-fork-failures 
and the rebase README file.
13
Michieal

ここで他の回答に追加するために、同じ問題に遭遇しましたが、アッシュまたはダッシュシェルからrebaseコマンドを実行できませんでした。ただし、Windows cmdシェルからコマンドを起動すると、次のように機能しました。

cmd /c "C:\cygwin64\bin\ash.exe /usr/rebaseall -v"

-vは詳細な出力を取得します

5
timato

私はここで別の情報を見つけました: http://cygwin.com/ml/cygwin/2014-02/msg00531.html /etc/rebase.db*のデータベースを削除し、 "ash" windows:peflags * -d 1 rebaseall 2台のサーバーで動作します。

3
Charly

コンピューターを再起動することでこの問題を解決しました。おそらくドライバーの更新プログラムをインストールし、シャットダウンする代わりにスリープを使用し続けました。

2
Matt Bond

BabunのCygwinを使用している場合、rebaseallの後、Windowsコマンドプロンプトまたはエクスプローラーで.babun\cygwin\cygwin.batを実行してCygwinを起動してみてください。

これは私のために機能します(babunのデフォルトコンソールを起動している間-minttyはフォークエラーになります)。

1
songuke

Cygiwin-2.dllフォークでCygwinをロードし、Cygwinターミナルで正常にロードしないときに同じ問題が発生しましたが、AntiVirus(特にAd-aware)をオフにした後、問題は解決し、Cygwinは正常に動作しました。

1

私の場合、Rebaseingは役に立ちませんでした。他の人が提案したことに加えて、PATH環境変数の長さを減らすことで私(および他の人だけでなく this answerからわかるように)の問題が修正されたことに気付きました。

0
yugr

この問題は本質的に断続的であり、AWSのリモートマシンに接続するにはネットワークが遅すぎるときにこの問題を発見しました。 ..ほとんどの場合、正しく実行されましたが、この問題が発生するのは100回2回です。bash:fork:retry:リソースが一時的に利用できません ....この問題について...マイナス面は、最初からスクリプトを実行する必要があることです...

0
Abhishek Jain

Win10でエラーが発生し、インストール前にc:にリベースしようとしました。その後、インストーラが代わりにc:/ Users/myuserにインストールしているのを見たので、c:/ Users/myuserからc:.badunにすべてのファイルをコピーしてから、再起動してbadun.batを開きました

これが賢明だった場合、XDが複製されたのかどうかはわかりませんが...

0
pachermann