ports/99323: jackd audio server broken?

markzero markzero at corolla.ath.cx
Thu Jun 22 21:10:18 UTC 2006


>Number:         99323
>Category:       ports
>Synopsis:       jackd audio server broken?
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Jun 22 21:10:16 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     mark at darklogik.org
>Release:        FreeBSD 6.0-RELEASE-p7 i386
>Organization:
n/a
>Environment:
System: FreeBSD logik.internal.network 6.0-RELEASE-p7 FreeBSD 6.0-RELEASE-p7 #0: Mon May 8 14:57:01 BST 2006 root at logik.internal.network:/usr/src/sys/i386/compile/LOGIK150406 i386

jackit-0.101.1_1
Soundblaster LIVE (snd_emu10k1.ko)

>Description:

I've sent an email to the jackit-devel mailing list as I'm not
sure if this problem is to do with jack or to do with FreeBSD.
I haven't had a reply from the mailing list yet, so I'm assuming
that it's something FreeBSD-specific.

jackd seems to go berserk whenever a client quits.
It happens using any driver, even 'dummy'.

$ jackd -v -d dummy
getting driver descriptor from /usr/local/lib/jack/jack_dummy.so
getting driver descriptor from /usr/local/lib/jack/jack_oss.so
getting driver descriptor from /usr/local/lib/jack/jack_portaudio.so
jackd 0.101.1
Copyright 2001-2005 Paul Davis and others.
jackd comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details

JACK compiled with System V SHM support.
server `default' registered
registered builtin port type 32 bit float mono audio
loading driver ..
creating dummy driver ... dummy_pcm|48000|1024|21333|2|2
new client: dummy_pcm, id = 1 type 1  <at>  0x805a200 fd = -1
new buffer size 1024
registered port dummy_pcm:capture_1, offset = 4096
registered port dummy_pcm:capture_2, offset = 8192
registered port dummy_pcm:playback_1, offset = 0
registered port dummy_pcm:playback_2, offset = 0
13069 waiting for signals
++ jack_rechain_graph():
client dummy_pcm: internal client, execution_order=0.
-- jack_rechain_graph()
load = 0.0328 max usecs: 14.000, spare = 21319.000
...

Then running jack_simple_client in another terminal:

$ jack_simple_client
engine sample rate: 48000

The server sees this connection:

new client: jack_simple_client, id = 2 type 2  <at>  0x28246000 fd = 7
registered port jack_simple_client:input, offset = 0
registered port jack_simple_client:output, offset = 12288
++ jack_rechain_graph():
client dummy_pcm: internal client, execution_order=0.
client jack_simple_client: start_fd=5, execution_order=0.
client jack_simple_client: wait_fd=6, execution_order=1 (last client).
-- jack_rechain_graph()
connect dummy_pcm:capture_1 and jack_simple_client:input (forward)
++ jack_rechain_graph():
client dummy_pcm: internal client, execution_order=0.
client jack_simple_client: start_fd=5, execution_order=0.
client jack_simple_client: wait_fd=6, execution_order=1 (last client).
-- jack_rechain_graph()
connect jack_simple_client:output and dummy_pcm:playback_1 (output)
++ jack_rechain_graph():
client dummy_pcm: internal client, execution_order=0.
client jack_simple_client: start_fd=5, execution_order=0.
client jack_simple_client: wait_fd=6, execution_order=1 (last client).
-- jack_rechain_graph()
load = 42.3475 max usecs: 18047.000, spare = 3286.000

Now, send a ^C to the client to kill it off and the server goes into
a panic:

cannot read request from client (0/2100/Resource temporarily
unavailable)
could not handle external client request
cannot read request from client (0/2100/Resource temporarily
unavailable)
could not handle external client request
cannot read request from client (0/2100/Resource temporarily
unavailable)
could not handle external client request
cannot read request from client (0/2100/Resource temporarily
unavailable)
could not handle external client request
cannot read request from client (0/2100/Resource temporarily
unavailable)
could not handle external client request
cannot read request from client (0/2100/Resource temporarily
unavailable)
could not handle external client request
cannot read request from client (0/2100/Resource temporarily
unavailable)
could not handle external client request
cannot read request from client (0/2100/Resource temporarily
unavailable)
could not handle external client request
cannot read request from client (0/2100/Resource temporarily
unavailable)
could not handle external client request
cannot read request from client (0/2100/Resource temporarily
unavailable)
could not handle external client request
cannot read request from client (0/2100/Resource temporarily
unavailable)
could not handle external client request
cannot read request from client (0/2100/Resource temporarily
unavailable)
could not handle external client request

It doesn't crash, it just does that seemingly forever. It does this
whenever any client exits, which makes it next to useless currently.

It randomly crashes with a floating point error too:

$ jackd -v -d dummy
getting driver descriptor from /usr/local/lib/jack/jack_dummy.so
getting driver descriptor from /usr/local/lib/jack/jack_oss.so
getting driver descriptor from /usr/local/lib/jack/jack_portaudio.so
jackd 0.101.1
Copyright 2001-2005 Paul Davis and others.
jackd comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details

JACK compiled with System V SHM support.
server `default' registered
registered builtin port type 32 bit float mono audio
loading driver ..
creating dummy driver ... dummy_pcm|48000|1024|21333|2|2
new client: dummy_pcm, id = 1 type 1  <at>  0x805a200 fd = -1
new buffer size 1024
registered port dummy_pcm:capture_1, offset = 4096
registered port dummy_pcm:capture_2, offset = 8192
registered port dummy_pcm:playback_1, offset = 0
registered port dummy_pcm:playback_2, offset = 0
66253 waiting for signals
++ jack_rechain_graph():
client dummy_pcm: internal client, execution_order=0.
-- jack_rechain_graph()
Floating point exception (core dumped)

#0  0x2808fcad in __udivdi3 () from /usr/local/lib/libjack.so.0
#1  0x281baaea in dummy_driver_wait (driver=0x805a300, extra_fd=-1,
    status=0x1, delayed_usecs=0x1) at cycles.h:34
#2  0x281bb1fb in dummy_driver_run_cycle (driver=0x1) at
dummy_driver.c:72
#3  0x2808b7de in jack_driver_nt_thread (arg=0x805a300) at driver.c:122
#4  0x280b8ab1 in pthread_create () from /usr/lib/libpthread.so.2
#5  0x2817245f in _ctx_start () from /lib/libc.so.6

The crash occurs with any driver (oss, portaudio, dummy).

I tried to compile a debugging version from SVN, but could
not even get a configure script generated under autoconf-2.59.

>How-To-Repeat:

See above.

>Fix:

Source of problem not determined yet.
>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list