句柄OK全部崩溃

HandleOKCallback crash

本文关键字:崩溃 全部 OK 句柄      更新时间:2023-10-16

嗨,如果我检查 argv[1],当我执行时,下面的代码崩溃了。请帮助 修复它,在将值分配给 argv[1] 时,我需要检查布尔变量checktrue是否为真 分配字符串值 否则分配 int 值,如下代码所示。

void DispatchEventWorker::HandleOKCallback() {
v8::Local<v8::Value> argv[2];
argv[0]= Nan::New<v8::String>(structdata.value1).ToLocalChecked();
if(checktrue)
{
argv[1] = Nan::New<v8::Number>(structdata.value2).ToLocalChecked();
}
else
{
argv[1] = Nan::New<v8::String>(structdata.value3);
}
callback->Call(2, argv);
}

注意输出:进程123432098(节点(终止 SIGSEGV 代码=1 fltno=11 ip=0000000001076a08(/usr/lib/ldqnx-64.so.2@memcpy+0x0000000000000048( mapaddr=00000000000076a08。 ref=2073696874206f74

首先,我建议您在回调JS时始终包含async_resource,否则某些Node.js功能将不起作用:

this->callback->Call(2, argv, this->async_resource);

然后,您的代码缺少argv[1]上的.ToLocalChecked(),并且无法以当前形式编译。

否则,它没有任何根本性的问题,并且很可能崩溃与 Node 无关.js - 也许这些值之一是空指针。