web-dev-qa-db-ja.com

macOS Sierraでgit-guiコマンドがクラッシュする

MacOS Sierraへの更新後、git-guiコマンドはエラーでクラッシュします:

 Wish [23862:202062] ***キャッチされていない例外 'CALayerInvalidGeometry'によるアプリの終了、理由: 'CALayer position contains NaN:[0 nan]' 
 *** first throw call stack: 
(
 0 CoreFoundation 0x00007fff8cd9252b __exceptionPreprocess + 171 
 1 libobjc.A.dylib 0x00007fffa146acad objc_exception_throw + 48 
 2 CoreFoundation 0x00007fff8ce10a0d +:NS例外205 [。 0x00007fff986e2112 _ZN20CUICoreThemeRenderer26MakeOrUpdateScrollBarLayerEPK13CUIDescriptoraPP7CALayer + 1284 
 7 CoreUI 0x00007fff986de317 _ZN20CUICoreThemeRenderer19CreateOrUpdateLayerEPK13CUIDescriptorPP7CALayer + 1755年8 CoreUI 0x00007fff986604d1 _ZN11CUIRenderer19CreateOrUpdateLayerEPK14__CFDictionaryPP7CALayer + 175 
 9 CoreUI 0x00007fff98663185 CUICreateOrUpdateLayer + 221 10のAppKit 0x00007fff8b3c7623 
 
  -  [。____] [NSCompositeAppearance _callCoreUIWithBlock:オプション] + 226 11 AppKit 0x00007fff8aa74a9d-[NSAppearance _createOrUpdateLayer:options:] + 76 
 12 AppKit 0x00007fff8aced143-[NSScrollerImp _animateToRolloverState] + 274 
 14_R AppKit 0x00007fff8ab73331-[NSScrollerImp _doWork:] + 15 
 15 Foundation 0x00007fff8e770c88 __NSFireDelayedPerform + 417 
 16 CoreFoundationの0x00007fff8cd11e14 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20 
 17 CoreFoundationの0x00007fff8cd11a9f __CFRunLoopDoTimer + 1071 
 18 CoreFoundationの0x00007fff8cd115fa __CFRunLoopDoTimers + 298 
 19 CoreFoundationの0x00007fff8cd09021 __CFRunLoopRun + 2065 [。 ____。 Tk_MainEx + 1566 
 25ウィッシュ0x000 0000101658542ウィッシュ+ 9538 
 26 libdyld.dylib 0x00007fffa1d48255 start + 1 
)
 libc ++ abi.dylib:NSException 
 error:gitのキャッチされない例外で終了-guiはシグナル6で死亡しました

誰も同じ問題とこれに対する解決策を持っていますか?

49
sbondaryev

デフォルトのMacOS tcl-tkを使用する代わりに、Homebrewの最新のtcl-tk(8.6.6)を使用してから、強制的にリンクします。次に例を示します。

brew install tcl-tk
brew link tcl-tk --force
22
ssahu

試してください:git config --local --unset gui.geometry
このエラーは、Tk Geometry managerが機能しないため、古いバージョンのため、または破損している場合に発生します。

上記のコマンドが機能しない場合は、xcodeを更新してください:xcode-select --install

20
Nainy Agrawal

MacOS SierraのTk 8.5に問題があります。 Tk Wish 8.5をTk Wish 8.4に置き換えることができます

 cp /System/Library/Frameworks/Tk.framework/Versions/8.4/Resources/Wish.app/Contents/MacOS/Wish /usr/local/Cellar/git/2.10.1/share/git-gui/lib/Git\Gui.app/Contents/MacOS/

ソース: https://github.com/git/git-scm.com/issues/85

UPD:cpパスのgitバージョンを現在のバージョンに置き換えることに注意してください

18
sbondaryev

私のソリューションは、 https://git-scm.com/ からのgitダウンロードで動作するはずです

brew install homebrew/dupes/tcl-tk

/usr/local/git/share/git-gui/lib/Git Gui.app/Contents/MacOSにcdし、元のWishをbackup

cp /usr/local/Cellar/tcl-tk/8.6.6/bin/wish8.6 /usr/local/git/share/git-gui/lib/Git Gui.app/Contents/MacOS/Wish

5
Bruce

brewを介してGIT and TCLを使用しているため、ここから多数の回答をまとめました。

  1. cd "/usr/local/Cellar/git/2.10.2/share/git-gui/lib/Git Gui.app/Contents/MacOS"
  2. mv Wish Wish.bkp
  3. ln -vs /usr/local/Cellar/tcl-tk/8.6.6/bin/wish8.6 Wish

時間が経つにつれて明らかにバージョン番号が異なる場合があります

4
Malachi

問題の完全な解決策を構成するために、次の目標を検討します。

  • これをきちんと直線的に解決する「軌道からの核」の確実性

  • レガシーApple Tcl/Tkのいフォントで終わらない

  • Git guiをApple付属のTcl/Tkから切り離します

    • Tcl/TkのインストールにはHomebrewを使用してください

以下に、これを達成するための段階的な手順を示します。

  1. Homebrewから複製されたTcl/Tkを取得する

    brew install tcl-tk
    
  2. 壊れたApple実装の前に、壊れていないTcl/Tkインストールをパスに追加します

    • これは、Homebrewパスがシステムパスより優先されることを前提としています
    • これは、通常のHomebrewインストールの場合です。
    • インストールされている他の自作レシピから競合するファイルがある場合、これは失敗します
    • たとえば、the_platinum_searcherptを提供しますが、これは競合します
    • このケースを回避するために ripgrep をお勧めします

      brew link --force tcl-tk
      
  3. 壊れていないHomebrewバージョンに対して再インストールして、gitkのインストールを修正します

    • これは必要ではないかもしれませんが、参照。上記の最初に述べた目標

      brew reinstall git
      
  4. Homebrew Tcl/Tkインストールの新しいwishバイナリを、Apple

    • これは盲目的にhomebrew info <package>の出力に依存して変化しない

      cp "$(which wish)" "$(brew info git | grep Cellar | cut -d' ' -f1)/share/git-gui/lib/Git Gui.app/Contents/MacOS/Wish"
      

Homebrewから新しいgitバージョンを取得するたびに繰り返す必要があるため、最後のビットは~/.bashrcおよび/または同等のエイリアスに平手打ちするのが賢明かもしれません。

alias fix-gitgui='cp "$(which wish)" "$(brew info git | grep Cellar | cut -d" " -f1)/share/git-gui/lib/Git Gui.app/Contents/MacOS/Wish"'

上記のカットのフィールド区切り文字の引用がなぜ機能するのか完全には定かではありませんので、正確なbashバージョンに依存する可能性があるため、このエイリアスは注意して使用してください。

3
Rotonen

MacOS 10.12.2にアップグレードすると、問題が修正されます。

参照:

Appleログの変更: https://support.Apple.com/en-us/HT207307 からの理由についての洞察はありません。

2
Kenn Sebesta

私のSierra(10.11.6からアップグレード)のTcl/Tk Currentは8.5を指しており、アップグレード後にTkinterを使用したPythonプログラムで同じエラーが発生しました。Wishは使用していません。 Python 2.7 Tcl/Tk 8.4にリンクされた32ビットのインストールには「タイル」がないため、助けがありませんでした。そこでPythonを作成し、Tcl/Tk 8.6とリンクしました。

これは、特に指示がない限り、brewがソースからビルドする代わりにプリコンパイルされたボトルを使用するためです。

xcode-select --install

次に、Tcl/Tkをインストールします。

brew install homebrew/dupes/tcl-tk

Pythonを最初に-with-tcl-tkでインストールしなかった場合:

brew uninstall python

最後に:

brew install python --with-tcl-tk

この後、PythonはTcl/Tk 8.6にリンクされており、エラーを取り除きました。

0
jalairo

これは、macOS Sierra(10.12.2以降)の最新のパッチで解決されており、それ以上のアクションは不要です。

0
James Fry

多くの苦労の後、この解決策は私の問題を解決します:

$ brew upgrade tcl-tk

最新でこれが機能しない場合は、次を試してください。

$ brew uninstall tcl-tk
$ brew install tcl-tk

Webのすべてのソリューションを試しましたが、これだけで問題が解決します。乾杯!

0
PetyoKostakov

TCLの最新バージョンをダウンロードしてインストールします(8.6.4を使用しました) http://www.activestate.com/activetcl/downloads

また、gitの最新バージョン(2.10.1)をダウンロードしてインストールしました https://git-scm.com/

サイズ変更後にgitkウィンドウがクラッシュしないことを確認します。

0
Vadim Motorine

@sbondaryevの答え(39966704)は私には役に立たなかったし、@ ssahuの(40119030)をまだ試していません。しかし、ここで説明するトリックは、私にとってはそれほど頻繁にクラッシュしませんでした(時間の10%程度)。そして、それは私が物事をいじりすぎるのを防ぎます-うまくいけば、問題はすぐに適切に修正されるでしょう。

  • ウィンドウのサイズを変更すると、クラッシュが発生するようでした(時間の90%)。しかし、作業するには小さすぎるため、サイズを変更したいと考えました。
  • vi .git/config
  • GUI geography動作するウィンドウサイズを作成します。クラッシュが常に発生するサイズがあると思うが、私はまだそれを小さくしました
0
HankCa

私のために働いた修正:2番目のモニターを切断し、開くgit gui->動作し、閉じ、2番目のモニターを再接続してgit gui->再び動作します:)

0
Yo Ludke

High Sierra(10.13)では、git guiで同じ問題が発生しました。

Gitを2.7.0から2.14.2に更新することで問題を解決しました

brew upgrade git
0
Rammgarot