Bug#682792: marked as done (jackd2: jackdbus does not terminate, when stopped)

kaj.ailomaa at mousike.me kaj.ailomaa at mousike.me
Wed Nov 21 08:15:12 UTC 2012


Sorry, I seem to have missed the upload to experimental. Meantime, I was
pointed out to a couple of commits that would fix the bug, and decided
to create a patch of it. 
And I got it uploaded to Ubuntu development jackd2 branch
https://code.launchpad.net/~ubuntu-branches/ubuntu/raring/jackd2/raring
(lp:ubuntu/jackd2).

I think it would be worth fixing this bug also in Debian Wheezy. Haven't
yet investigated on the procedure to propose a merge, but will give it
some time in the coming week.

Here's the patch I did.

## Description: This patch, consisting of two upstream commits, fixes an
issue where jackdbus is left unresponsively running in the background
when stopped.
## Origin/Author: upstream
https://github.com/jackaudio/jack2/commit/aa02feeacfa533a07f04e916334637b57eaac5a2,
https://github.com/jackaudio/jack2/commit/700489b429b0edb7046b169278e3e6751e3e59fc
## Bug: https://bugs.launchpad.net/ubuntu/+source/jackd2/+bug/956438
## Applied-Upstream: 1.9.9

Index: jackd2/common/JackLibAPI.cpp
===================================================================
--- jackd2.orig/common/JackLibAPI.cpp   2012-11-15 12:39:49.422086000
+0100
+++ jackd2/common/JackLibAPI.cpp        2012-11-15 12:40:43.278938432
+0100
@@ -177,7 +177,7 @@
         va_end(ap);
         JackGlobals::fOpenMutex->Unlock();
         return res;
-    } catch(std::bad_alloc& e) {
+    } catch (std::bad_alloc& e) {
         jack_error("Memory allocation error...");
         return NULL;
     } catch (...) {
Index: jackd2/common/JackLockedEngine.h
===================================================================
--- jackd2.orig/common/JackLockedEngine.h       2012-11-15
12:39:49.422086000 +0100
+++ jackd2/common/JackLockedEngine.h    2012-11-15 12:40:47.583938485
+0100
@@ -41,7 +41,7 @@
 */
 
 #define CATCH_EXCEPTION_RETURN                      \
-    } catch(std::bad_alloc& e) {                    \
+    } catch (std::bad_alloc& e) {                    \
         jack_error("Memory allocation error...");   \
         return -1;                                  \
     } catch (...) {                                 \
@@ -50,10 +50,10 @@
     }                                               \
 
 #define CATCH_CLOSE_EXCEPTION_RETURN                      \
-    } catch(std::bad_alloc& e) {                    \
+    } catch (std::bad_alloc& e) {                    \
         jack_error("Memory allocation error...");   \
         return -1;                                  \
-    } catch(JackTemporaryException& e) {                       \
+    } catch (JackTemporaryException& e) {                       \
         jack_error("JackTemporaryException : now quits...");   \
         JackTools::KillServer();                     \
         return 0;                                   \
@@ -63,7 +63,7 @@
     }
 
 #define CATCH_EXCEPTION                      \
-    } catch(std::bad_alloc& e) {                    \
+    } catch (std::bad_alloc& e) {                    \
         jack_error("Memory allocation error...");   \
     } catch (...) {                                 \
         jack_error("Unknown error...");             \
@@ -327,8 +327,8 @@
 
         void NotifyQuit()
         {
+            // No lock needed
             TRY_CALL
-            JackLock lock(&fEngine);
             return fEngine.NotifyQuit();
             CATCH_EXCEPTION
         }
Index: jackd2/common/JackServer.cpp
===================================================================
--- jackd2.orig/common/JackServer.cpp   2012-11-15 12:39:49.422086000
+0100
+++ jackd2/common/JackServer.cpp        2012-11-15 12:40:43.281938432
+0100
@@ -134,7 +134,6 @@
 int JackServer::Close()
 {
     jack_log("JackServer::Close");
-    fEngine->NotifyQuit();
     fChannel.Close();
     fAudioDriver->Detach();
     fAudioDriver->Close();
@@ -190,6 +189,7 @@
 int JackServer::Stop()
 {
     jack_log("JackServer::Stop");
+    fEngine->NotifyQuit();
     fChannel.Stop();
     
     fEngine->ShutDown();
Index: jackd2/common/JackServerAPI.cpp
===================================================================
--- jackd2.orig/common/JackServerAPI.cpp        2012-11-15
12:39:49.422086000 +0100
+++ jackd2/common/JackServerAPI.cpp     2012-11-15 12:40:43.281938432
+0100
@@ -162,7 +162,7 @@
         va_end(ap);
         JackGlobals::fOpenMutex->Unlock();
         return res;
-    } catch(std::bad_alloc& e) {
+    } catch (std::bad_alloc& e) {
         jack_error("Memory allocation error...");
         return NULL;
     } catch (...) {
Index: jackd2/posix/JackSocketServerChannel.cpp
===================================================================
--- jackd2.orig/posix/JackSocketServerChannel.cpp       2012-11-15
12:39:49.422086000 +0100
+++ jackd2/posix/JackSocketServerChannel.cpp    2012-11-15
12:40:43.282938432 +0100
@@ -97,7 +97,7 @@
 
 void JackSocketServerChannel::Stop()
 {
-    fThread.Kill();
+    fThread.Stop();
 }
 
 void JackSocketServerChannel::ClientCreate()



More information about the pkg-multimedia-maintainers mailing list