Libqgit2 clone error unable to lock mwindow mutex
首先说明一下这个error已经困扰了我两个多月了,求助了不少人,也找了N多资料都没能找到答案,关键是google都没能发现任何相关资料,简直崩溃。
不过今天终于才勉强解决了,但是感觉我的处理方式应该有问题,不过毕竟能用暂时就不纠结这么多了,下面具体说下我的解决方案,挺有意思的
找到解决方案过程
在找到解决方案前,尝试了无数次的重新编译,换版本编译,得到的结果仍然是同样的蛋疼。
并且,我发现仅仅是clone
会出现这个错误,init
并不会发生崩溃,当时我就在想会不会不是libqgit2
的问题呢,因为使用ctest -V
测试是clone
是可以成功的。
由此推断出,应该是QT Creator
的问题(还有一个件事也能佐证我这个猜测,就是期间我使用了一个qtpm的包管理工具去安装libqgit2
是可以正常clone
的,但是这个东西不能导入QT Creator
而写项目关注的人也不多,遂放弃),但是到底是什么问题我并不清楚,我也不是很懂QT
和编译相关的东西。
为此我还在stackoverflow上提交了我这个问题,但是并没人鸟我,囧…
到最后,是在没办法,就使用这个错误中的关键词在项目源代码中所有,但是一无所得,后来我想到是不是不是libqgit2
的问题是libgit2
的问题呢,我一搜索,瞬间懵逼了,这个错误能再libgit2
的源码中找到,瞬间燃气了星星之火,感觉有希望了,遂去翻阅libgit2
的文档,然而可想而知我又懵逼了,并没有找到相关的文档
好吧心想硬着头皮去看源代码吧,这一看又看到希望了,里面的注释有说到这些方法使用来锁定window用的,但我根本就没有用到它的window啊,我有我自己的图形库,并不需要它去锁定什么window。
我这样一想,能不能把这些东西删除掉的内部实现注释掉呢,想想反正死马当活马医了,本以为会是一堆报错来打我脸,没想到居然行了,行了,了,天不亡我
修改如下
1 | vim libgit2/src/mwindow.c |
总结
- 一直以为是
libqgit2
或者是QT Creator
的问题,但是… - 不要过分相信权威(
libqgit2
已经没人维护了,让我一直以为是它出了问题)