Mac OS 如果使用 "rails server",Catalina 无法正确关闭
Mac OS Catalina does not shutdown correctly if "rails server" is used
我一直在 Mac OS Catalina 上使用 rails server
和 Rails 6.0.1。我注意到,如果启动服务器(无论是使用 Puma 还是 unicorn),然后将其关闭,并尝试关闭计算机,它就会挂起,直到 Apple 的看门狗强行关闭系统。下次启动时,我总是得到相同的崩溃报告。
panic(cpu 2 caller 0xffffff7f8ef9daae): watchdog timeout: no checkins from watchdogd in 187 seconds (21 totalcheckins since monitoring last enabled), shutdown in progress
Backtrace (CPU 2), Frame : Return Address
0xffffff83b7473c40 : 0xffffff800e539a3b
0xffffff83b7473c90 : 0xffffff800e670fe5
0xffffff83b7473cd0 : 0xffffff800e662a5e
0xffffff83b7473d20 : 0xffffff800e4e0a40
0xffffff83b7473d40 : 0xffffff800e539127
0xffffff83b7473e40 : 0xffffff800e53950b
0xffffff83b7473e90 : 0xffffff800ecd1875
0xffffff83b7473f00 : 0xffffff7f8ef9daae
0xffffff83b7473f10 : 0xffffff7f8ef9d472
0xffffff83b7473f50 : 0xffffff7f8efb2e76
0xffffff83b7473fa0 : 0xffffff800e4e013e
Kernel Extensions in backtrace:
com.apple.driver.watchdog(1.0)[AA44EEB8-57FA-3CAC-9105-C7AB21900B9A]@0xffffff7f8ef9c000->0xffffff7f8efa4fff
com.apple.driver.AppleSMC(3.1.9)[6DA4BDC6-9C64-34B3-A60E-D345D2DC2D5F]@0xffffff7f8efa5000->0xffffff7f8efc3fff
dependency: com.apple.driver.watchdog(1)[AA44EEB8-57FA-3CAC-9105-C7AB21900B9A]@0xffffff7f8ef9c000
dependency: com.apple.iokit.IOACPIFamily(1.4)[4A40B298-87E0-373E-84A9-9A2227924F8F]@0xffffff7f8ef07000
dependency: com.apple.iokit.IOPCIFamily(2.9)[AA7C7A4F-9F5D-3533-9E78-177C3B6A72BF]@0xffffff7f8ef10000
BSD process name corresponding to current thread: kernel_task
Boot args: chunklist-security-epoch=0 -chunklist-no-rev2-dev
Mac OS version:
19B88
Kernel version:
Darwin Kernel Version 19.0.0: Thu Oct 17 16:17:15 PDT 2019; root:xnu-6153.41.3~29/RELEASE_X86_64
有其他人遇到过这个问题吗?您是如何解决的?我的猜测是 rails server
会留下一些进程 运行 即使在通过 Ctrl-C 关闭后也会阻止 OS 正确关闭。
这是 Catalina 的常见问题,Apple 显然不关心它。可以看到this stackexchange thread, and Apple forum discussion.
到目前为止,没有可用的修复程序,但重置 SMC/NVRAM 可以让您正常关机。
不受此问题影响的一种方法是使用 Docker and docker-compose。
我知道它不能解决您的根本问题,但是 Docker 您是 OS 不可知论者,因此您可以处理任何 OSes 而您的项目仍然有效如果可以 install Docker。您还将在 OS 次升级后幸存下来。
Docker 现在非常普遍和流行,因此您可以从社区获得很多帮助,有很多博客文章解释了如何将 Rails 应用程序容器化。
不是很专业的方法,但是...
- 打开一个终端(如果可能的话,特权)
- 使用 "ps"("ps awxu" 我似乎记得)拍摄快照运行 进程
- 启动 Rails 服务器
- 稍微修改一下
- 现在停止服务器
- 拍一张快照
我完全希望留下一些低级别的后台进程 运行 而不会监听关闭信号。 MacOS 关机过程可能过于规规矩矩和有礼貌了。
如果是这种情况,获取进程的 PID 或名称并尝试使用 HUP、TERM 和最后的 KILL 信号将其杀死。您可以通过检查它们的图像路径来很好地了解这些进程从哪里开始(注意不要杀死无辜的进程)。
等待一段时间以确保 pkilling 进程不会使系统处于不稳定状态,然后尝试关闭机器并查看运行情况。
我也发现了这个问题。
此问题是关于 Catalina
对 Graphic Processing Unit
的支持
如果你用的是NVIDIA
图形芯片,Catalina
没问题,
但是在Catalina
中使用AMD
会有问题
特别是2015年macbook pro
很多APP提供商已经兼容这个问题,
但苹果公司一直没有回应。
对于用户来说,这是 Apple 的问题。
我一直在 Mac OS Catalina 上使用 rails server
和 Rails 6.0.1。我注意到,如果启动服务器(无论是使用 Puma 还是 unicorn),然后将其关闭,并尝试关闭计算机,它就会挂起,直到 Apple 的看门狗强行关闭系统。下次启动时,我总是得到相同的崩溃报告。
panic(cpu 2 caller 0xffffff7f8ef9daae): watchdog timeout: no checkins from watchdogd in 187 seconds (21 totalcheckins since monitoring last enabled), shutdown in progress
Backtrace (CPU 2), Frame : Return Address
0xffffff83b7473c40 : 0xffffff800e539a3b
0xffffff83b7473c90 : 0xffffff800e670fe5
0xffffff83b7473cd0 : 0xffffff800e662a5e
0xffffff83b7473d20 : 0xffffff800e4e0a40
0xffffff83b7473d40 : 0xffffff800e539127
0xffffff83b7473e40 : 0xffffff800e53950b
0xffffff83b7473e90 : 0xffffff800ecd1875
0xffffff83b7473f00 : 0xffffff7f8ef9daae
0xffffff83b7473f10 : 0xffffff7f8ef9d472
0xffffff83b7473f50 : 0xffffff7f8efb2e76
0xffffff83b7473fa0 : 0xffffff800e4e013e
Kernel Extensions in backtrace:
com.apple.driver.watchdog(1.0)[AA44EEB8-57FA-3CAC-9105-C7AB21900B9A]@0xffffff7f8ef9c000->0xffffff7f8efa4fff
com.apple.driver.AppleSMC(3.1.9)[6DA4BDC6-9C64-34B3-A60E-D345D2DC2D5F]@0xffffff7f8efa5000->0xffffff7f8efc3fff
dependency: com.apple.driver.watchdog(1)[AA44EEB8-57FA-3CAC-9105-C7AB21900B9A]@0xffffff7f8ef9c000
dependency: com.apple.iokit.IOACPIFamily(1.4)[4A40B298-87E0-373E-84A9-9A2227924F8F]@0xffffff7f8ef07000
dependency: com.apple.iokit.IOPCIFamily(2.9)[AA7C7A4F-9F5D-3533-9E78-177C3B6A72BF]@0xffffff7f8ef10000
BSD process name corresponding to current thread: kernel_task
Boot args: chunklist-security-epoch=0 -chunklist-no-rev2-dev
Mac OS version:
19B88
Kernel version:
Darwin Kernel Version 19.0.0: Thu Oct 17 16:17:15 PDT 2019; root:xnu-6153.41.3~29/RELEASE_X86_64
有其他人遇到过这个问题吗?您是如何解决的?我的猜测是 rails server
会留下一些进程 运行 即使在通过 Ctrl-C 关闭后也会阻止 OS 正确关闭。
这是 Catalina 的常见问题,Apple 显然不关心它。可以看到this stackexchange thread, and Apple forum discussion.
到目前为止,没有可用的修复程序,但重置 SMC/NVRAM 可以让您正常关机。
不受此问题影响的一种方法是使用 Docker and docker-compose。
我知道它不能解决您的根本问题,但是 Docker 您是 OS 不可知论者,因此您可以处理任何 OSes 而您的项目仍然有效如果可以 install Docker。您还将在 OS 次升级后幸存下来。
Docker 现在非常普遍和流行,因此您可以从社区获得很多帮助,有很多博客文章解释了如何将 Rails 应用程序容器化。
不是很专业的方法,但是...
- 打开一个终端(如果可能的话,特权)
- 使用 "ps"("ps awxu" 我似乎记得)拍摄快照运行 进程
- 启动 Rails 服务器
- 稍微修改一下
- 现在停止服务器
- 拍一张快照
我完全希望留下一些低级别的后台进程 运行 而不会监听关闭信号。 MacOS 关机过程可能过于规规矩矩和有礼貌了。
如果是这种情况,获取进程的 PID 或名称并尝试使用 HUP、TERM 和最后的 KILL 信号将其杀死。您可以通过检查它们的图像路径来很好地了解这些进程从哪里开始(注意不要杀死无辜的进程)。
等待一段时间以确保 pkilling 进程不会使系统处于不稳定状态,然后尝试关闭机器并查看运行情况。
我也发现了这个问题。
此问题是关于 Catalina
对 Graphic Processing Unit
如果你用的是NVIDIA
图形芯片,Catalina
没问题,
但是在Catalina
中使用AMD
会有问题
特别是2015年macbook pro
很多APP提供商已经兼容这个问题,
但苹果公司一直没有回应。
对于用户来说,这是 Apple 的问题。