jack.plumbing behaves inconsistently depending the JACK client library
version it is running against, which unfortunately translates into
useless and annoying behavior when running against the JACK 2 libs.
Specifically, jack.plumbing (running *without* the -d flag) with the
JACK 1 client library will, upon death of the server, print out:
cannot read server event (Success)
cannot continue execution of the processing graph (Bad file descriptor)
jack_client_thread zombified - exiting from JACK
and the process will die. This is useful behavior, as it allows the
user to script a simple restart facilities (eg. using jack_wait). If,
however, jack.plumbing is running with the JACK 2 client library it
will, upon death of the server, print out:
JackSocketClientChannel read fail
and continue to run but cease to ever do any graph manipulations ever
again, until it's killed and restarted. This is not useful behavior,
and is a pretty crappy mode of failure. It'd be better if it died
when the JACK 2 server did, or failing that if it reconnected (or
whatever the appropriate nomenclature is in this case) if and when the
JACK 2 server came back (though I suspect that's just making the code
unnecessarily complex, and that bailing out is ultimately better).
You could, I suppose, argue this is a JACK 2 problem, and I don't know
enough about the planned ecology of JACK to really debate it, but
what's clear is that Debian allows jack-tools to be installed with
either jackd1 or jackd2 packages and that jack.plumbings's behavior
when jackd2 is installed is lame.