对于释放的对象不正确的校验和

将数据发布到我的expressjs应用程序,这是我得到的:

node(58287,0x7fff771ad960) malloc: *** error for object 0x7ff8a8600c58: incorrect checksum for freed object - object was probably modified after being freed. *** set a breakpoint in malloc_error_break to debug Abort trap: 6 

任何想法为什么?

更新:

这里是一些代码:

客户端:

 $.ajax({ url: 'user/' + id, type: 'POST', dataType:'JSON', data: JSON.stringify(data), success: function(response){ console.log(response); } }); 

服务器端:

 app.post('/user/:id', function(req,res){ var id = req.params.id; console.log(data); }); 

当我在客户端使用JSON.stringify时,我遇到了这个奇怪的错误:

节点(58461,0x7fff771ad960)malloc: 对象错误0x7fa861d00e28:释放对象的校验和不正确 – 对象可能在释放后被修改。 *在malloc_error_break中设置一个断点来debugging中止陷阱:6

当我不在客户端使用JSON.stringify时,服务器端会得到'null'string

任何想法,我做错了什么?

我最近经历了这个相同的错误。 这是修复:

Node.js有一些错误,导致它在OS X下从源代码安装不正确(参见例如问题2061 )。 好消息是, 打包的安装程序正确安装它。 所以,只需卸载节点,然后前往http://nodejs.org/#download并运行Macintosh安装程序。

我在这里报告了Node问题跟踪器上的这个错误。

这很可能是nodejs内部的一个bug。 (或者,如果expressjs有任何本地代码绑定,也许expressjs。)

使用JavaScript自己编写这类错误并不容易。 如果你可以随意复制,他们可能会喜欢一个错误报告。 尝试找出可以重现问题的最less量的代码。

我今天刚刚得到这个错误,并且通过MacPorts从0.8.9_0更新Node.js到0.8.10_1修复了这个问题。
这似乎并没有被特别强调,因为错误报告和更改日志并不表示(http://blog.nodejs.org/2012/09/25/node-v0-8-10-stable/) 。

我没有看到这些问题的原因 (复数 – 至less有两个错误 – jQuery,节点,快递),虽然总结和解决方法如下:

当你的客户端代码看起来像你更新的问题时,服务器显然不应该与一个malloc错误(错误#1)崩溃,虽然这是可以理解的查询是虐待,因为你告诉jQuery发送JSON,然后你发送一个string。

bug#2沿着pipe道是简单的null --> "null" 。 这至less不会导致服务器崩溃,因为数据types匹配标题(即所有人都认为我们正在使用JSON),但有人正在将空值转换为string。 我毫无根据的怀疑是它expression/连接。

最后,解决方法是简单地将数据封装成可以传输的方式,然后在服务器端展开:

客户端:

 $.post({ url: 'user/' + id, data: {workaround: JSON.stringify(data)}, // no null strings this way success: function(response){ console.log(response); } }); 

服务器端:

 app.post('/user/:id', function(req,res){ var id = req.params.id; var data = JSON.parse(req.body.workaround); // unwrap console.log(data); }); 

如果我find时间,我会调查并尝试发布一个错误报告(这是一个问题,当你不知道这是谁的错误…),请尝试这样做。

你正在调用console.log服务器端的“数据”,这是没有在你的例子范围内定义。