From f5ff1a8e934a3f4a9f5c41b258b4ba9a959a722f Mon Sep 17 00:00:00 2001
From: Jan David Mol <mol@astron.nl>
Date: Mon, 10 Aug 2009 14:02:37 +0000
Subject: [PATCH] bug 1303: more outputsection debug info

---
 RTCP/IONProc/src/ION_main.cc     |  2 +-
 RTCP/IONProc/src/OutputThread.cc | 15 +++++++++++----
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/RTCP/IONProc/src/ION_main.cc b/RTCP/IONProc/src/ION_main.cc
index c74a9781c65..4fc72d85487 100644
--- a/RTCP/IONProc/src/ION_main.cc
+++ b/RTCP/IONProc/src/ION_main.cc
@@ -461,7 +461,7 @@ void *master_thread(void *)
 	exit(1);
       }
 
-      LOG_DEBUG("lofar__fini: output thread joined");
+      LOG_DEBUG("lofar__fini: output section joined");
     }
 
 #if defined FLAT_MEMORY
diff --git a/RTCP/IONProc/src/OutputThread.cc b/RTCP/IONProc/src/OutputThread.cc
index c20cd2d15fd..65c54f66e8d 100644
--- a/RTCP/IONProc/src/OutputThread.cc
+++ b/RTCP/IONProc/src/OutputThread.cc
@@ -103,28 +103,35 @@ void OutputThread::mainLoop()
   doNotRunOnCore0();
 #endif
 
+  // set the maximum number of concurrent writers
   static Semaphore semaphore(1);
 
   while ((o = itsSendQueueActivity.remove()) >= 0) {
     struct OutputThread::SingleOutput &output = itsOutputs[o];
 
+    std::cout << "OutputThread: pop queue " << o << std::endl;
     data = output.sendQueue.remove();
 
+    std::cout << "OutputThread: lower semaphore " << std::endl;
+    semaphore.down();
+
     try {
-      semaphore.down();
+      std::cout << "OutputThread: write data for queue " << o << std::endl;
 
       // write header: nr of output
       itsStreamToStorage->write( &o, sizeof o );
 
       // write data, including serial nr
       data->write(itsStreamToStorage, true);
-
-      semaphore.up();
-      output.freeQueue.append(data);
     } catch (...) {
+      semaphore.up();
       output.freeQueue.append(data);
       throw;
     }
+
+    std::cout << "OutputThread: raise semaphore and wait for next element " << std::endl;
+    semaphore.up();
+    output.freeQueue.append(data);
   }
 }
 
-- 
GitLab