From: Alexander Alekhin Date: Sat, 28 Jul 2018 10:29:26 +0000 (+0000) Subject: core(ocl): don't expose exceptions from OpenCL callback X-Git-Tag: accepted/tizen/6.0/unified/20201030.111113~1^2~597^2~9^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=89528d7c3a9f2b5ea365f2ae4988390ab2ca71ab;p=platform%2Fupstream%2Fopencv.git core(ocl): don't expose exceptions from OpenCL callback to avoid silent crashes of OpenCL worker threads. --- diff --git a/modules/core/src/ocl.cpp b/modules/core/src/ocl.cpp index cc6feac..05f128b 100644 --- a/modules/core/src/ocl.cpp +++ b/modules/core/src/ocl.cpp @@ -2834,7 +2834,22 @@ extern "C" { static void CL_CALLBACK oclCleanupCallback(cl_event e, cl_int, void *p) { - ((cv::ocl::Kernel::Impl*)p)->finit(e); + try + { + ((cv::ocl::Kernel::Impl*)p)->finit(e); + } + catch (const cv::Exception& exc) + { + CV_LOG_ERROR(NULL, "OCL: Unexpected OpenCV exception in OpenCL callback: " << exc.what()); + } + catch (const std::exception& exc) + { + CV_LOG_ERROR(NULL, "OCL: Unexpected C++ exception in OpenCL callback: " << exc.what()); + } + catch (...) + { + CV_LOG_ERROR(NULL, "OCL: Unexpected unknown C++ exception in OpenCL callback"); + } } }