diff --git a/pybind/MTA.cpp b/pybind/MTA.cpp index 0d64ef0..de214ab 100644 --- a/pybind/MTA.cpp +++ b/pybind/MTA.cpp @@ -35,7 +35,10 @@ void bind_multi_thread_analysis(py::module& m) { py::class_>(m, "MHP", "May-Happen-in-Parallel analysis class") .def(py::init([](std::shared_ptr tct){ - return std::make_shared(tct.get()); + std::unique_ptr mhp = MHP::create( + tct.get(), tct->getPTA()->getICFG(), + static_cast(tct->getThreadCallGraph())); + return std::shared_ptr(mhp.release()); }), py::arg("tct"), "Initialize MHP analysis", py::keep_alive<1, 2>()) @@ -63,9 +66,11 @@ void bind_multi_thread_analysis(py::module& m) { py::class_>(m, "TCT", "Thread Creation Tree class") .def(py::init([](std::shared_ptr pta){ - return std::make_shared(SVFUtil::dyn_cast(pta.get())); + std::unique_ptr tct = TCT::create( + SVFUtil::dyn_cast(pta.get())); + return std::shared_ptr(tct.release()); }), py::arg("pa"), "Initialize Thread Creation Tree with AndersenBase Pointer Analysis", - py::keep_alive<2,1>()) + py::keep_alive<1, 2>()) .def("getThreadCallGraph", [](TCT &self) -> CallGraph* { ThreadCallGraph* tcg = self.getThreadCallGraph(); if (tcg == nullptr)