diff --git a/src/c_wrapper/event.cpp b/src/c_wrapper/event.cpp index 5b7eb3af637d731357e5a5943f86d15ddb480448..e53bb0a51888a46d7f9fa439bea12d118c6b302f 100644 --- a/src/c_wrapper/event.cpp +++ b/src/c_wrapper/event.cpp @@ -60,13 +60,18 @@ event::release_private() noexcept } #if PYOPENCL_CL_VERSION >= 0x1010 if (support_cb) { - pyopencl_call_guarded_cleanup( - clSetEventCallback, this, CL_COMPLETE, - [] (cl_event, cl_int, void *data) { - event_private *p = static_cast<event_private*>(data); + try { + event_private *p = m_p; + set_callback(CL_COMPLETE, [p] (cl_int) { p->call_finish(); delete p; - }, (void*)m_p); + }); + } catch (const clerror &e) { + std::cerr + << ("PyOpenCL WARNING: a clean-up operation failed " + "(dead context maybe?)") << std::endl + << e.what() << " failed with code " << e.code() << std::endl; + } } else { #endif std::thread t([] (cl_event evt, event_private *p) {