Re: [Jack-Devel] System signals and JACK

PrevNext  Index
DateMon, 27 Oct 2014 20:42:47 +0100
From Hans Petter Selasky <[hidden] at selasky dot org>
ToRobin Gareus <[hidden] at gareus dot org>, [hidden] at lists dot jackaudio dot org
In-Reply-ToRobin Gareus Re: [Jack-Devel] System signals and JACK
Follow-UpHans Petter Selasky Re: [Jack-Devel] System signals and JACK
On 10/23/14 16:52, Robin Gareus wrote:
> On 10/23/2014 09:46 AM, Hans Petter Selasky wrote:
>> Hi,
>>
>> Some applications are using signals() and the jack client needs to
>> ignore these. Consequently read/write calls should be wrapped. See
>> attached patch. Can this be put upstream? Probably same issue with jack2.
>>
>
> JACK is a *realtime* audio system, if application code changes the
> behavior so that jack read/writes to be interrupted by a EINTR, it
> really seems something is broken by design there.
>
> signal() is sent to the main process thread. It should not be able to
> affect the jack-process callback thread at all. (Marking the jack thread
> as TASK_UNINTERRUPTIBLE could be a way forward or explicitly using
> pthread_sigmask() - but those are hacks and workarounds).
>
> Either way I cannot reproduce the problem in the first place, jltcgen
> from https://github.com/x42/ltc-tools uses SIGHUP to re-sync and that
> never caused issues here with jack2 on various architectures.
>

Hi,

I have a QT4/5.x based application using JACK, and this is a race. On 
one machine the issue never triggered. On another it happens from time 
to time, and prevents the JACK-client from registering. Have have not 
seen a problem in the jack-process callback thread yet, but when the 
register call is done from the main() thread. Initially I thought there 
was a problem with jackd, and I did a "strace" / "ktrace" and the 
problem went away.

QT4/5.x has similar wrappers around its read/write operations.

--HPS
PrevNext  Index

1414438966.17922_0.ltw:2, <544EA037.3030806 at selasky dot org>