Apparently, acme still froze for me at the end of the day.
Attaching to both PIDs belonging to acme with lldb and running 'bt'
revealed that both processes were sleeping.
% ps acx | grep acme
1758 s000 SN 0:00.68 acme
1759 s000 SN 0:11.53 acme
(lldb) process attach --pid 1758
Executable module set to "/Users/sasha/plan9/bin/acme".
Architecture set to: arm64-apple-macosx-.
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
* frame #0: 0x0000000180bf106c libsystem_kernel.dylib`__psynch_cvwait + 8
frame #1: 0x0000000180c2e5fc
libsystem_pthread.dylib`_pthread_cond_wait + 1228
frame #2: 0x00000001049c9a54 acme`_procsleep(r=0x0000000138004c90)
at pthread.c:60:5 [opt]
frame #3: 0x00000001049ca4c4 acme`_threadswitch [inlined]
pthreadsleepschedlocked(p=0x00000001380047c0, t=0x0000000138004a20) at
thread.c:277:3 [opt]
frame #4: 0x00000001049ca490 acme`_threadswitch [inlined]
pthreadscheduler(p=0x00000001380047c0) at thread.c:310:4 [opt]
frame #5: 0x00000001049ca2b8 acme`_threadswitch at thread.c:143:2 [opt]
frame #6: 0x00000001049c7ef4 acme`chanalt(a=0x000000016b46b458) at
channel.c:306:2 [opt]
frame #7: 0x00000001049c843c acme`chanrecvul [inlined]
_chanop(c=<unavailable>, op=2, p=0x000000016b46b450, canblock=1) at
channel.c:326:5 [opt]
frame #8: 0x00000001049c8428 acme`chanrecvul(c=<unavailable>) at
channel.c:398:5 [opt]
frame #9: 0x0000000104995dc4 acme`threadmain + 2404
frame #10: 0x00000001049ca21c acme`procmain(p=0x00000001380047c0)
at thread.c:254:2 [opt]
frame #11: 0x00000001049cad9c acme`p9main(argc=<unavailable>,
argv=<unavailable>) at thread.c:761:2 [opt]
frame #12: 0x00000001049d0ec8 acme`main(argc=<unavailable>,
argv=<unavailable>) at main.c:10:2 [opt]
frame #13: 0x00000001808ad0e0 dyld`start + 2360
(lldb) process attach --pid 1759
Executable module set to "/Users/sasha/plan9/bin/devdraw".
Architecture set to: arm64-apple-macosx-.
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
* frame #0: 0x0000000180bed874 libsystem_kernel.dylib`mach_msg2_trap + 8
frame #1: 0x0000000180bffcf0 libsystem_kernel.dylib`mach_msg2_internal + 80
frame #2: 0x0000000180bf64b0 libsystem_kernel.dylib`mach_msg_overwrite + 476
frame #3: 0x0000000180bedbf8 libsystem_kernel.dylib`mach_msg + 24
frame #4: 0x0000000180d0bbf4 CoreFoundation`__CFRunLoopServiceMachPort + 160
frame #5: 0x0000000180d0a4bc CoreFoundation`__CFRunLoopRun + 1208
frame #6: 0x0000000180d099ac CoreFoundation`CFRunLoopRunSpecific + 608
frame #7: 0x000000018b2b8448 HIToolbox`RunCurrentEventLoopInMode + 292
frame #8: 0x000000018b2b8284 HIToolbox`ReceiveNextEventCommon + 648
frame #9: 0x000000018b2b7fdc
HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 76
frame #10: 0x00000001844e68a4 AppKit`_DPSNextEvent + 660
frame #11: 0x0000000184cc0980
AppKit`-[NSApplication(NSEventRouting)
_nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 716
frame #12: 0x00000001844d9d50 AppKit`-[NSApplication run] + 476
frame #13: 0x00000001001cacf8 devdraw`gfx_main + 480
frame #14: 0x00000001001c9b2c devdraw`threadmain + 480
frame #15: 0x00000001001d9a38
devdraw`procmain(p=0x0000000152e05260) at thread.c:254:2 [opt]
frame #16: 0x00000001001da5b8 devdraw`p9main(argc=<unavailable>,
argv=<unavailable>) at thread.c:761:2 [opt]
frame #17: 0x00000001001dcc10 devdraw`main(argc=<unavailable>,
argv=<unavailable>) at main.c:10:2 [opt]
frame #18: 0x00000001808ad0e0 dyld`start + 2360
Sam continues to work though.
Any tips on how to debug this further would be much appreciated.