Closed
Description
Required prerequisites
- Make sure you've read the documentation. Your issue may be addressed there.
- Search the issue tracker and Discussions to verify that this hasn't already been reported. +1 or comment there if it has.
- Consider asking first in the Gitter chat room or in a Discussion.
Problem description
Like issue #1472,
we still have problem in 2.10.0
free(): invalid pointer
c++ code:
#include "pybind11/embed.h"
#include <iostream>
#include <thread>
#include <chrono>
#include <sstream>
namespace py = pybind11;
using namespace std::chrono_literals;
class Wrapper
{
public:
Wrapper()
{
py::gil_scoped_acquire acquire;
_obj = py::module::import("wrapper").attr("Wrapper")();
_wrapperInit = _obj.attr("wrapperInit");
_wrapperFini = _obj.attr("wrapperFini");
}
~Wrapper()
{
_wrapperInit.release();
_wrapperFini.release();
}
int wrapperInit()
{
py::gil_scoped_acquire acquire;
return _wrapperInit(nullptr).cast<int>();
}
void wrapperFini(int x)
{
py::gil_scoped_acquire acquire;
_wrapperFini(x);
}
private:
py::object _obj;
py::object _wrapperInit;
py::object _wrapperFini;
};
void thread_func(int iteration)
{
Wrapper w;
for (int i = 0; i < 1; i++)
{
w.wrapperInit();
std::stringstream msg;
msg << "iteration: " << iteration << " thread: " << std::this_thread::get_id() << std::endl;
std::cout << msg.str();
std::this_thread::sleep_for(100ms);
}
}
int main() {
py::scoped_interpreter guard{};
py::gil_scoped_release release; // add this to release the GIL
std::vector<std::thread> threads;
for (int i = 0; i < 1; ++i)
threads.push_back(std::thread(thread_func, 1));
for (auto& t : threads)
t.join();
return 0;
}
wrapper.py code is
class Wrapper():
serviceId = "mmocr"
version = "backup.0"
'''
服务初始化
@param config:
插件初始化需要的一些配置,字典类型
key: 配置名
value: 配置的值
@return
ret: 错误码。无错误时返回0
'''
def wrapperInit(cls, config: {}) -> int:
import torch
print(config)
print("Initializing ..")
return 0
def wrapperFini(cls) -> int:
return 0
we run this code in ubuntu18.04 docker container. and the repo is public.ecr.aws/iflytek-open/opensource/demo/mmocr:v3.1
Reproducible example code
No response