[PATCH] audio/jack: ALSA driver is broken

Dmitry Marakasov amdmi3 at amdmi3.ru
Wed May 16 16:09:57 UTC 2012

>Submitter-Id:	current-users
>Originator:	Dmitry Marakasov
>Confidential:	no 
>Synopsis:	[PATCH] audio/jack: ALSA driver is broken
>Severity:	serious
>Priority:	low
>Category:	ports 
>Class:		sw-bug
>Release:	FreeBSD 9.0-RELEASE amd64
System: FreeBSD hades.panopticon 9.0-RELEASE FreeBSD 9.0-RELEASE #0: Tue Jan 10 01:33:18 MSK 2012
ALSA driver is broken:

% jackd -d alsa
jackd 0.121.3
Copyright 2001-2009 Paul Davis, Stephane Letz, Jack O'Quinn, Torben Hohn and others.
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details

could not open driver .so '/usr/local/lib/jack/jack_alsa.so': /usr/local/lib/jack/jack_alsa.so: Undefined symbol "clock_nanosleep"

could not open driver .so '/usr/local/lib/jack/jack_alsa_midi.so': /usr/local/lib/jack/jack_alsa_midi.so: Undefined symbol "clock_nanosleep"

jackd: unknown driver 'alsa'

The cause:

% grep -R clock_nanosleep work
work/jack-audio-connection-kit-0.121.3/drivers/alsa-midi/alsa_rawmidi.c:                     clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL);

but this function is not supported on FreeBSD:

% grep clock_nanosleep /usr/include/time.h 
/* XXX missing: clock_nanosleep() */

and though jack builds:

/bin/sh ../../libtool --tag=CC   --mode=compile cc -DHAVE_CONFIG_H -I. -I../..   -I/usr/local/include -I../../config -I../.. -I../.. -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -Wall  -g -O2 -pipe -march=nocona  -fno-strict-aliasing -I../../config -I../.. -I../.. -D_
REENTRANT -D_POSIX_PTHREAD_SEMANTICS -Wall  -g -MT alsa_rawmidi.lo -MD -MP -MF .deps/alsa_rawmidi.Tpo -c -o alsa_rawmidi.lo alsa_rawmidi.c
libtool: compile:  cc -DHAVE_CONFIG_H -I. -I../.. -I/usr/local/include -I../../config -I../.. -I../.. -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -Wall -g -O2 -pipe -march=nocona -fno-strict-aliasing -I../../config -I../.. -I../.. -D_REENTRANT -D_POSIX_PTHREAD_SEMANT
ICS -Wall -g -MT alsa_rawmidi.lo -MD -MP -MF .deps/alsa_rawmidi.Tpo -c alsa_rawmidi.c  -fPIC -DPIC -o .libs/alsa_rawmidi.o
alsa_rawmidi.c: In function 'midi_thread':
alsa_rawmidi.c:856: warning: implicit declaration of function 'clock_nanosleep'

the driver is unuseable.

Port maintainer (multimedia at FreeBSD.org) is cc'd.

Generated with FreeBSD Port Tools 0.99_6 (mode: change, diff: CVS)
Try to use ALSA driver
Since the second argument of clock_nanosleep (flags) is 0, ts still specifies a relative time, so theoretically the call may be replaced with simple nanosleep(&ts, NULL). I'm, however, unaware of differences between CLOCK_MONOTONIC and other clock types, as well as which of them is used by FreeBSD's nanosleep(), so it may have implications.

More information about the freebsd-multimedia mailing list