diff --git a/components/rgbd-sources/src/rgbd_streamer.cpp b/components/rgbd-sources/src/rgbd_streamer.cpp
index 16202686a4fe988aba716bf09912a97f05dae9cd..ad8fa3f2dfb2950333db7d6f44bb7266097cdaca 100644
--- a/components/rgbd-sources/src/rgbd_streamer.cpp
+++ b/components/rgbd-sources/src/rgbd_streamer.cpp
@@ -194,7 +194,8 @@ void Streamer::_schedule() {
 		pool_.push([this,uri](int id) {
 			StreamSource *src = sources_[uri];
 
-			if (src->rgb.rows > 0 && src->depth.rows > 0 && src->clients[0].size() > 0) {
+			try {
+			if (src && src->rgb.rows > 0 && src->depth.rows > 0 && src->clients[0].size() > 0) {
 				vector<unsigned char> rgb_buf;
 				cv::imencode(".jpg", src->rgb, rgb_buf);
 				
@@ -219,6 +220,9 @@ void Streamer::_schedule() {
 					}
 				}
 			}
+			} catch(...) {
+				LOG(ERROR) << "Error in transmission loop";
+			}
 
 			unique_lock<shared_mutex> lk(src->mutex);
 			LOG(INFO) << "Tx Frame: " << uri;