[LAU] A year of Linux Audio revisited - would like to know your

Kjetil S. Matheussen k.s.matheussen at notam02.no
Fri Dec 14 12:39:57 EST 2007

On Fri, 14 Dec 2007, Stéphane Letz wrote:

>> Paul Davis:
>> > 
>> > > Unless jack is
>> > > fixed (or extended) so that it can recover from errors (including
>> > > letting its latency be adjusted on the fly)
>> <...>
>> > 
>> > JACK has a number of problems, some of them significant. The things
>> > you've spoken about are not among them.
>> > 
>> I'm not sure what other problems you are thinking of? I completely
>> agree this is the main problem with jack. Its not unusual that a
>> program connecting to jack can make jackd crash. And it is
>> even possible to prevent this! (I know it tries to prevent
>> it though, but it does fail very often too).
> Is it something  occurring in jackd only? or also jackdmp?

I'm not sure. I haven't used jackdmp that much. But here is a
way to check.

1. Start jackdmp -R
2. Start xmms
3. Play something in xmms
4. Start jackrack
5. Load this ladspa plugin:
6. Drag the "usecs to sleep" slider quite high.
7. Enable the plugin.
8. Drag the "usecs to sleep" slider back and forth a lot.

This is a quite sure way to make jackd crash.

>> The second problem I have with jack is that its not possible
>> to pause or disconnect temporarily from a backend, which
>> means that whenever you want use a program which use a
>> soundsystem which does not support jack (in my case, usually
>> flash, vmware or java), you first have to quit all
>> programs currently using jack, then stopping jack, then start
>> the non-jack compatible program. And after being finished
>> with the non-jack compatible program, start jack and all
>> its clients again. There was even posted a fix to this bug
>> on the jack list a few years ago, but of course it was not adopted.
> Do you remember what was the idea behind the fix? Was it a new API so 
> suspend/resume the backend?

I think it was only for the alsa backend. It was recently
reposted on the list too.

[1] I had to edit it a bit to make it compile now:

ttleush ladspasleep # diff -u sleep.c~ sleep.c
--- sleep.c~    2003-06-29 15:10:31.000000000 +0200
+++ sleep.c     2007-12-14 18:33:21.000000000 +0100
@@ -99,6 +99,7 @@
  void _init() {
      LADSPA_Descriptor *vd;
      LADSPA_PortDescriptor *portdescriptors;
+    LADSPA_PortRangeHint *portRangeHints;
      char **portnames;

      fprintf(stderr,"Initing sleep");
@@ -125,9 +126,11 @@
      portdescriptors[1]=(const LADSPA_PortDescriptor)(LADSPA_PORT_OUTPUT|LADSPA_PORT_AUDIO);
      portdescriptors[2]=(const LADSPA_PortDescriptor)(LADSPA_PORT_INPUT|LADSPA_PORT_CONTROL);

-    vd->PortRangeHints[2].LowerBound=0.0f;
-    vd->PortRangeHints[2].UpperBound=1000000.0f;
+    portRangeHints=(LADSPA_PortRangeHint *)(vd->PortRangeHints);
+    portRangeHints[2].LowerBound=0.0f;
+    portRangeHints[2].UpperBound=1000000.0f;

      portnames[0]=strdup("Audio in");
      portnames[1]=strdup("Audio out");

More information about the Linux-audio-user mailing list