apache / brpc

brpc is an Industrial-grade RPC framework using C++ Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. "brpc" means "better RPC".
https://brpc.apache.org
Apache License 2.0
16.46k stars 3.96k forks source link

BRPC cause pybind embed hang #2559

Open chenzhengda opened 7 months ago

chenzhengda commented 7 months ago

Describe the bug (描述bug)

When I use brpc and pybind embed simultaneously and import numpy, the program gets stuck. However, it returns to normal once I remove the include for the brpc header file.

To Reproduce (复现方法)

#include <brpc/server.h>
#include <pybind11/embed.h>
#include <iostream>

namespace py = pybind11;

int main() {
    py::scoped_interpreter guard{};

    auto sys = py::module_::import("sys");
    std::cout << "Python version: " << sys.attr("version").cast<std::string>() << std::endl;

    // auto np = py::module_::import("numpy");
    // std::cout << "Numpy version: " << np.attr("__version__").cast<std::string>() << std::endl;

    return 0;
}

Expected behavior (期望行为)

Versions (各种版本) OS: Compiler: brpc: protobuf:

Additional context/screenshots (更多上下文/截图)

Huixxi commented 7 months ago

大概率是用法不对。