Re: [LAD] Looking for some jackd debugging help

From: Fons Adriaensen <fons@email-addr-hidden>
Date: Sun Mar 29 2020 - 12:35:27 EEST

On Sat, Mar 28, 2020 at 12:38:46PM -0700, Ethan Funk wrote:
 
> I have been working slowly on a port of a radio automation system I
> originally wrote for OSX to a more general, cross-platform design using
> jack-audio and gstreamer instead of Apple's Core audio API. As part of
> the design change, I have separated the mix-engine and media handling
> into separate processes, where the mixer forks media players, which
> connect back the core mixer via jack, then are disconnected by the
> mixer when finished, prior to the media player instance shutting down.

This *should* work of course, but I'm wondering why things are done
that way. In a 'real' studio, would you disconnect and remove e.g.
a CD player after each track, and install a new one for the next
track ?

The simple alternative is to have a fixed number of players running
all the time, and just outputting silence when not playing a track.
Whenever you need to play a track, find and idle player and use it.
 
But as said, your approach should just work. I'm not yet convinced
this is a Jack problem. I've had much more complex systems (with
tens of jack clients coming and going and hundreds of ports)
running for months.

> I am not calling jack calls in the real-time render
> thread that are not intended for use in that thread.

Which ones are you calling there ? Normally there is no need
at all to call Jack from the its own process() callback.

> All jack client client call backs are handles through
> a message queue,

Except for process() I hope. Which other callbacks are you
using ?

> So it really does appear to be the connections and
> disconnections that are causing the trouble.

Yes.
 
> Here is what I get from my arServer4 core-mixer program's stderr
> (registered to jackd as "ars9550"), just before the jack-server
> shutdown call back fires off:

What happens just before that, that would trigger a crash ?
In other words, does this happen when you call Jack for any
reason (e.g. connect or disconnect), or just by itself ?
 
> Cannot read socket fd = 7 err = Success
> CheckRes error
> JackSocketClientChannel read fail
> SuspendRefNum error
> JackClient::Execute error name = ars9550
> Server is not running

I'm not familiar with the Jack2 code, so I've no idea what
that could mean.
 
> I would like to run jackd in gdb so I can see where it is failing, but
> I am unsure how to build it without breaking my system's installed jack
> package, which is of course built without debugging enabled.

You could also try Jack1 instead. Note that this has its own problems,
in particular when connections are changing all the time -- it tends
to run clients out of order, which depending on the application may
go unnoticed, or be a serious problem.

> Any help would be appreciated.
 
Sorry, I can't help more...

-- 
FA
> _______________________________________________
> Linux-audio-dev mailing list
> Linux-audio-dev@lists.linuxaudio.org
> https://lists.linuxaudio.org/listinfo/linux-audio-dev
_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@lists.linuxaudio.org
https://lists.linuxaudio.org/listinfo/linux-audio-dev
Received on Mon Mar 30 04:15:01 2020

This archive was generated by hypermail 2.1.8 : Mon Mar 30 2020 - 04:15:01 EEST