最近Emacs崩溃好频繁,有办法调试一下吗。。。

有没有办法得到更确切的原因,或者提供点解决的思路?Emacs常年打开着几个子进程

enh-ruby-mode 自带的 erm.rb
Rails server
Rails console
Pgcli
等等

然后突然就闪退。可能是打开一个新文件的时候,也可能是编辑补全的时候。没法复现,不知道什么时候崩溃。。编译参数如下

/usr/local/Cellar/emacs-mac/emacs-26.1-z-mac-7.1 (4,009 files, 115MB) *
  Built from source on 2018-08-13 at 15:03:23 with: --with-modules --with-xml2 --with-natural-title-bar --without-gnutls --with-glib --with-imagemagick
Process:               Emacs [82469]
Path:                  /usr/local/Cellar/emacs-mac/emacs-26.1-z-mac-7.1/Emacs.app/Contents/MacOS/Emacs
Identifier:            org.gnu.Emacs
Version:               26.1 (1.1)
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
Responsible:           Emacs [82469]
User ID:               502

Date/Time:             2018-09-08 09:23:28.658 +0800
OS Version:            Mac OS X 10.12.6 (16G1510)
Report Version:        12
Anonymous UUID:        18670CB9-6C6F-1A9D-5EAE-307EB1A1866C

Sleep/Wake UUID:       0DAFD8A1-5B38-40DB-838B-D2289F11CB56

Time Awake Since Boot: 200000 seconds
Time Since Wake:       2500 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGILL)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Illegal instruction: 4
Termination Reason:    Namespace SIGNAL, Code 0x4
Terminating Process:   Emacs [82469]

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00007fff9365f386 semaphore_wait_trap + 10
1   libdispatch.dylib             	0x00007fff9351aa77 _os_semaphore_wait + 16
2   libdispatch.dylib             	0x00007fff9350b891 _dispatch_semaphore_wait_slow + 103
3   org.gnu.Emacs                 	0x00000001001b07f6 mac_gui_loop + 129
4   org.gnu.Emacs                 	0x00000001001b05ba main + 724
5   libdyld.dylib                 	0x00007fff93538235 start + 1

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00007fff9365f386 semaphore_wait_trap + 10
1   libdispatch.dylib             	0x00007fff9351aa77 _os_semaphore_wait + 16
2   libdispatch.dylib             	0x00007fff9350b891 _dispatch_semaphore_wait_slow + 103
3   org.gnu.Emacs                 	0x00000001001b07f6 mac_gui_loop + 129
4   org.gnu.Emacs                 	0x00000001001b05ba main + 724
5   libdyld.dylib                 	0x00007fff93538235 start + 1

Thread 1:: org.gnu.Emacs.lisp-main
0   org.gnu.Emacs                 	0x000000010012e2b3 read1 + 20
1   org.gnu.Emacs                 	0x000000010012e007 read_list + 96
2   org.gnu.Emacs                 	0x000000010012fd18 read_vector + 40
### 中间省略500行类似的
510 org.gnu.Emacs                 	0x000000010012ec6d read1 + 2510
511 org.gnu.Emacs                 	0x000000010012e007 read_list + 96

Thread 2:: com.apple.NSEventThread
0   libsystem_kernel.dylib        	0x00007fff9365f34a mach_msg_trap + 10
1   libsystem_kernel.dylib        	0x00007fff9365e797 mach_msg + 55
2   com.apple.CoreFoundation      	0x00007fff7dda7434 __CFRunLoopServiceMachPort + 212
3   com.apple.CoreFoundation      	0x00007fff7dda68c1 __CFRunLoopRun + 1361
4   com.apple.CoreFoundation      	0x00007fff7dda6114 CFRunLoopRunSpecific + 420
5   com.apple.AppKit              	0x00007fff7b9eaf02 _NSEventThread + 205
6   libsystem_pthread.dylib       	0x00007fff9375193b _pthread_body + 180
7   libsystem_pthread.dylib       	0x00007fff93751887 _pthread_start + 286
8   libsystem_pthread.dylib       	0x00007fff9375108d thread_start + 13

Thread 3:: CVDisplayLink
0   libsystem_kernel.dylib        	0x00007fff93666bf2 __psynch_cvwait + 10
1   libsystem_pthread.dylib       	0x00007fff937527fa _pthread_cond_wait + 712
2   com.apple.CoreVideo           	0x00007fff7f462810 CVDisplayLink::runIOThread() + 694
3   libsystem_pthread.dylib       	0x00007fff9375193b _pthread_body + 180
4   libsystem_pthread.dylib       	0x00007fff93751887 _pthread_start + 286
5   libsystem_pthread.dylib       	0x00007fff9375108d thread_start + 13

Thread 4:
0   libsystem_kernel.dylib        	0x00007fff9366744e __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff93751621 _pthread_wqthread + 1426
2   libsystem_pthread.dylib       	0x00007fff9375107d start_wqthread + 13

Thread 5:
0   libsystem_kernel.dylib        	0x00007fff9366744e __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff93751621 _pthread_wqthread + 1426
2   libsystem_pthread.dylib       	0x00007fff9375107d start_wqthread + 13

Thread 6:
0   libsystem_kernel.dylib        	0x00007fff9366744e __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff9375148e _pthread_wqthread + 1023
2   libsystem_pthread.dylib       	0x00007fff9375107d start_wqthread + 13

Thread 7:
0   libsystem_kernel.dylib        	0x00007fff9366744e __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff93751621 _pthread_wqthread + 1426
2   libsystem_pthread.dylib       	0x00007fff9375107d start_wqthread + 13

Thread 8:
0   libsystem_kernel.dylib        	0x00007fff9366744e __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff9375148e _pthread_wqthread + 1023
2   libsystem_pthread.dylib       	0x00007fff9375107d start_wqthread + 13

Thread 9:
0   libsystem_kernel.dylib        	0x00007fff9366744e __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff93751621 _pthread_wqthread + 1426
2   libsystem_pthread.dylib       	0x00007fff9375107d start_wqthread + 13

Thread 10:
0   libsystem_kernel.dylib        	0x00007fff9366744e __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff93751621 _pthread_wqthread + 1426
2   libsystem_pthread.dylib       	0x00007fff9375107d start_wqthread + 13

Thread 11:
0   libsystem_kernel.dylib        	0x00007fff9366744e __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff93751621 _pthread_wqthread + 1426
2   libsystem_pthread.dylib       	0x00007fff9375107d start_wqthread + 13

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x000000000000000e  rbx: 0x0000000100a06768  rcx: 0x00007fff5fbff7f8  rdx: 0x0000000100785e08
  rdi: 0x000000000000170b  rsi: 0xffffffffffffffff  rbp: 0x00007fff5fbff810  rsp: 0x00007fff5fbff7f8
   r8: 0x0000000000000001   r9: 0x0000000000000154  r10: 0x00007fff5fbff7f8  r11: 0x0000000000000246
  r12: 0x00007fff7c4bc017  r13: 0x00007fff5fbff940  r14: 0x0000000100a06768  r15: 0xffffffffffffffff
  rip: 0x00007fff9365f386  rfl: 0x0000000000000246  cr2: 0x00007fff935a3a5c
  
Logical CPU:     0
Error Code:      0x01000024
Trap Number:     133


Binary Images:
       0x100000000 -        0x100203fef +org.gnu.Emacs (26.1 - 1.1) <338E565A-19A5-3D46-B63C-EE1008A20A11> /usr/local/Cellar/emacs-mac/emacs-26.1-z-mac-7.1/Emacs.app/Contents/MacOS/Emacs
       0x100666000 -        0x10074cfff +libxml2.2.dylib (0) <2394421E-54D8-3C60-927E-3628068245F1> /usr/local/opt/libxml2/lib/libxml2.2.dylib
       0x10e037000 -        0x10e061fff  GLRendererFloat (14.0.16) <32A016EE-63CF-3D07-9BAB-C4EB3E8E479D> /System/Library/Frameworks/OpenGL.framework/Resources/GLRendererFloat.bundle/GLRendererFloat
       0x10f4d2000 -        0x10f678fff  GLEngine (14.0.16) <E8C60E20-6414-32B2-8964-41882943D9C1> /System/Library/Frameworks/OpenGL.framework/Resources/GLEngine.bundle/GLEngine
       0x110000000 -        0x11055bff7  com.apple.driver.AppleIntelHD5000GraphicsGLDriver (10.25.19 - 10.2.5) <3F64ED22-36C7-3201-AF1C-6EB86AC70C22> /System/Library/Extensions/AppleIntelHD5000GraphicsGLDriver.bundle/Contents/MacOS/AppleIntelHD5000GraphicsGLDriver
### 略略

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 1
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 126005
    thread_create: 0
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=324.9M resident=0K(0%) swapped_out_or_unallocated=324.9M(100%)
Writable regions: Total=732.1M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=732.1M(100%)
 
                                VIRTUAL   REGION 
REGION TYPE                        SIZE    COUNT (non-coalesced) 
===========                     =======  ======= 
Accelerate framework               384K        4 
Activity Tracing                   256K        2 
CG backing stores                 22.5M        5 
CG image                            92K       10 
CoreAnimation                       36K        5 
CoreUI image data                 2072K       15 
CoreUI image file                  292K        6 
Dispatch continuations            16.0M        2 
Foundation                           4K        2 
IOKit                             7940K        2 
Kernel Alloc Once                    8K        2 
MALLOC                           594.5M      128 
MALLOC guard page                   48K       10 
Memory Tag 242                      12K        2 
OpenGL GLSL                        256K        4 
STACK GUARD                       54.5M       13 
Stack                             24.2M       13 
VM_ALLOCATE                         68K        9 
__DATA                            95.7M      307 
__GLSLBUILTINS                    2588K        2 
__IMAGE                            528K        2 
__LINKEDIT                       116.8M        9 
__TEXT                           208.1M      262 
__UNICODE                          556K        2 
mapped file                      129.1M       20 
shared memory                     16.4M       19 
===========                     =======  ======= 
TOTAL                              1.3G      831 

Model: MacBookPro11,4, BootROM MBP114.0184.B00, 4 processors, Intel Core i7, 2.8 GHz, 16 GB, SMC 2.29f24
Graphics: Intel Iris Pro, Intel Iris Pro, Built-In
Memory Module: BANK 0/DIMM0, 8 GB, DDR3, 1600 MHz, 0x80AD, 0x484D54343147533642465238412D50422020
Memory Module: BANK 1/DIMM0, 8 GB, DDR3, 1600 MHz, 0x80AD, 0x484D54343147533642465238412D50422020
AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x152), Broadcom BCM43xx 1.0 (7.21.171.133.1a2)
Bluetooth: Version 5.0.5f3, 3 services, 27 devices, 1 incoming serial ports
Network Service: Wi-Fi, AirPort, en0
Serial ATA Device: APPLE SSD SM0256G, 251 GB
USB Device: USB 3.0 Bus
USB Device: Apple Internal Keyboard / Trackpad
USB Device: Bluetooth USB Host Controller
USB Device: USB OPTICAL MOUSE
Thunderbolt Bus: MacBook Pro, Apple Inc., 27.1

完整版见 Emacs crash report 18-09-08 · GitHub


看上去好像是一直循环在 read1 read_listread_vector 的样子。

用gdb或lldb启动,崩溃之后看下调用栈

之前遇到过类似问题,

最简单的办法就是去掉所有配置,然后一点点加上去,看看哪里出错的

这个一点不简单, 相比之下还是我说的简单, 而且对于崩溃, 开发人员喜欢看到的是backstrace. 用gdb启动emacs不影响你正常使用, 而且崩溃的时候它会给你一个backstrace.

而且正常使用崩溃是emacs的bug, 不要应该用lisp来规避, 我看了你那个issue, 你应该报告给emacs开发者, 让emacs来解决, 而不是那样规避.

emacs开发者对崩溃bug最重视, 基本是放在第一位来解决的.

2 个赞

貌似你用的是 Emacs Mac Port,有可能是这个版本的 Emacs 特有的问题。可惜的是这个项目似乎没有专门的 Issue Tracker。你可以试试向作者求助,比较他很懂行。

1 个赞

具体问题比较明显,不是 Lisp 的问题,很大可能是编译的问题,或者是来自和 Emacs 动态链接的某个库的问题。

1 个赞

gdb 不熟,而且没有C开发的经验,怕是要debug半天。。。我还是联系开发者吧。。。

不行的,不是每次稳定复现的问题,要不然早就解决了

好的,我联系他试试