【问题标题】:git-gui command crashes on macOS Sierragit-gui 命令在 macOS Sierra 上崩溃
【发布时间】:2017-02-11 12:53:29
【问题描述】:

更新到 macOS Sierra 后,git-gui 命令崩溃并出现错误:

Wish[23862:202062] *** 由于未捕获的异常“CALayerInvalidGeometry”而终止应用程序,原因:“CALayer 位置包含 NaN:[0 nan]” *** 首先抛出调用堆栈: ( 0 核心基础 0x00007fff8cd9252b __exceptionPreprocess + 171 1 libobjc.A.dylib 0x00007fffa146acad objc_exception_throw + 48 2 核心基础 0x00007fff8ce10a0d +[NSException raise:format:] + 205 3 石英核心 0x00007fff92938980 _ZN2CA5Layer12set_positionERKNS_4Vec2IdEEb + 152 4 石英核心 0x00007fff92938af5 -[CALayer setPosition:] + 44 5 石英核心 0x00007fff9293914b -[CALayer setFrame:] + 644 6 CoreUI 0x00007fff986e2112 _ZN20CUICoreThemeRenderer26MakeOrUpdateScrollBarLayerEPK13CUIDescriptoraPP7CALayer + 1284 7 CoreUI 0x00007fff986de317 _ZN20CUICoreThemeRenderer19CreateOrUpdateLayerEPK13CUIDescriptorPP7CALayer + 1755 8 CoreUI 0x00007fff986604d1 _ZN11CUIRenderer19CreateOrUpdateLayerEPK14__CFDictionaryPP7CALayer + 175 9 CoreUI 0x00007fff98663185 CUICreateOrUpdateLayer + 221 10 AppKit 0x00007fff8b3c7623-[NSCompositeAppearance _callCoreUIWithBlock:options:] + 226 11 AppKit 0x00007fff8aa74a9d -[NSAppearance _createOrUpdateLayer:options:] + 76 12 AppKit 0x00007fff8aced143 - [NSScrollerImp _animateToRolloverState] + 274 13 AppKit 0x00007fff8acacb79 __49-[NSScrollerImp _installDelayedRolloverAnimation]_block_invoke + 673 14 AppKit 0x00007fff8ab73331-[NSScrollerImp _doWork:] + 15 15 基础 0x00007fff8e770c88 __NSFireDelayedPerform + 417 16 核心基础 0x00007fff8cd11e14 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20 17 核心基础 0x00007fff8cd11a9f __CFRunLoopDoTimer + 1071 18 核心基础 0x00007fff8cd115fa __CFRunLoopDoTimers + 298 19 核心基础 0x00007fff8cd09021 __CFRunLoopRun + 2065 20 核心基础 0x00007fff8cd085b4 CFRunLoopRunSpecific + 420 21 Tcl 0x0000000101834b43 Tcl_WaitForEvent + 314 22 Tcl 0x00000001018045cd Tcl_DoOneEvent + 274 23 Tk 0x0000000101672f4f Tk_MainLoop + 33 24 Tk 0x000000010167ea5b Tk_MainEx + 1566 25 愿望 0x0000000101658542 愿望 + 9538 26 libdyld.dylib 0x00007fffa1d48255 开始 + 1 ) libc++abi.dylib:以 NSException 类型的未捕获异常终止 错误:git-gui 死于信号 6

有没有人有同样的问题和解决方案?

【问题讨论】:

标签: git macos crash


【解决方案1】:

尝试: git config --local --unset gui.geometry
此错误是由于 Tk 几何管理器无法工作、旧版本或损坏所致。

如果上述命令不起作用,请尝试更新您的 xcode: xcode-select --install

【讨论】:

  • 我试过这个解决方案它对我不起作用github.com/git/git-scm.com/issues/853
  • 似乎不起作用,即使使用 xcode-select --install 编辑
  • 这对我有用,也很有意义!谢谢
【解决方案2】:

不要使用默认的 MacOS tcl-tk,而是使用 Homebrew 的最新 tcl-tk(8.6.6),然后强制链接,例如:

brew install tcl-tk
brew link tcl-tk --force

【讨论】:

  • 谢谢,接受的答案对我不起作用,但确实如此。
  • 这个答案对我有用,但只有在我解决了我的 PATH 变量的问题之后,该变量在 /usr/local/bin 之前有 /usr/bin/。这导致我无法更改gitk 使用的Wish 的版本。
  • 我不得不做brew install homebrew/dupes/tcl-tk
  • 这样做了……对我来说仍然崩溃
  • brew install homebrew/dupes/tcl-tk 不再有效。 homebrew/dupes 已被弃用。
【解决方案3】:

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/853

UPD:注意将cp路径中的git版本替换为你当前的版本

【讨论】:

  • 这对我不起作用。然而,ssahu 的回答确实奏效了。
  • 是的。 ssahu 的解决方案也应该有效,无论如何想法是用另一个替换 Tcl/tk 8.5 版本。您还应该在 cp 命令的目标路径中使用您当前的 git 版本。
  • 我建议将 Tk 升级到 8.6 而不是降级到 8.4,因为 8.4 有其自身的一系列缺点。对我来说,它不支持我的 macbook 的视网膜显示器很烦人。请参阅 ssahu 和 Bruce 的回答,了解如何做到这一点。
  • 我尝试了很多解决方案,这是唯一对我有用的解决方案!谢谢!!!对了,还要注意使用你当前的 Tk 版本。
【解决方案4】:

我的解决方案应该适用于https://git-scm.com/的git下载

brew install homebrew/dupes/tcl-tk

cd到/usr/local/git/share/git-gui/lib/Git Gui.app/Contents/MacOS备份原Wish

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】:

    我从这里收集了一堆答案,因为我通过 brew 使用 GIT 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

    随着时间的推移,显然版本号可能会有所不同

    【讨论】:

      【解决方案6】:

      我认为以下目标构成了该问题的完整解决方案:

      • “从轨道上发射核弹”以简洁和线性的方式解决这个问题的确定性

      • 不要以旧版 Apple Tcl/Tk 的丑陋字体告终

      • 将您的 git gui 与 Apple 发布的 Tcl/Tk 分离

        • 依赖 Homebrew 进行 Tcl/Tk 安装

      您将在下面找到实现此目的的分步操作:

      1. 从 Homebrew 获取重复的 Tcl/Tk

        brew install tcl-tk
        
      2. 将未损坏的 Tcl/Tk 安装添加到损坏的 Apple 实施之前的路径

        • 这假设您的 Homebrew 路径优先于您的系统路径
        • 在正常的 Homebrew 安装中应该是这种情况
        • 如果您的其他已安装自制配方中的文件存在冲突,这将失败
        • 例如the_platinum_searcher 提供pt,这会发生冲突
        • 我推荐ripgrep 来解决这个问题

          brew link --force tcl-tk
          
      3. 通过针对完整的 Homebrew 版本重新安装来修复您的 gitk 安装

        • 这可能不是必需的,但参考。上述第一个目标

          brew reinstall git
          
      4. 从您的 Homebrew Tcl/Tk 安装中复制新的 wish 二进制文件,覆盖来自 Apple 的 Git Gui.app 包中损坏的捆绑文件

        • 这一味依赖homebrew info <package>的输出不改变

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

      最后一点可能是明智的,将别名添加到您的 ~/.bashrc 和/或等效项中,因为每次您从 Homebrew 获得新的 git 版本时都必须重复它。

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

      我不完全确定为什么上面使用的 cut 字段分隔符的引用有效,因此请谨慎使用此别名,因为这很可能取决于确切的 bash 版本。

      【讨论】:

      • 谢谢。该别名在 Mojave (10.14.3) 上为我工作,我很高兴拥有它以备将来使用。错误:Wish[98243:1226829] *** -[_NSCGSWindow setFrame:] 中的断言失败,/BuildRoot/Library/Caches/com.apple.xbs/Sources/AppKit/AppKit-1671.20.108/CGS.subproj/NSCGSWindow。 m:1015 2019-03-21 11:55:18.876 Wish[98243:1226829] *** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无效参数不满足:CGRectContainsRect(CGRectMake((CGFloat)INT_MIN, ( CGFloat)INT_MIN, (CGFloat)INT_MAX - (CGFloat)INT_MIN, (CGFloat)INT_MAX - (CGFloat)INT_MIN), 帧)'
      【解决方案7】:

      升级到 macOS 10.12.2 解决了这个问题。

      参考资料:

      无法从 Apple 更改日志中了解原因:https://support.apple.com/en-us/HT207307

      【讨论】:

        【解决方案8】:

        它适用于我:下载并安装最新版本的 TCL(我使用的是 8.6.4) http://www.activestate.com/activetcl/downloads

        我还下载并安装了最新版本(2.10.1)的 git https://git-scm.com/

        检查 gitk 窗口在调整大小后不会崩溃。

        【讨论】:

          【解决方案9】:

          @sbondaryev 的回答 (39966704) 对我不起作用,我还没有尝试过 @ssahu 的回答 (40119030)。然而,我在这里描述的技巧对我来说崩溃的频率要低得多(大约 10% 的时间)。并且它可以让我避免过多的乱七八糟 - 希望问题能很快得到妥善解决。

          • 调整窗口大小时似乎发生了崩溃(90% 的时间)。但我发现它太小了,无法使用并想调整它的大小。
          • vi .git/config
          • 编辑GUI geography 以创建一个有效的窗口大小。我仍然保持它很小,尽管我怀疑总会发生崩溃的大小

          【讨论】:

            【解决方案10】:

            我的 Sierra(从 10.11.6 升级)的 Tcl/Tk Current 指向 8.5,升级后我观察到同样的错误,我们的 Python 程序使用 Tkinter。我没有使用Wish。链接到 Tcl/Tk 8.4 的 Python 2.7 32 位安装对我没有帮助,因为那个没有“平铺”。所以我酿造了我的 Python,将它与 Tcl/Tk 8.6 链接起来:

            这是为了让 brew 使用预编译的瓶子而不是从源代码构建,除非另有明确说明,因此不会真正导致问题:

            xcode-select --install
            

            然后安装Tcl/Tk:

            brew install homebrew/dupes/tcl-tk
            

            如果您最初没有使用 --with-tcl-tk 安装 Python,那么:

            brew uninstall python
            

            最后:

            brew install python --with-tcl-tk
            

            在此之后,我有链接到 Tcl/Tk 8.6 的 Python,看起来我摆脱了错误。

            【讨论】:

              【解决方案11】:

              经过很多努力,这个解决方案解决了我的问题:

              $ brew upgrade tcl-tk
              

              如果它是最新的并且这不起作用,请尝试:

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

              我已经尝试了网络中的所有解决方案,但只有这样才能解决问题。 干杯!

              【讨论】:

                【解决方案12】:

                此问题已在 macOS Sierra(10.12.2 及更高版本)的最新补丁中得到解决,无需采取进一步措施。

                【讨论】:

                • 我正在使用 macOS Sierra 10.12.5(2017 年 8 月)并且崩溃仍然存在。
                • 你是如何安装 git 的?我正在使用自制软件安装,现在一切正常(似乎是 Sierra 更新修复了它,因为我没有更新 git)。我已经重新安装了 OSX 并使用 brew 重新安装了 git,它工作正常(就像我经常看到的 2-3 台其他 Mac 一样)。我不能代表 git 网站上的 git 安装程序的稳定性。我使用的是 2015 15" rMBP 和 2013 13" rMBP,其他 Mac 是 c。 2013 空气。
                • 我正在使用 brew 安装的 git 2.14.1,我尝试通过 brew 安装 tcl-tk 并且它有所帮助。
                • 我只安装了以下 brew 包 - freetds freetype git graphicsmagick imagemagick jpeg libpng libtiff libtool openssl pgloader postgresql readline sbcl xz。我正在运行 10.12.6 和 brew 1.3.0。 git --version 报告“git 版本 2.14.0”,which git 是“/usr/local/bin/git”。
                【解决方案13】:

                在 High Sierra (10.13) 上,我遇到了与 git gui 相同的问题。

                我已经通过将 git 从 2.7.0 更新到 2.14.2 解决了这个问题

                brew upgrade git
                

                【讨论】:

                • 升级到 High Sierra 后这对我有用。我得到了 git 2.17.1
                【解决方案14】:

                对我有用的修复:断开第二台显示器,打开 git gui -> 工作,关闭它,重新连接第二台显示器并运行 git gui -> 再次工作 :)

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-11-12
                  • 2018-12-16
                  • 2018-03-23
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-03-05
                  • 1970-01-01
                  相关资源
                  最近更新 更多