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