16

数日前から、リポジトリでGit GUIを起動するたびに、この恐ろしいエラーメッセージが表示され、[OK]をクリックすると終了します。

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でのみ発生し、リポジトリ(古いまたは新しく作成されたもの)にある場合にのみ発生します。commitを含むGitBashの一般的なコマンドは正常に機能します。

新しいパッケージ(マイナーバージョンの変更のみ)をアンインストールして再インストールしても、問題は解決しませんでした。これは、古いリポジトリでも、新しく作成されたリポジトリでも発生します。

きれいなマシンではこの問題は再現されないので、私の箱にあるものだと思いますが、面白いものをインストールしたことを覚えていません。久しぶりにボックスの電源を切ったことを覚えているので、Windows Updateがこれをトリガーした可能性があります。これは、他のマシンが影響を受けない理由も説明します。前回のWin Updateから2〜3か月です。

これに光を当てる方法はありますか?(1台のマシンでしか見ることができないので、自分や他のアプリのせいではないことがわかる前に、公式トラッカーに送信する気はありません...)


最初のコメントの後に更新:

  • フックスクリプトを削除または名前変更した場合、それは機能しますか?

    おかしなことに、フックスクリプトは実際にはまったく存在しません(フックスクリプトは存在しません。.git\hooksには*.sampleファイルしかありません)。他の場所でもありません(git program dirなど)

  • トレースして、実行したコマンドを確認します-git-bashrunからgit gui --trace

    残念ながら、これはシェルに何も出力しません。動作は同じです。

  • たぶんそこにgdbを入れてください。

    試しましたが、gdbは有用なものを何も出力しませんでした。ただし、GDBの使用経験はありません。おそらく、間違っていると思います。MinGWの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でそれらに触れないことを確認しました。パスからそれらを削除しても、同じクラッシュが発生します。

4

7 に答える 7

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

于 2014-04-07T10:45:55.930 に答える
9

私もこの問題を抱えています

私はそれを解決しました

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

どうやらこれはいくつかの機能が原因であり、dllを置き換えるとほとんどの人にとってそれが修正されます

ウェブサイトがダウンした場合-


仮想割り当てポインタがnullです

ごくまれに、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バイナリの機能が原因で発生します。

この場合、ファイル\ msys \ bin\msys-1.0.dllを添付のzipファイル内のファイルに置き換えることができます。msys-1.0.zip

これは問題を修正するのではなく、DLLベースアドレスを移動することに注意してください。残念ながら、実行中の他のアプリケーションによっては、この置換DLLでもエラーが発生する可能性があります。


于 2013-05-20T17:13:59.647 に答える
3

別のWindowsUpdateとOSの再起動後、問題は解消されました。

アップデートの1つでバグが発生し、別のバグで修正されたようです。または、「月の満ち欠け」のバグである可能性があります。

私たちは決して知らないと思います...

于 2012-07-12T08:41:10.603 に答える
3

私もこれに遭遇しました、そしてそれはMacTypeがbash.exeとmsys1.0.dllに干渉していたからでした。(MacTypeは、OS-XスタイルのフォントラスタライズをエミュレートしようとするWindows用のフォントスムージングプログラムです。)bash.exeを読み込もうとしたConsole2ウィンドウではなく、必要なプログラムでのみMacTypeを有効にすると、問題が修正されました。

多分それは他の誰かがエラーを修正するのを助けるでしょう。

于 2013-11-04T16:48:47.090 に答える
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

それが問題をグーグルしようとしている人々に役立つことを願っています

于 2014-06-25T10:28:34.887 に答える
2

Win64マシンに1.8.0をインストールした後、これと同じ問題が発生していました。1.8.0を削除して1.7.11をインストールすることで問題を解決しました

于 2013-01-21T12:38:14.763 に答える
1

msys-1.0.dllドライブ上のすべてを検索しC:\、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セッションを変更したりする必要はありません。
その%PATH%DOSセッションでが更新されると、gitコマンドは正常に機能します。


補足、gdbに関して:

Git 2.25.2(2020年3月)では、より優れたgdbデバッグエクスペリエンスが追加されます。

Johannes Schindelin()によるcommit 08809c0(2020年2月13日)を参照してください。( Junio C Hamanoによってマージされました---コミットe154451、2020年2月17日dscho
gitster

mingw:GDBを現在のプロセスにアタッチするヘルパー関数を追加します

サインオフ-作成者:Johannes Schindelin

git.exeGitをデバッグする場合、特にUnixシェルスクリプトがsegfaultsを呼び出すミックスでスローされた場合、プロセスのクロススポーンによって事態がかなり困難になる可能性があります。

このようなことをデバッグするのに役立つようopen_in_gdb()に、セグメンテーション違反が発生する(または可能な限り近い)コードの場所で呼び出すことができる関数を紹介します。これにより、現在のプロセスにすでに接続されているGDBを含む新しいMinTTYウィンドウが開きます。

デリック・ストリーに触発されました。

次に、新しい関数open_in_gdb()にコメントがあります。

/*
 * For debugging: if a problem occurs, say, in a Git process that is spawned
 * from another Git process which in turn is spawned from yet another Git
 * process, it can be quite daunting to figure out what is going on.
 *
 * Call this function to open a new MinTTY (this assumes you are in Git for
 * Windows' SDK) with a GDB that attaches to the current process right away.
 */
于 2014-01-03T16:09:14.553 に答える