来自 Electron 的 M1 mac 上的 Emacs 崩溃
Posted
技术标签:
【中文标题】来自 Electron 的 M1 mac 上的 Emacs 崩溃【英文标题】:Crash Emacs on M1 mac from Electron 【发布时间】:2021-12-06 01:13:08 【问题描述】:在“电子”上,当我尝试执行 Emacs 时 在新的 M1 mac 上使用 child_process.exec('Emacs'), 该过程已崩溃,并给出了下面所附的报告。 在旧的mac上,它可以工作。 代码如下:
exec(`/Applications/Emacs.app/Contents/MacOS/Emacs "$ExecPathEscape(dirPath)"' ...
我该如何解决?
“Emacs”是由“brew install cask emacs”安装的 和 'Electron' 由'npm install electron' 安装。
> node --version
v16.11.0
> emacs --version
GNU Emacs 27.2
Process: Emacs-x86_64-10_14 [28673]
Path: /Applications/Emacs.app/Contents/MacOS/Emacs-x86_64-10_14
Identifier: org.gnu.Emacs
Version: Version 27.2 (9.0)
Code Type: X86-64 (Translated)
Parent Process: org_viewer_for_electron [28667]
Responsible: org_viewer_for_electron [28667]
User ID: 501
Date/Time: 2021-10-16 14:52:14.719 +0900
OS Version: macOS 11.6 (20G165)
Report Version: 12
Anonymous UUID: 85EA4D90-AA61-E019-08A5-82B0FB446187
Sleep/Wake UUID: E05F8F97-4CFE-4F3E-A8EB-88E278C78BE3
Time Awake Since Boot: 22000 seconds
Time Since Wake: 210 seconds
System Integrity Protection: enabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_INSTRUCTION (SIGABRT)
Exception Codes: 0x0000000000000001, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 ??? 0x00007ffe946828f4 ???
1 libsystem_kernel.dylib 0x00007fff2042392e __pthread_kill + 10
2 libsystem_c.dylib 0x00007fff20336bd5 raise + 26
3 Emacs-x86_64-10_14 0x00000001023db6d9 terminate_due_to_signal + 153
4 Emacs-x86_64-10_14 0x00000001023dc01b emacs_abort + 15
5 Emacs-x86_64-10_14 0x00000001023a3880 ns_term_shutdown + 80
6 Emacs-x86_64-10_14 0x00000001022935d4 shut_down_emacs + 340
7 Emacs-x86_64-10_14 0x00000001023db6a6 terminate_due_to_signal + 102
8 Emacs-x86_64-10_14 0x00000001022b3e8e handle_fatal_signal + 14
9 Emacs-x86_64-10_14 0x00000001022b3f11 deliver_thread_signal + 129
10 Emacs-x86_64-10_14 0x00000001022b2969 deliver_fatal_thread_signal + 9
11 libsystem_platform.dylib 0x00007fff20497d7d _sigtramp + 29
12 ??? 000000000000000000 0 + 0
13 Emacs-x86_64-10_14 0x00000001023785c9 decode_time_components + 633
14 Emacs-x86_64-10_14 0x00000001023790df decode_lisp_time + 159
15 Emacs-x86_64-10_14 0x000000010237a240 Ftime_convert + 32
16 Emacs-x86_64-10_14 0x0000000102320331 funcall_subr + 257
17 Emacs-x86_64-10_14 0x000000010231f91b Ffuncall + 843
18 Emacs-x86_64-10_14 0x0000000102362c57 exec_byte_code + 1815
19 Emacs-x86_64-10_14 0x000000010231f8b9 Ffuncall + 745
20 Emacs-x86_64-10_14 0x0000000102362c57 exec_byte_code + 1815
21 Emacs-x86_64-10_14 0x000000010231f8b9 Ffuncall + 745
22 Emacs-x86_64-10_14 0x0000000102362c57 exec_byte_code + 1815
23 Emacs-x86_64-10_14 0x000000010231f8b9 Ffuncall + 745
24 Emacs-x86_64-10_14 0x0000000102362c57 exec_byte_code + 1815
25 Emacs-x86_64-10_14 0x000000010231f8b9 Ffuncall + 745
26 Emacs-x86_64-10_14 0x0000000102362c57 exec_byte_code + 1815
27 Emacs-x86_64-10_14 0x000000010231f8b9 Ffuncall + 745
28 Emacs-x86_64-10_14 0x0000000102362c57 exec_byte_code + 1815
29 Emacs-x86_64-10_14 0x000000010231f8b9 Ffuncall + 745
30 Emacs-x86_64-10_14 0x0000000102362c57 exec_byte_code + 1815
31 Emacs-x86_64-10_14 0x000000010231f8b9 Ffuncall + 745
32 Emacs-x86_64-10_14 0x000000010231ff8c call1 + 44
33 Emacs-x86_64-10_14 0x000000010232b4c8 mapcar1 + 88
34 Emacs-x86_64-10_14 0x000000010232b90b Fmapc + 75
35 Emacs-x86_64-10_14 0x0000000102320331 funcall_subr + 257
36 Emacs-x86_64-10_14 0x000000010231f91b Ffuncall + 843
37 Emacs-x86_64-10_14 0x0000000102362c57 exec_byte_code + 1815
38 Emacs-x86_64-10_14 0x000000010231f8b9 Ffuncall + 745
39 Emacs-x86_64-10_14 0x0000000102362c57 exec_byte_code + 1815
40 Emacs-x86_64-10_14 0x000000010231f164 apply_lambda + 356
41 Emacs-x86_64-10_14 0x000000010231b69f eval_sub + 783
42 Emacs-x86_64-10_14 0x000000010231ee9a Feval + 106
43 Emacs-x86_64-10_14 0x000000010231df77 internal_condition_case + 263
44 Emacs-x86_64-10_14 0x00000001022a772d top_level_1 + 45
45 Emacs-x86_64-10_14 0x000000010231d79b internal_catch + 267
46 Emacs-x86_64-10_14 0x00000001023dba96 command_loop.cold.1 + 54
47 Emacs-x86_64-10_14 0x0000000102296633 command_loop + 131
48 Emacs-x86_64-10_14 0x0000000102296563 recursive_edit_1 + 115
49 Emacs-x86_64-10_14 0x00000001022967bb Frecursive_edit + 347
50 Emacs-x86_64-10_14 0x000000010229534c main + 7436
51 libdyld.dylib 0x00007fff2046df3d start + 1
Thread 1:: com.apple.rosetta.exceptionserver
0 runtime 0x00007ffdfff96a28 0x7ffdfff92000 + 18984
1 runtime 0x00007ffdfff9beec 0x7ffdfff92000 + 40684
2 runtime 0x00007ffdfff9d2c0 0x7ffdfff92000 + 45760
Thread 2:
0 runtime 0x00007ffdfffb47c8 0x7ffdfff92000 + 141256
Thread 3:
0 runtime 0x00007ffdfffb47c8 0x7ffdfff92000 + 141256
Thread 4:
0 runtime 0x00007ffdfffb47c8 0x7ffdfff92000 + 141256
Thread 5:
0 runtime 0x00007ffdfffb47c8 0x7ffdfff92000 + 141256
Thread 6:
0 ??? 0x00007ffe946828f4 ???
1 libsystem_kernel.dylib 0x00007fff20425656 __select + 10
2 com.apple.Foundation 0x00007fff211fd437 __NSThread__start__ + 1068
3 libsystem_pthread.dylib 0x00007fff204528fc _pthread_start + 224
4 libsystem_pthread.dylib 0x00007fff2044e443 thread_start + 15
Thread 7:: com.apple.NSEventThread
0 ??? 0x00007ffe946828f4 ???
1 libsystem_kernel.dylib 0x00007fff2041d2ba mach_msg_trap + 10
2 com.apple.CoreFoundation 0x00007fff2054b215 __CFRunLoopServiceMachPort + 316
3 com.apple.CoreFoundation 0x00007fff205498cb __CFRunLoopRun + 1332
4 com.apple.CoreFoundation 0x00007fff20548cd0 CFRunLoopRunSpecific + 567
5 com.apple.AppKit 0x00007fff22e0223a _NSEventThread + 124
6 libsystem_pthread.dylib 0x00007fff204528fc _pthread_start + 224
7 libsystem_pthread.dylib 0x00007fff2044e443 thread_start + 15
Thread 0 crashed with X86 Thread State (64-bit):
rax: 0x0000000000000000 rbx: 0x0000000202d57e00 rcx: 0x0000000000000000 rdx: 0x0000000000000000
rdi: 0x0000000000000004 rsi: 0x0000000000000006 rbp: 0x0000000000000003 rsp: 0x00000000000001ad
r8: 0x0000000000000006 r9: 0x0000000000000003 r10: 0x0000000202d57e00 r11: 0x00007fff20336bbb
r12: 0x0000000000000103 r13: 0x0000000000000002 r14: 0x0000000000000006 r15: 0x0000000000000016
rip: <unavailable> rfl: 0x0000000000000283
【问题讨论】:
【参考方案1】:我们自己解决了。 当我们直接符号链接 Emacs、bin、libexe 的 arm64 时, 它有效。
> pwd
/Applications/Emacs.app/Contents/MacOS
> rm bin
> ln -s bin-arm64-11_2/ bin
> rm libexec
> ln -s lib-arm64-11_2/ libexec
> mv Emacs Emacs-orig
> ln -s Emacs-arm64-11_2 Emacs
在 Homebrew 提供的原始 Emacs 脚本中, 架构检查由
> uname -m
arm64
并返回适当的答案, 但执行的版本是 x86_64。 我们不能提出修改后的 Emacs 解决方案,但它确实有效。
【讨论】:
我们现在已经了解到崩溃是由于“电子”架构造成的。当我们将“电子”从 x86_64 更改为通用版本时,“uname -m”会返回适当的答案。原来的 Emacs 运行良好。以上是关于来自 Electron 的 M1 mac 上的 Emacs 崩溃的主要内容,如果未能解决你的问题,请参考以下文章
Docker-compose 在 M1 mac 上的 VM (Parallels) 中
QT程序electron程序打包完毕之后,在MAC文件系统上的显示
M1 Mac 上的 Pod 安装错误 - 使用 shared_preferences 等本机代码的 Flutter 项目