2012-04-01 32 views
5

về niêm yết dữ liệu để ứng dụng expressjs của tôi, đây là những gì tôi nhận được:checksum không chính xác cho giải phóng đối tượng

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 

Bất cứ ý tưởng tại sao?

Cập nhật:

Dưới đây là một số mã:

Khách hàng bên:

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

Server side:

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

Khi tôi sử dụng JSON.stringify về phía khách hàng, tôi đánh lỗi lạ này:

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

Khi tôi không sử dụng JSON.stringify về phía khách hàng, tôi nhận được 'rỗng 'strings ở phía máy chủ.

Bất kỳ ý tưởng nào về những gì tôi đang làm sai?

+0

Hết sức tò mò, bạn đang sử dụng phiên bản Node nào? –

+0

v0.6.12 trên máy mac – Rajat

Trả lời

2

Gần đây tôi đã gặp phải lỗi này. Đây là bản sửa lỗi:

Node.js đã có một số lỗi khiến nó cài đặt không đúng từ nguồn dưới OS X (xem ví dụ: issue 2061). Tin tốt là trình cài đặt được đóng gói sẽ cài đặt chính xác. Vì vậy, chỉ cần gỡ cài đặt Nút, sau đó đi đến http://nodejs.org/#download và chạy Trình cài đặt Macintosh.

Tôi đã báo cáo lỗi này trên bộ theo dõi vấn đề Node here.

2

Đây có thể là lỗi trong nội bộ của nodejs. (Hoặc, nếu expressjs có bất kỳ ràng buộc mã nguồn gốc nào, có lẽ là expressjs.)

Không có cách nào dễ dàng để bạn tự viết loại lỗi này bằng JavaScript. Nếu bạn có thể tái tạo điều này theo ý thích, họ có thể muốn báo cáo lỗi. Cố gắng tìm ra số lượng mã ít nhất có thể tái tạo vấn đề.

0

Tôi đã không nhìn vào nguyên nhân của những vấn đề này (số nhiều - có được rõ ràng ít nhất hai lỗi ở đâu đó dọc theo dòng - jquery, nút, thể hiện), mặc dù một bản tóm tắt và cách giải quyết như sau:

Khi mã phía máy khách của bạn trông giống như trong câu hỏi được cập nhật của bạn, máy chủ rõ ràng không bị lỗi với lỗi malloc (lỗi # 1), mặc dù có thể hiểu rằng truy vấn bị ngược đãi, vì bạn đang nói jquery gửi json và sau đó bạn gửi một chuỗi.

lỗi # 2 chỉ đơn giản là null --> "null" dọc theo đường ống. Điều này ít nhất không gây ra sự cố máy chủ, vì loại dữ liệu khớp với tiêu đề (nghĩa là mọi người nghĩ rằng chúng tôi đang sử dụng json), tuy nhiên ai đó đang chuyển đổi null thành chuỗi. Nghi ngờ vô căn cứ của tôi là nó thể hiện/kết nối.

Cuối cùng, cách giải quyết đơn giản là để bọc dữ liệu của bạn trong một cách mà quản lý được vận chuyển, và sau đó unwrap ở phía máy chủ:

Khách hàng bên:

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

Server side :

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

Nếu tôi tìm thấy thời gian, tôi sẽ điều tra và thử và đăng ab ug báo cáo một nơi nào đó (đó là một vấn đề khi bạn không biết có lỗi này là ...), hãy thử làm điều này là tốt.

+0

Tôi đã đăng sự cố này trên các nhóm google expressjs nhưng tôi chưa nhận được bất kỳ phản hồi nào. – Rajat

+0

Ngoài ra, Truy vấn không sai trong mã phía máy khách mà tôi đã đăng. 'dataType': 'json' là định dạng của phản hồi mà bạn mong đợi từ máy chủ, không phải là kiểu dữ liệu mà bạn gửi cho nó. – Rajat

+0

@ Rajat, thực sự, rằng 'dataType' luôn luôn theo dõi tôi, tôi ủy quyền nó được đổi tên thành' returnDataType' ... Workaround vẫn hoạt động mặc dù, và khá đơn giản để thực hiện trong thời gian chờ đợi. – davin

0

Bạn đang gọi console.log phía máy chủ trên 'dữ liệu' không được xác định trong phạm vi ví dụ của bạn.

1

Tôi vừa gặp lỗi này ngay hôm nay và cập nhật Node.js thông qua MacPorts từ 0.8.9_0 đến 0.8.10_1 đã khắc phục sự cố.
Dường như điều này không được nhấn mạnh cụ thể, vì báo cáo lỗi và biểu tượng thay đổi không cho biết (http://blog.nodejs.org/2012/09/25/node-v0-8-10-stable /).

Các vấn đề liên quan