Skip to content

Commit 072c2c5

Browse files
authored
Fixed undefined behavior of detached thread (#663)
1 parent 19b788f commit 072c2c5

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

include/xeus-python/xdebugger.hpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@
1717
#endif
1818

1919
#include <map>
20+
#include <memory>
2021
#include <mutex>
2122
#include <set>
2223

2324
#include "nlohmann/json.hpp"
2425
#include "pybind11/pybind11.h"
2526
#include "xeus-zmq/xdebugger_base.hpp"
27+
#include "xeus-zmq/xthread.hpp"
2628
#include "xeus_python_config.hpp"
2729

2830
namespace py = pybind11;
@@ -62,11 +64,12 @@ namespace xpyt
6264
xeus::xdebugger_info get_debugger_info() const override;
6365
std::string get_cell_temporary_file(const std::string& code) const override;
6466

65-
xdebugpy_client* p_debugpy_client;
67+
std::unique_ptr<xdebugpy_client> p_debugpy_client;
6668
std::string m_debugpy_host;
6769
std::string m_debugpy_port;
6870
nl::json m_debugger_config;
6971
py::object m_pydebugger;
72+
xeus::xthread m_client_runner;
7073
bool m_copy_to_globals_available;
7174
};
7275

src/xdebugger.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,6 @@ namespace xpyt
7070

7171
debugger::~debugger()
7272
{
73-
delete p_debugpy_client;
74-
p_debugpy_client = nullptr;
7573
}
7674

7775
nl::json debugger::inspect_variables_request(const nl::json& message)
@@ -325,13 +323,12 @@ namespace xpyt
325323
bind_sockets(controller_header_end_point, controller_end_point);
326324

327325
std::string debugpy_end_point = "tcp://" + m_debugpy_host + ':' + m_debugpy_port;
328-
std::thread client(&xdap_tcp_client::start_debugger,
329-
p_debugpy_client,
326+
m_client_runner = xeus::xthread(&xdap_tcp_client::start_debugger,
327+
p_debugpy_client.get(),
330328
debugpy_end_point,
331329
publisher_end_point,
332330
controller_end_point,
333331
controller_header_end_point);
334-
client.detach();
335332

336333
send_recv_request("REQ");
337334

0 commit comments

Comments
 (0)