alibaba / alibaba/yalantinglibs

[coro_io] dead lock when call server::stop() in server self's thread

Open
#905 6 comments 0 reactions 1 assignee Claimed by @poor-circle View on GitHub
bug
Dominant language
C++
Stars
2.2k
Forks
327
Avg merge
1d 20h
Merged PRs (30d)
2

Description

正如coro_rpc的example代码
```
#include

#include "rpc_service.h"
using namespace coro_rpc;
using namespace async_simple;
using namespace async_simple::coro;
int main() {
// init rpc server
coro_rpc_server server(/*thread=*/std::thread::hardware_concurrency(),
/*port=*/8801);

coro_rpc_server server2{/*thread=*/1, /*port=*/8802};

// regist normal function for rpc
server.register_handler();

// regist member function for rpc
HelloService hello_service;
server.register_handler<&HelloService::hello>(&hello_service);

server2.register_handler();
// async start server
auto res = server2.async_start();
assert(!res.hasResult());

// sync start server & sync await server stop
return !server.start();
}
```
启动以后程序会一直阻塞,那么如何正常关闭程序呢,如果直接停掉程序可能无法正常调用main函数里面的变量的析构函数,我尝试在一个rpc调用函数中调用server.stop()或者在set_complete_handler里面调用server.stop()都无法正常关闭,请问还有其他方法吗? coro_rpc_server will quit之后还是无法退出

![Image](https://github.com/user-attachments/assets/3b54f5e5-d59b-4849-a875-f6b7d839e8e8)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.