Why does calling ORB_Impl::detectAndCompute block when using cv::Umat

My opencv supports opencl, When I use cv::Mat, ORB::detectAndCompute can be executed normally. However, ORB::detectAndCompute cannot be executed normally when using cv:UMat.

my code:

UMat img{};
imread(imgName.data(), CV_LOAD_IMAGE_COLOR).copyTo(img);
std::vector<KeyPoint> key{};
UMat des{};
auto detect = ORB::create();
detect->detectAndCompute(img, UMat(), key, des);   // block in function: Kernel::Impl::run, acctually in clFinishi
  • version of OpenCV: 3.4.15;
  • OpenCL: 2.1 NEO;

any body can help me with this issue? thx a lot.