程序是 https://github.com/xiaoyifang/goldendict 用了 homebrew 预编译的 qt6 ,启动就被 kill
对着 dlopen 打断点:
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
frame #0: 0x00000001872a929c libdyld.dylib`dlopen
libdyld.dylib`dlopen:
-> 0x1872a929c <+0>: mov x2, x1
0x1872a92a0 <+4>: mov x1, x0
0x1872a92a4 <+8>: adrp x8, 363711
0x1872a92a8 <+12>: ldr x0, [x8, #0x670]
Target 0: (GoldenDict) stopped.
(lldb) memory read -s1 -fY -c100 $x0
0x600003e02510: 2f 6f 70 74 2f 68 6f 6d 65 62 72 65 77 2f 43 65 /opt/homebrew/Ce
0x600003e02520: 6c 6c 61 72 2f 71 74 2f 36 2e 32 2e 33 5f 31 2f llar/qt/6.2.3_1/
0x600003e02530: 73 68 61 72 65 2f 71 74 2f 70 6c 75 67 69 6e 73 share/qt/plugins
0x600003e02540: 2f 69 6d 61 67 65 66 6f 72 6d 61 74 73 2f 6c 69 /imageformats/li
0x600003e02550: 62 71 6d 6e 67 2e 64 79 6c 69 62 00 00 60 00 00 bqmng.dylib..`..
0x600003e02560: 30 0b 23 00 00 60 00 00 04 00 00 00 00 00 00 00 0.#..`..........
0x600003e02570: 00 00 00 10 ....
(lldb) c
Process 90687 resuming
zsh: killed lldb ./GoldenDict.app/Contents/MacOS/GoldenDict
> codesign --deep --verify --verbose /opt/homebrew/Cellar/qt/6.2.3_1/share/qt/plugins/imageformats/libqmng.dylib
/opt/homebrew/Cellar/qt/6.2.3_1/share/qt/plugins/imageformats/libqmng.dylib: valid on disk
/opt/homebrew/Cellar/qt/6.2.3_1/share/qt/plugins/imageformats/libqmng.dylib: satisfies its Designated Requirement
> codesign -d -vvv /opt/homebrew/Cellar/qt/6.2.3_1/share/qt/plugins/imageformats/libqmng.dylib
Executable=/opt/homebrew/Cellar/qt/6.2.3_1/share/qt/plugins/imageformats/libqmng.dylib
Identifier=libqmng-55554944be625159fd4d3997b75cdc5985adb4cd
Format=Mach-O thin (arm64)
CodeDirectory v=20400 size=841 flags=0x2(adhoc) hashes=20+2 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha256=57b38992a7af811c43affc257ac3425b7030d36d
CandidateCDHashFull sha256=57b38992a7af811c43affc257ac3425b7030d36dc5ccc8f43c6c4eae8bf9292b
Hash choices=sha256
CMSDigest=57b38992a7af811c43affc257ac3425b7030d36dc5ccc8f43c6c4eae8bf9292b
CMSDigestType=2
CDHash=57b38992a7af811c43affc257ac3425b7030d36d
Signature=adhoc
Info.plist=not bound
TeamIdentifier=not set
Sealed Resources=none
Internal requirements count=0 size=12
brew reinstall qt 也没有用
因为这个mng 图片格式 根本没人用,我就删了这个文件,然后程序就起来了,但是还是觉得很奇怪,好像 adhoc 签名不是用于分发的?为什么 homebrew 的二进制文件没有用苹果的开发者签名。
1
ngn999 2022-03-25 17:34:32 +08:00 via iPhone
我下午刚给这个项目提了个 pr ,支持了 apple silicon ,你按最新的 readme 来的吗?
|
2
ngn999 2022-03-25 17:38:16 +08:00 via iPhone
我这边的情况是可以用命令行 build 跑起来。用 Qt Creator 能 build ,但 run 时,crash 在 dyld ,应该也是签名问题,但自己双击,运行也没毛病
|
3
12101111 OP 我自己改的 goldendict.pro 文件,和你的 pr 一模一样. 从命令行跑或者是双击运行都是报错一样的错误,但是删了这个文件就好使了
|
4
12101111 OP 看来是这个文件坏了
> codesign --verify --verbose /opt/homebrew/opt/libmng/lib/libmng.2.dylib /opt/homebrew/opt/libmng/lib/libmng.2.dylib: invalid signature (code or signature have been modified) In architecture: arm64 一直有传闻 apfs 会坏文件, 看来我是遇上了 |
5
ngn999 2022-03-25 18:17:24 +08:00 via iPhone
我没印象有依赖这个库。
可能我 qt 是从 qt 官网装的。 |
6
lindt99cocoa 2022-03-25 19:29:46 +08:00 1
@12101111 APFS 只对元数据有校验和,对数据没有,很难算得上可靠,不如 btrfs 和 zfs
|
7
ngn999 2022-03-25 21:22:13 +08:00
楼主你能直接用 Qt Creator 把这个 GoldenDict.app 跑起来吗?
我这发现, build 成功, 但 Run 失败, 报 crash, 还不是签名的问题 但是如果在 Run 的配置里, 设置 Run as root user 则又能成功.在 Finder 里找到 .app 双击能也成功运行. |
8
ngn999 2022-03-25 21:22:47 +08:00
自带的一个 QWebEngine 的 demo 直接 run 起来没问题.
|
9
ngn999 2022-03-25 22:19:23 +08:00
啊,弄了半天发现问题了, 默认的 Run 的环境变量是和 Build 用的一样的, 但是会多设置 DYLD_LIBRARY_PATH 和 DYLD_FRAMEWORK_PATH, 把这两个给 unset 掉就好了.
:( |
10
upwell 2022-03-26 21:58:58 +08:00
@12101111
想不起来是什么原因了,可以重启一下系统可能就会好,好像是说系统的安全策略,命令行的工具,如果是替换的,binary 变了,就会报这个问题。 遇到过两次了,自己编译的程序,cp 过去替换,运行的时候就会被系统 kill 掉,但是把原来的删除掉,再 mv 过去就不会有问题。 brew reinstall qt 可能不会删除 binary ,可以先 uninstall 掉,然后看看 binary 有没有被删除掉,如果没有的话就删除掉,然后再安装。 真不行,就重启系统! |
11
nonwill 2022-03-28 23:42:48 +08:00
应 @ngn999 “大佬”邀,也来凑个热闹:
客观的讲,对 GoldenDict 的官方版本代码的评价,我“比较”认同某词典论坛“帮主”的认定:shi 山 客观的讲,我对 GoldenDict 的官方版本设计的评价,水平很高 对 GoldenDict 的官方版本中的一些问题,主要出在那堆“shi 山”上,这里不做具体分析,GoldenDict++ 所修复的问题(非改进内容),90 都在那堆“shi 山”上。 个人对 xiaoyifang 版本当前实现(代码质量)的评价:“shi 山++” -- 更甚之处是将 GoldenDict 原有的良好的设计给破坏掉了,所以不可能变得更好。我对 xiaoyifang 的评价是:有问题都可能是 Qt 的问题,还可能是 WebEngine 的问题,还可能是 iconv 的问题...,可能吗?一切皆有可能,哈哈哈 @ngn999 是大佬啦,您的能力应不亚于鄙人与 xiaoyifang 的,屈尊在这里讨论这样的问题令在下敬佩至极。 |
12
ngn999 2022-03-29 07:36:00 +08:00 via iPhone
@nonwill 你就算技术再高,但是这做事,说话也太缺德了。
我听到过很多中国开发者在开源里的缺德事,你打破了我的想像。 xiaoyifang 好好地在做升级,提 pr ,你用不着在 pr 里各种咬人。不想好好帮忙的话,闭嘴就好了。 |
13
ngn999 2022-03-29 07:43:08 +08:00 via iPhone
|
14
nonwill 2022-03-29 08:07:11 +08:00
@ngn999 当然了,你超脱于“缺德”之列,高尚至此 -- 已几无无德可言,剃了毛的狗,过分也不过如此。所谓“嘴上无毛,办事不牢”,送你吧,哈哈哈
|
15
nonwill 2022-03-29 10:29:34 +08:00
@ngn999 抱着学习的态度 View 了下大佬您 Macbook_scroll_issue 的实现: https://github.com/ngn999/goldendict/commits/bugfix/Macbook_scroll_issue
可问大佬啊,您不用 Qt 的信号槽,而用回调,您这里回调较信号槽有什么优势呢? |
16
nonwill 2022-05-11 15:35:03 +08:00
|