[Jackaudio] jack client dies randomly

Reussen im Grunde Benjamin.Feder at reussen-im-grunde.de
Mon Dec 12 17:29:39 CET 2022



Hello, fellow Jack developers.

I am currently writing a jack client which is loaded from within the 
unity3d game engine. It's supposed to work like this: Every time, jack 
requests audio, unity3d generates it. This is done in order to bypass 
the unity3d audio renderer and use the audio in different applications 
instead.

Technically, everything works fine so far. When the software is started, 
either from within the unity3d editor or directly as a compiled unity3d 
application, the client appears in QJackCtl and I can route the channels 
to wherever I want and even hear the audio.

BUT: the client randomly disables. At some point during runtime (both in 
the built version and directly from the editor) it happens, that the 
routing disconnects itself, and I am unable to reconnect it. When I try, 
I get the message "Cannot connect ports owned by inactive clients: 
"Unity" is not active".

This behavior seems to be very unpredictable, sometimes it happens after 
just a second, sometimes it runs fine for over a minute or two. 
Sometimes it does not even happen (or I did not wait long enough).

I have experienced this behavior both writing my own framework or by 
using the JackSharp framework. The behavior also does not change when 
uninstalling pulseaudio (which was sort of a last guess on our end).

The same behavior occurs when I use jack with a dummy driver. The 
connection is established and randomly breaks down again. (although 
obviously I can't hear the sound).

Interestingly: when I use the framework as a standalone version, 
everything seems to work fine. Therefore, it kind of seems obvious, that 
it has to have to do something with Unity or the fact, that the 
framework is called from a different thread or something like that. 
However, Unity does not report any problems.

What I can see in the QJackCtl Log: The exact moment the problem occurs, 
the kPortRegistrationOff Method is called on all ports. It looks like 
the server disables all ports, then tries to deactivate the client and 
therefore destroying all the ports. It eventually proceeds to tell, that 
the client was destroyed successfully and that's it.

I have implemented all the callbacks that are available from the API (at 
least all that i think where usefull) but all I get is, that the 
framework receives the jack_on_info_shutdown method is called. This 
method is passed a const char argument which is supposed to hold the 
reason, but all it says is : "JACK server has been closed". Which it is 
not. It is still running.

At this point, I am out of ideas of what to do to narrow down the problem.

I have tested other applications (like Reaper) and they work fine.

I am using Ubuntu 20.04, both on low-latency or generic kernel > 5.14

I use the latest version of jack2 (as of Dec 22)

I know all this sounds very vague and overly complex, but I have no idea 
what else to look for or which information may be necessary to further 
investigate the problem.

Any help at all is highly appreciated.

Thank you all very much

Have a nice day

Benny


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.linuxaudio.org/archives/jackaudio/attachments/20221212/129c6a83/attachment.html>


More information about the JackAudio mailing list