[Jack-Devel] jack2: question about possible race condition

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[Jack-Devel] jack2: question about possible race condition

Miartus, Adam (Arion Recruitment; ADITG/ESM)

Dear Jack2 Maintainers,

 

I have a question about JackAudioDriver.cpp. It seems to me like there could be a possible race condition in JackAudioDriver::ProcessGraphSyncMaster(), where the driver would do read and write on a slave device without waiting for graph execution end.

 

Below is the proposed “fix”, or what I would expect is correct, am I reading something wrong in the code? What do you guys think?

 

diff --git a/common/JackAudioDriver.cpp b/common/JackAudioDriver.cpp

index ef7c683..9172fe8 100644

--- a/common/JackAudioDriver.cpp

+++ b/common/JackAudioDriver.cpp

@@ -327,16 +327,12 @@ void JackAudioDriver::ProcessGraphSyncMaster()

     // fBeginDateUst is set in the "low level" layer, fEndDateUst is from previous cycle

     if (fEngine->Process(fBeginDateUst, fEndDateUst)) {

-        if (ResumeRefNum() < 0) {

-            jack_error("JackAudioDriver::ProcessGraphSyncMaster: ResumeRefNum error");

-        }

-

         if (ProcessReadSlaves() < 0) {

             jack_error("JackAudioDriver::ProcessGraphSync: ProcessReadSlaves error, engine may now behave abnormally!!");

         }

-        if (ProcessWriteSlaves() < 0) {

-            jack_error("JackAudioDriver::ProcessGraphSync: ProcessWriteSlaves error, engine may now behave abnormally!!");

+        if (ResumeRefNum() < 0) {

+            jack_error("JackAudioDriver::ProcessGraphSyncMaster: ResumeRefNum error");

         }

         // Waits for graph execution end

@@ -344,6 +340,10 @@ void JackAudioDriver::ProcessGraphSyncMaster()

             jack_error("JackAudioDriver::ProcessGraphSync: SuspendRefNum error, engine may now behave abnormally!!");

         }

+        if (ProcessWriteSlaves() < 0) {

+            jack_error("JackAudioDriver::ProcessGraphSync: ProcessWriteSlaves error, engine may now behave abnormally!!");

+        }

+

     } else { // Graph not finished: do not activate it

         jack_error("JackAudioDriver::ProcessGraphSync: Process error");

     }

--

2.7.4

 

Best regards

Adam Miartus
Engineering Software Multimedia (ADITG/ESM)

Tel. +49 5121 49 6973

 


_______________________________________________
Jack-Devel mailing list
[hidden email]
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org