在缓冲区的JavaScript代码节点js segfault

在处理节点扩展中的大量数据包时,我的节点应用程序几乎是随机的崩溃。 当我在gdb(用debugging符号编译的节点)中打开掉落的核心文件时,这就是我得到的:

Program terminated with signal 11, Segmentation fault. #0 0x5e02190a in ?? () (gdb) bt #0 0x5e02190a in ?? () #1 0x5e01316a in ?? () #2 0x08210303 in v8::internal::Invoke(bool, v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*, bool*) () #3 0x0821062f in v8::internal::Execution::New(v8::internal::Handle<v8::internal::JSFunction>, int, v8::internal::Handle<v8::internal::Object>*, bool*) () #4 0x081bfadd in v8::Function::NewInstance(int, v8::Handle<v8::Value>*) const () ... 

看看我的C包处理扩展的源代码,NewInstance实际上是对节点的缓冲区构造函数的调用。 这里是违规的代码片断(数据包是一个常规的c数据结构):

 ... v8::Local<v8::Function> bufferConstructor = v8::Local<v8::Function>::Cast(globalObj->Get(v8::String::New("Buffer"))); v8::Handle<v8::Value> constructorArgs[3] = { slowBuf->handle_, v8::Integer::New(packet->packet->dataLength), v8::Integer::New(0) }; v8::Local<v8::Object> actualBuffer = bufferConstructor->NewInstance(3, constructorArgs); 

现在,如果我正确地理解,Buffer源代码实际上是纯JS。

什么可能是找出究竟在JS代码是这个代码崩溃的原因,为什么?

代码在C级处理数千个数据包并将它们转换为节点Buffer对象时运行稳定,它总是以相同的签名不时崩溃,我想了解为什么…