[linux-audio-dev] ieee1394 deadlock on RT kernels

Pieter Palmers pieterp at joow.be
Sun Jun 25 23:08:07 UTC 2006


Hi,

We are experiencing 'soft' deadlocks when running our code (Freebob, 
i.e. userspace lib for firewire audio) on RT kernels. After a few 
seconds, I get a kernel panic message that signals a soft lockup.

The problems occur when an ISO stream (receive and/or transmit) is shut 
down in a SCHED_FIFO thread. More precisely when running the freebob 
jackd backend in real-time mode. And even more precise: they only seem 
to occur when jackd is shut down. There are no problems when jackd is 
run without RT scheduling.

I havent been able to reproduce this with other test programs that are 
shutting down streams in a SCHED_FIFO thread.

printk() debugging point to the tasklet_kill() call in 
ohci1349_unregister_iso_tasklet (drivers/ieee1394/ohci1394.c), that 
doesn't seem to return. For experiment, i've put a tasklet_disable 
before the tasklet_kill, and that causes the soft lockup to be due to 
the tasklet_disable.

I would like to ask if anyone has a clue why this is happening. The only 
thing I can come up with is that jackd is stopped by a CTRL-C, and that 
the stream shutdown happens in signal handler context, which somehow 
interacts with the tasklet_kill. But I don't have the time now to dig 
into this, so for a change I ask for advice early instead of first 
banging my head against the wall for some days :).

Thx,

Pieter Palmers




More information about the Linux-audio-dev mailing list