From 11dfb701acffe856174613d95032576fade648ba Mon Sep 17 00:00:00 2001 From: Oleksandr Pavlyk Date: Thu, 30 Sep 2021 13:40:25 -0500 Subject: [PATCH] Avoid passing nullptr to sycl::queue::prefetch to avoid buggy hang --- .../source/dpctl_sycl_queue_interface.cpp | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/dpctl-capi/source/dpctl_sycl_queue_interface.cpp b/dpctl-capi/source/dpctl_sycl_queue_interface.cpp index bba692c8e5..46bbd0d10f 100644 --- a/dpctl-capi/source/dpctl_sycl_queue_interface.cpp +++ b/dpctl-capi/source/dpctl_sycl_queue_interface.cpp @@ -514,15 +514,23 @@ DPCTLSyclEventRef DPCTLQueue_Prefetch(__dpctl_keep DPCTLSyclQueueRef QRef, { auto Q = unwrap(QRef); if (Q) { - sycl::event ev; - try { - ev = Q->prefetch(Ptr, Count); - } catch (sycl::runtime_error &re) { + if (Ptr) { + sycl::event ev; + try { + ev = Q->prefetch(Ptr, Count); + } catch (sycl::runtime_error &re) { + // todo: log error + std::cerr << re.what() << '\n'; + return nullptr; + } + return wrap(new event(ev)); + } + else { // todo: log error - std::cerr << re.what() << '\n'; + std::cerr << "Attempt to prefetch USM-allocation at nullptr" + << '\n'; return nullptr; } - return wrap(new event(ev)); } else { // todo: log error