The hang is not happening in any of these processes, as
far as I can
tell. It is not always in exactly the same place, although it happens
always around the same area. I can see time suddenly jumping up, there
are xruns printed (huge underruns, not the usual stuff - I assume this
is before rt_monitor degrades the priorities and things return to
normal). This usually is right after ardour's process function returns.
So I have to see which process is actually interrupting all of this and
hanging the whole thing.
Very confused at this point.
can you check the signalled/awake/complete timestamps in the client
struct/debug output? these tell you whether/when:
(1) jackd woke the client with write()
(2) the client woke up from poll
(3) the client wrote to the next fifo
these are 3 critical steps that tell you whether or not the hang
happens between the two processes, or within one of them. each
situation is drastically different from the other and we need to know
which it is.
If I understand things correctly the problem seems to be happening in
the alsa_driver_process function (or in alsa itself). Here a list of
what happens just before the hang with some comments, please correct me
if I'm wrong: