开源改变世界

致命错误 – 分配失败 #516

推推 grbl 3年前 (2023-02-03) 203次浏览
打开
12 个任务中的第 3 个
JensAChristensen 打开了这个问题 2019 年 9 月 13 日 · 18条评论
打开
12 个任务中的第 3 个

致命错误 – 分配失败#516

JensAChristensen 打开了这个问题 2019 年 9 月 13 日 · 18条评论

注释

致命错误 - 分配失败 #516

描述

运行服务器几分钟后,它崩溃并显示以下消息:
pi@raspberrypi:~ $ cnc
2019-09-13T10:07:09.717Z – info init Loading configuration from “/home/pi/.cncrc”
2019- 09-13T10:07:11.300Z – info init 在http://127.0.1.1:8000启动服务器

<— 最后几次 GC —>

[3354:0x2c76e78] 192585 ms: Scavenge 695.5 (722.6) -> 694.5 (723.1) MB, 15.9 / 0.0 ms (平均 mu = 0.134, 当前 mu = 0.064) 分配失败
[3354:0x2c76e78] 192685 ms: Scavenge (723.18) ) -> 695.0 (724.6) MB,19.4 / 0.0 ms(平均 mu = 0.134,当前 mu = 0.064)分配失败
[3354:0x2c76e78] 192788 ms:清除 696.4 (724.6) -> 695.5 (730.1) MB,26.8 / 0.0 ms(平均 mu = 0.134,当前 mu = 0.064)分配失败

<— JS 堆栈跟踪 —>

FATAL ERROR: Ineffective mark-compacts near heap limit 分配失败 – JavaScript 堆内存不足

版本

  • CNCjs:1.9.20
  • 节点.js:10.16.3
  • NPM:6.11.3

你如何安装CNCjs?

  • NPM
  • 下载 CNCjs 桌面应用程序

数控系统

  • Grbl
  • 冰沙
  • TinyG/g2core
    马林鱼

硬件

  • 树莓派
  • 台式机或笔记本电脑
  • 移动设备

操作系统

  • 不适用
  • 视窗
  • 苹果
  • Linux
致命错误 - 分配失败 #516

Pi是什么味道?是否有其他正在运行的进程正在使用大量内存?“top”命令将告诉您有关进程内存使用情况的信息。

致命错误 - 分配失败 #516

这是 Pi 4b 4gb。除了 GUI 和 chromium 之外没有其他运行

致命错误 - 分配失败 #516

尝试在没有连接 RAMPS 板的情况下运行服务器,一切正常。CNC.js 占用了大约 1.3% 的内存,而使用量没有任何增加。
然后我附加了 RAMPS,内存使用率以每秒 0.2% 的速度增加,直到达到 19.3% 并崩溃……

致命错误 - 分配失败 #516

听起来像是 MarlinController 子系统中的内存泄漏

致命错误 - 分配失败 #516

我现在没有时间追查这个问题,但如果您想做一些实验来帮助隔离问题,可以尝试以下方法。
对于测试,您可以通过直接编辑文件 dist/cncjs/server/index.js 进行小的更改而无需重新编译。在该文件中,一行出现了三次“_this.query.issue()”。这些线路的目的是定期向 Marlin 询问位置和温度更新。我怀疑的原因是因为这是我能想到的唯一独立于 GCode 活动的自主发生的想法。

首先,保存 index.js 的副本,以便您可以轻松返回到未修改的版本。然后注释掉这些行(在开头添加“//”)并重新启动服务器。如果这消除了不断增加的内存使用量,我们就知道那里存在泄漏。可能还有其他泄漏,但最好先查找一下。

致命错误 - 分配失败 #516

我没有名为 dist/cncjs/server/index.js 的文件….

致命错误 - 分配失败 #516

抱歉,这是开发版文件的新名称。1.9.20版本,全局安装时,文件为/usr/lib/node_modules/cncjs/dist/cnc/app/index.js

致命错误 - 分配失败 #516

注释掉 3 _this.query.issue() 行不会有任何变化。

我也尝试将另一个版本的 Marlin 闪烁到坡道板上,但也没有任何改变

致命错误 - 分配失败 #516

也许我可以抽出时间研究一下,但可能不会很快。内存泄漏可能很难发现,而且我不喜欢 Javascript,所以我将不得不学习一些调试技术。Cheton 或许可以更快地找到它,但他现在真的很忙。

致命错误 - 分配失败 #516

只有当我使用 /dev/tty/AMA0 连接时我才会遇到问题。如果我使用 /dev/tty/USB0 连接,一切都很好……

致命错误 - 分配失败 #516
合作者

node-serialport 存储库中讨论了几个内存泄漏问题,一些用户报告说内存使用量正在稳步增加。

我不确定内存泄漏问题是否已在node-serialport@6.2.2(用于 CNCjs 1.9.20)中得到解决,但如果蓝牙使用 ttyAMA0,您可以尝试以下解决方案。

串行端口/节点串行端口#1583(注释)

原因

在 RPi 零 W(可能还有 RPi 3)上,端口 serial1 链接到 ttyAMA0 并由蓝牙使用

解决方案2(也许更好)

如果不需要蓝牙,将 dtoverlay=pi3-disable-bt 添加到 /boot/config.txt 并重新启动。现在完整的 UART /dev/ttyAMA0 可用于 GPIO14 和 15。

否则,如果开发板是使用 USB 电缆连接的,那么通过串行设备 /dev/ttyUSB0 连接应该是正确的选择。

致命错误 - 分配失败 #516 奇顿 添加了 调查 标签 2019 年 9 月 18 日
致命错误 - 分配失败 #516

我意识到没有帮助,但我在使用 PI3 时也遇到了这个问题。我只是经验不足,无法在 PI 上启动并运行它……所以我深表歉意。我看到你在讨论串行端口的东西,我不知道如何创建一个非 root 用户所以我不得不使用 –usafe-perm 参数安装 CNCjs。这与问题有关吗?

致命错误 - 分配失败 #516

a) –unsafe-perm 不太可能与问题有关
b) 如果你使用像 Raspbian 这样的普通 Pi 发行版之一,你将自动拥有一个名为“pi”的非根用户

致命错误 - 分配失败 #516 cheton 添加 更多信息 并删除 调查 标签 2020 年 3 月 4 日
致命错误 - 分配失败 #516

因此,似乎只有当您尝试连接到没有连接任何东西(至少没有 CNC 或其他任何东西)的 /dev/ttyAMA0 时,才会发生错误。如果您通过 USB 端口连接 CNC,它被称为 /dev/ttyAMC0 而不是 ttyAMA0。当您通过此真实连接进行连接时,问题不再发生。因此,简单地忽略或隐藏 ttyAMA0 接口就可以解决问题。那么没有人可以尝试通过这个不存在的连接?界面。我不是程序员,所以我只想提供一些提示以找到解决方案。

致命错误 - 分配失败 #516

不幸的是,在某些情况下您确实需要使用 ttyAMA0。流行的 Protoneer Pi CNC 屏蔽通过 ttyAMA0 连接,因此排除它会破坏与该屏蔽的兼容性。

这是一种恼人的“做也该死,不做也该死”的情况。

还可以考虑尝试快速检测控制器是否连接到端口。CNCjs 实际上确实尝试这样做,但由于一些固有的挑战,它并不完美。CNCjs 支持的四种不同协议(Grbl、TinyG/g2core、Smoothie、Marlin)在启动和重新连接时都有不同的行为,即使在单一控制器类型中,行为也会根据您使用的微处理器及其串行方式而改变港口实施。这是一个非常困难的问题。要完美地做到这一点,如果可能的话(相互冲突的要求),将需要针对不断增长的控制器列表进行持续测试。例如,Marlin 2.0 目前支持 11 种不同的基本微控制器。Microsoft Windows 等商业产品在设备齐全的实验室中拥有庞大的测试团队,

CNCjs 开发主要是一个人(Cheton),他全职做其他事情。

致命错误 - 分配失败 #516

我为我的 PI 获得了这段代码 我将我的 GPU_MEM 设置为 512 将其更改为 256 现在似乎在 PI 4 4G 模型上工作正常

致命错误 - 分配失败 #516
贡献者

☝️其他人可以确认增加 GPU_MEM 可以解决这个问题吗?

致命错误 - 分配失败 #516
xemsilet 评论了 2022 年 3 月 28 日  

☝️其他人可以确认增加 GPU_MEM 可以解决这个问题吗?

如果你有 1-2 gig 模型,这是对 gpu 超频的问题,你可能有问题我给了我的邻居我的 4 gig 模型,我对 gpu 超频并得到错误我可能在模型上错了但它是值得的信息,但如果您有 sudo apt install neofetch,则不需要超频 gpu 如果您有备用内存,请查看您的内存使用情况,您可以自行承担超频系统的风险,但我发现它对于带有迷你风扇的系统来说是稳定的,并且小散热器

arm_freq=2000
over_voltage=6
gpu_freq=650
gpu_mem=256

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
项目
状态:阻塞/等待
发展

没有分支机构或拉取请求

7人参加
致命错误 - 分配失败 #516致命错误 - 分配失败 #516致命错误 - 分配失败 #516致命错误 - 分配失败 #516致命错误 - 分配失败 #516致命错误 - 分配失败 #516致命错误 - 分配失败 #516

喜欢 (0)