C++ 从Google语音API获取中止陷阱:6

C++ 从Google语音API获取中止陷阱:6,c++,google-speech-api,C++,Google Speech Api,我的具体问题是如何修复Google gRPC(语音API)中的“中止陷阱:6”错误。更一般地说,当有人试图使用这些服务时,任何关于故障排除的提示都将不胜感激。我还没有找到好的C++文档,只是在互联网上随机提示。 我已经成功运行了流媒体示例。当我试图修改代码以从麦克风传入数据时,我的新代码在返回第一个临时响应时崩溃 我正在使用调试输出运行,使用GRPC\u VERBOSITY=debug GRPC\u TRACE=api./testSpeech 我在输出中看到的失败代码与工作示例之间的关键区别如下

我的具体问题是如何修复Google gRPC(语音API)中的“中止陷阱:6”错误。更一般地说,当有人试图使用这些服务时,任何关于故障排除的提示都将不胜感激。我还没有找到好的C++文档,只是在互联网上随机提示。 我已经成功运行了流媒体示例。当我试图修改代码以从麦克风传入数据时,我的新代码在返回第一个临时响应时崩溃

我正在使用调试输出运行,使用
GRPC\u VERBOSITY=debug GRPC\u TRACE=api./testSpeech

我在输出中看到的失败代码与工作示例之间的关键区别如下:

工作日志

I1221 07:01:42.805304000 123145420480512 completion_queue.cc:764]      cq_end_op_for_pluck(cq=0x7faa705043e0, tag=0x7000070b1990, error="No Error", done=0x10f9e3740, done_arg=0x7faa70467310, storage=0x7faa70467388)
I1221 07:01:42.805330000 123145420480512 completion_queue.cc:1297]     RETURN_EVENT[0x7faa705043e0]: OP_COMPLETE: tag:0x7000070b1990 OK
I1221 07:01:43.029567000 4652266944 completion_queue.cc:764]           cq_end_op_for_pluck(cq=0x7faa705043e0, tag=0x7ffee04f8350, error="No Error", done=0x10f9e3740, done_arg=0x7faa705304d0, storage=0x7faa70530548)
I1221 07:01:43.029637000 4652266944 completion_queue.cc:1297]          RETURN_EVENT[0x7faa705043e0]: OP_COMPLETE: tag:0x7ffee04f8350 OK
Result stability: 0.01
0   how
故障日志

I1221 08:00:32.559490000 4561257920 call.cc:1967]                      grpc_call_start_batch(call=0x7fe4f1033660, ops=0x7ffeec81b2d0, nops=1, tag=0x7ffeec81b630, reserved=0x0)
I1221 08:00:32.559509000 4561257920 call.cc:1566]                      ops[0]: SEND_MESSAGE ptr=0x7fe4f0571e00
I1221 08:00:32.559619000 4561257920 completion_queue.cc:764]           cq_end_op_for_pluck(cq=0x7fe4f0615f60, tag=0x7ffeec81b630, error="No Error", done=0x1036c18f0, done_arg=0x7fe4f0616820, storage=0x7fe4f0616898)
I1221 08:00:32.559650000 4561257920 completion_queue.cc:1297]          RETURN_EVENT[0x7fe4f0615f60]: OP_COMPLETE: tag:0x7ffeec81b630 OK
After write
I1221 08:00:32.559680000 4561257920 metadata_array.cc:34]              grpc_metadata_array_destroy(array=0x7ffeec81bc50)
I1221 08:00:32.559687000 4561257920 metadata_array.cc:34]              grpc_metadata_array_destroy(array=0x7ffeec81bc18)
After sending chunk
I1221 08:00:32.712612000 123145462775808 completion_queue.cc:764]      cq_end_op_for_pluck(cq=0x7fe4f0615f60, tag=0x7000099075d0, error="No Error", done=0x1036c18f0, done_arg=0x7fe4f040cc10, storage=0x7fe4f040cc88)
I1221 08:00:32.712655000 123145462775808 completion_queue.cc:1297]     RETURN_EVENT[0x7fe4f0615f60]: OP_COMPLETE: tag:0x7000099075d0 OK
I1221 08:00:32.712712000 123145462775808 call.cc:573]                  grpc_call_unref(c=0x7fe4f1033660)
Result stability: 0.01
0   what time
I1221 08:00:32.712930000 123145462775808 call.cc:1967]                 grpc_call_start_batch(call=0x7fe4f1033660, ops=0x700009907300, nops=2, tag=0x7000099075d0, reserved=0x0)
I1221 08:00:32.712945000 123145462775808 call.cc:1566]                 ops[0]: RECV_INITIAL_METADATA ptr=0x7ffeec81bc18
I1221 08:00:32.712954000 123145462775808 call.cc:1566]                 ops[1]: RECV_MESSAGE ptr=0x7000099075f8
E1221 08:00:32.712961000 123145462775808 call_op_set.h:947]            assertion failed: false
Abort trap: 6
注意我失败的版本中的
grpc\u metadata\u array\u destroy
调用,但不是工作示例。它们出现在我发送的每个音频样本块中。熟悉这些API的人有什么建议吗

编辑:失败的断言来自gRPC中的以下代码段:

if (err != GRPC_CALL_OK) {
  // A failure here indicates an API misuse; for example, doing a Write
  // while another Write is already pending on the same RPC or invoking
  // WritesDone multiple times
  // gpr_log(GPR_ERROR, "API misuse of type %s observed",
  //        g_core_codegen_interface->grpc_call_error_to_string(err));
  GPR_CODEGEN_ASSERT(false);
}
取消对日志的注释表示错误是“GRPC_CALL_error_TOO_MANY_operation”,尽管我只处理一个音频流。示例代码只是在每次写入后(似乎)任意休眠1秒。

中止信号(信号6)通常是由
assert()
某个地方引起的。通常强烈表明您违反了某些函数的先决条件。中止信号(信号6)通常是由某个地方的
assert()
引起的。通常是一个强烈的迹象,表明您违反了某些函数的先决条件。