C++ grpc builder.BuildAndStart()挂起在aarch64上,但不挂起x86_64

C++ grpc builder.BuildAndStart()挂起在aarch64上,但不挂起x86_64,c++,grpc,C++,Grpc,我让grpc同时处理AARC64和x86_64,但是当我将这个示例转换为一个已经存在的(CMake)项目时,只有x86_64起作用。aarch64只是挂在server.BuildAndStart()中 两个平台的代码相同: void RunServer(const std::string& db_path) { std::cout << "RunServer" << std::endl; std::string server_address("0.0.

我让grpc同时处理AARC64和x86_64,但是当我将这个示例转换为一个已经存在的(CMake)项目时,只有x86_64起作用。aarch64只是挂在server.BuildAndStart()中

两个平台的代码相同:

  void RunServer(const std::string& db_path) {
  std::cout << "RunServer" << std::endl;
  std::string server_address("0.0.0.0:50051");
  RouteGuideImpl service(db_path);
  ServerBuilder builder;
  builder.AddListeningPort(server_address, grpc::InsecureServerCredentials());
  builder.RegisterService(&service);
  //builder.SetSyncServerOption(ServerBuilder::SyncServerOption::MAX_POLLERS,2); // Doesn't make a difference
  std::cout << "Before builder.BuildAndStart()" << std::endl;
  std::unique_ptr<grpc::Server> server(builder.BuildAndStart());
  std::cout << "After builder.BuildAndStart()" << std::endl;
  std::cout << "Server listening on " << server_address << std::endl;
  server->Wait();
}
但在AARC64平台上,仅启动1+2个线程,然后grpc挂起

Starting program: /home/ubuntu/mycode/grpc_project/build/myexecutable
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fab553030 (LWP 27568)]
RunServer
DB parsed, loaded 100 features.
Before builder.BuildAndStart()
[New Thread 0x7faad53030 (LWP 27569)]
[New Thread 0x7faa553030 (LWP 27570)]
从哪里开始调试,根本原因是什么? 其他人(包括SO和其他地方)建议像这样使用ResourceQuota限制线程数量

grpc::ResourceQuota rq;
rq.SetMaxThreads(n); // n=1 or n=2
builder.SetResourceQuota(rq); 
但这没什么区别,AARC64仍然挂起


Ubuntu 16.04和aarch64(Nvidia TX2)

运气好吗?在升级到1.22.1后的x86_64上,我面临着类似的问题。我怀疑gpr_LoginTesting find@Eyal Fink的配置/安装不正确,我想我使用的是1.23。在更新到1.22.1之前,您使用了哪个版本?仍然没有这方面的消息?似乎我也遇到了同样的问题。但我在32位ARMv7上运行grpc。@Ian您使用的是哪一版本的grpc?@bits我使用的是grpc版本1.30.2。对不起,我忘了提这个。
grpc::ResourceQuota rq;
rq.SetMaxThreads(n); // n=1 or n=2
builder.SetResourceQuota(rq);