节点.js和分段故障
node.js and Segmentation fault
>是否可以在node.js
进入分段错误时检查javascript堆栈跟踪?
目前的情况如下:我正在运行一个脚本,该脚本具有一些嵌套async.eachSeries
,由于某种奇怪的原因导致RangeError: Maximum call stack size exceeded
。因此,我通过node --stack-size=1000000
增加了堆栈大小,并且留下了分段错误。
以下是脚本的源代码:http://nopaste.info/ca0c118591.html
更新
我也尝试了segfault-handler
,但由于某种难以理解的原因,它没有抓住我的段错误。
有一个segfault-handler
模块,它可以捕获非Windows平台上的段错误并生成堆栈跟踪。但是如果你得到一个RangeError
,那不是段错误。
这可能意味着您的代码中的某处有递归。由于 V8 删除了对 TCO(尾部调用优化)的支持,因此呼叫大小将增长,直到爆炸。
使用 --stack_size
似乎是一个自然的解决方案,但它实际上并没有增加堆栈大小,它告诉 V8 假设有更大的堆栈大小,而实际上这是由操作系统控制的。
来源:
- https://github.com/nodejs/node-v0.x-archive/issues/5669
- https://github.com/nodejs/node/issues/6360
- 节点.js尾调用优化:可能与否?
所以现在(使用 Node.js 8.x),最好的解决方案很简单,停止使用递归函数。
相关文章:
- javascript.点击隐藏事件故障
- JS条件故障排除
- 尝试初始化()Spine's控制器和故障
- 物体故障
- 间歇性浏览捆绑包故障(可能是brfs)
- CORS故障无法解决jquery,laravel5.2
- 如何使用Ember将动态分段的值输出到页面上
- Django无法通过urls.py配置找到djangular/app.js文件.如何进行故障排除
- 将时间转换为UTC时出现故障
- Jquery&有故障的功能
- 如何使用jQuery来添加分段的表单字段,并在添加不同值时进行更新
- 具有相同名称的嵌套分段,单击选择正确的分段
- 对 Drupal 站点的客户端 JS 问题进行故障排除
- 如果在线检查期间发生电源故障,我们如何更新用户再次登录门户时的剩余时间
- Raphael悬停事件和调整大小框在第三次鼠标悬停后发生故障
- ES6-Promises在使用Node MySQL时出现故障
- 计算故障-Javascript形式
- Ajax对复杂字符串进行故障切换
- iMacros机架名称故障排除
- 节点.js和分段故障