From 7c7dbba74a843ec834d3da73e4aeec1387966299 Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Mon, 17 Jun 2019 10:54:10 +0300 Subject: [PATCH] Fix for segfault in net chunk recv --- components/rgbd-sources/src/net.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/components/rgbd-sources/src/net.cpp b/components/rgbd-sources/src/net.cpp index a527665c2..bd4d5127f 100644 --- a/components/rgbd-sources/src/net.cpp +++ b/components/rgbd-sources/src/net.cpp @@ -94,13 +94,14 @@ void NetSource::_recvChunk(int frame, int chunk, bool delta, const vector<unsign int cx = (chunk % chunks_dim_) * chunk_width_; int cy = (chunk / chunks_dim_) * chunk_height_; + // Lock host to prevent grab + UNIQUE_LOCK(host_->mutex(),lk); + cv::Rect roi(cx,cy,chunk_width_,chunk_height_); cv::Mat chunkRGB = rgb_(roi); //cv::Mat ichunkDepth = idepth_(roi); cv::Mat chunkDepth = depth_(roi); - // Lock host to prevent grab - UNIQUE_LOCK(host_->mutex(),lk); tmp_rgb.copyTo(chunkRGB); //tmp_depth.convertTo(tmp_depth, CV_16UC1); //if (delta) ichunkDepth = tmp_depth - ichunkDepth; @@ -129,7 +130,7 @@ void NetSource::setPose(const Eigen::Matrix4f &pose) { } void NetSource::_updateURI() { - //unique_lock<mutex> lk(mutex_); + UNIQUE_LOCK(mutex_,lk); active_ = false; auto uri = host_->get<string>("uri"); @@ -165,6 +166,7 @@ void NetSource::_updateURI() { chunks_dim_ = ftl::rgbd::kChunkDim; chunk_width_ = params_.width / chunks_dim_; chunk_height_ = params_.height / chunks_dim_; + // TODO(Nick) Must lock before changing these below since some thread may still be updating chunk rgb_ = cv::Mat(cv::Size(params_.width, params_.height), CV_8UC3, cv::Scalar(0,0,0)); depth_ = cv::Mat(cv::Size(params_.width, params_.height), CV_32FC1, 0.0f); //idepth_ = cv::Mat(cv::Size(params_.width, params_.height), CV_16UC1, cv::Scalar(0)); -- GitLab