web-dev-qa-db-ja.com

Cygwin / Gitエラーcygheapベースの不一致が検出されました

最新バージョンのcygwinとgitを使用して2つのWindowsサーバーをインストールし、S1からS2にgitリポジトリを複製しようとしています。 RSAキーを使用してS2からS1に正常にsshできますが、これを行うと:git clone "ssh:// root @ S1/path/to/my/repo"この出力がスローされます。

    Cloning into /cygdrive/c/program files/Apache software foundation/Apache2.2/htdocs/myfolder...
    2 [main] git 2004 C:/cygwin/lib/git-core/git.exe *** fatal error - cygheap base mismatch detected - 0x61242860/0x6123790.
This problem is probably due to using incompatible versions of the cygwin DLL.
Search fro cygwin1.dll using the WIndows Start->Find/Search facility and delete all bu the most recent version.  The most recent version *should* reside in x:\cygwin\bin, where 'x' is the drive on which you have installed the cygwin distrubtion. Rebooting is also suggested if you are unable to find another cygwin DLL.  

--5 more errors like that one --

remote: Counting objects: 3275, done.
remote: Compressing oobjects: 100% (3106/3106), done.
fatal: write error: Broken pipe

だから私はこれらの指示に従ったが、運はなかった。助言がありますか?

48
John Zumbrum

同じ問題がありました。

私はただ再起動私のPCであり、それは再び働いた。

問題の理由を見つけることは助けにはなりませんが、少なくとも作業を続けることができます。

50

編集:私は解決策を見つけました。

TL; DR:GitHub AppDataフォルダーに移動してPortableGitフォルダーを削除し、GitHubを再起動します

  1. GitHubを閉じます
  2. GitHub AppDataフォルダーに移動します:C:\Users\[username]\AppData\Local\GitHub
  3. PortableGitで始まり、文字と数字のランダムな文字列で終わるフォルダーを削除します
  4. GitHubを再起動します。 DLLを再抽出し、問題を修正する必要があります!

(元の「答え」) 私はたくさんのことを試しましたが、実際に何が実際に機能したのか分かりません。 GitHubを再起動し、コンピューターを再起動し、GitHubをアンインストールして再インストールし、最近インストールしたが不要になった他のプログラムをいくつかアンインストールし、AppData\LocalディレクトリのGitHubフォルダーを削除し、cygwinをダウンロードしてインストールしました忘れるよ。

最後の試みは、ファイルエクスプローラーですべてのcygwin1.dllファイルを検索し、それらの名前をcygwin1x.dllに変更してからコンピューターを再起動することでした。それを行った後、再び機能しました。

私はここで推測を危険にさらしていますが、cygwinをダウンロードしてインストールするに、そして私のコンピューターを再起動するがトリックをしたと言います。

24

Cygwin、GitHubはありません

私は最近これを経験し始めたばかりで、上記の回答は私のケースに当てはまりませんでした-CygwinまたはGitHubがインストールされていませんでした。

代わりに、私の場合、Windowsセキュリティ機能、アドレススペースレイアウトランダム化またはASLRがこの問題を作成しました。これは、互換性があるとマークされていないプログラムではデフォルトでオフになっています。
ただし、安全性を高めるために、すべてのプログラムでASLRを有効にしました。欠点は、gitコマンドが現在機能しないことです。

溶液

解決策はgit実行可能ファイルのASLRを除外することでした。それらの多くが存在するため、PowerShellをadministratorとして使用する必要がありました。

Get-Item -Path "C:\Program Files\Git\usr\bin\*.exe" | %{ Set-ProcessMitigation -Name $_.Name -Disable ForceRelocateImages }
22
White hawk

あなたはあなたの問題の声明でこれに言及していませんが、私はあなたが64ビットバージョンのWindowsで走っていると推測しています。 Cygwinには、特に大きなプログラムの場合、64ビットWindowsでの実行に問題があります。これは、cygwin1.dllサポートライブラリ内のメモリ管理の問題によるものだと思います。永久に、すべてのプロセスで常に同じアドレスにマッピングされるというサポート不可能な仮定を立てているように見えるため、システム全体のグローバル変数にプロセス固有のもの(ヒープアドレスなど)を保持してもかまいません。

豊富な空き時間に、問題のある部分を突き止めようとしてきました。それまでの間、cygwin1.dll自体をリベースしてみてください。注意してください、それは必要以上に複雑で、他のすべてをリベースするよりもさらに複雑です。

10
Jim Schneider

私にとって、原因は、git-scmからの定期的なダウンロードではありますが、cygwinを介してgitがインストールされなかったためです。 cygwinセットアップを実行してgitを追加すると、完全に機能しました。

9
Geoff Lentsch

他のコマンドでこのエラーが発生しますか? git --version

Cygwinを再実行してくださいsetup.exeおよびcygwin1.dll(パッケージは "Base"の下の "cygwin")およびgitパッケージ( "Devel"の下のパッケージ "git")および再起動。

5
Keith Thompson

私はこれが古いスレッドであることを知っていますが、この問題の最初の結果であるため、他の誰かの助けになることを期待して解決策を追加したいと思います。

ファーストラン cygcheck PROGRAMM、私の場合、tar.exeだから私は走った:cygcheck tarcygcheckコマンドは、使用されているDLLを示します。

cygcheckですべてが正しく見えたので、ジムシュナイダーのコメントに基づいて、Cygwinの64ビットバージョンから32ビットバージョンに切り替えて、最終的に問題を解決することにしました。

私の場合、コンピューターの再起動は機能しませんでした。

Msysのインストール(コマンドラインのgitユーティリティをインストールしたときにインストール)の競合が原因であることがようやくわかりました。システムパスにMsysのバージョンのディレクトリが含まれている場合は、そのようなパスエントリを削除して再試行してください。 cygwinがMsysインストールから実行可能ファイルを実行しようとし、.dllが不一致を検出したようです。

0
Jorge Torres

#!/ bin/shで始まるスクリプトを使用してVisual Studio 2017からgitリポジトリにプッシュしようとすると、同じ種類のエラーが発生しました

[repo folder]\.git\hooks\commit-msg

エラーメッセージ :

1 [main] sh (11460) c:\program files (x86)\Microsoft visual studio\2017\enterprise\common7\ide\commonextensions\Microsoft\teamfoundation\team Explorer\Git\usr\bin\sh.exe:
 *** fatal error - cygheap base mismatch detected - 0x14DD408/0x12AD408.This problem is probably due to using incompatible versions of the cygwin DLL.
Search for cygwin1.dll using the Windows Start->Find/Search facilityand delete all but the most recent version.
The most recent version *should*reside in x:\cygwin\bin, where 'x' is the drive on which you haveinstalled the cygwin distribution.
Rebooting is also suggested if youare unable to find another cygwin DLL.      

成功せずに上記のさまざまなソリューションを試しました

この問題を解決するために私がしたことは、コンテンツのコピー元です:

C:\Program Files\Git\usr\bin

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\usr\bin

コンピューターの問題はsh.exeのバージョンの不一致に起因し、これらのファイルをコピーすると問題が解決しました

0
Xavave

私にとって問題は、古いC:\ cygwin64フォルダーの存在でした。このフォルダの名前を変更するだけでは不十分でした。このフォルダを削除すると、問題はなくなりました。 C:\ cygwin64フォルダーを削除した後、再起動する必要もありませんでした。

0
Farrukh Najmi

私の場合、環境変数のPATHが間違っていました。 cygwinをパスの少し前に移動しました(gitパスの前に設定されていることを確認します)。そのように、cygwin dllはgit dllを支持していました。

例えば; C:\Program Files\Git\usr\bin;C:\cygwin\bin;...のパスはC:\cygwin\bin;C:\Program Filenter code herees\Git\usr\bin;...に変更されました

環境はWin7x86であり、更新されたパスを使用するには再起動が必要でした。

0
posix99

この問題は、Windows Defenderを一時的に無効にしてから再試行することで解決しました。詳細については、 https://superuser.com/a/1047031/15824 を参照してください。

0
Bink