Ticket #167 (closed bug: fixed)

Opened 15 years ago

Last modified 15 years ago

jackd crash with VIA controller

Reported by: pnoffke Assigned to:
Priority: major Milestone: FFADO 2.0
Component: Version: FFADO SVN (trunk)
Keywords: Cc:
The device the bug applies to:

Description

When I run jackd as:

sudo jackd --verbose -P 70 -R -d firewire -v10 2> ffado-jack.log

jack crashes after a variable amount of time. I do not need to run any other audio apps. There has been a discussion on ffado-devel (subject "XRUN with VIA 1394 controller") regarding this issue. From Pieter Palmers:

"The message is from the cycle timer update loop which is independent from the iso streams. The loop detects a weird value for the CTR update. The 98304000.000000 is 20 times the expected update period, so the reported difference is way off.

The reason this code is present is since there can be a bus reset that might result in a new bus clock master, but that's not the case here. The most likely cause for this is buggy hardware.

Can you run with verbose level 10?

As a side-note: this should not cause the system to fall apart though. I do suspect that I know what goes wrong: the code that detects whether a handler is still 'alive' uses the cycle timer to figure out if a handler timed out. If there are large jumps in CTR values, there can be false triggering. That should be fixed.

Can you try changing the following line in IsoHandlerManager?.cpp:330 int64_t max_diff_ticks = TICKS_PER_SECOND * 2; to int64_t max_diff_ticks = TICKS_PER_SECOND * 128;

This disables the detection of dead handlers."

When I try Pieter's suggestion, jackd still crashes. The latest log is quite large, so I'm attaching it as part of a new ticket, and I'm also creating the ticket because Pieter wishes to find a workaround in software.

Also maybe relevant is when I run ffadomixer (before Pieter's suggestion of disabling dead handler detection), I get these errors on the console I ran ffadomixer from:

87228148108: Error (CycleTimerHelper?.cpp)[ 504] Execute: negative step: -1313681036.784007! (correcting to nominal) 87228348092: Error (CycleTimerHelper?.cpp)[ 504] Execute: negative step: -589657805.406015! (correcting to nominal) 87228548093: Error (CycleTimerHelper?.cpp)[ 504] Execute: negative step: -597906698.733869! (correcting to nominal) 87228748111: Error (CycleTimerHelper?.cpp)[ 504] Execute: negative step: -1909218735.096767! (correcting to nominal) 87228948100: Error (CycleTimerHelper?.cpp)[ 504] Execute: negative step: -1198299552.133742! (correcting to nominal)

After disabling the dead handler detection, I still get these errors. I need to kill the ffado dbus server to stop the errors (i.e. closing ffadomixer alone does not stop the errors).

Attachments

ffado-diag.log (7.0 kB) - added by pnoffke on 10/17/08 04:52:34.
ffado-logs-sudo-p70.tar.gz (16.0 kB) - added by pnoffke on 10/17/08 04:56:02.
Running jackd as: sudo jackd --verbose -P 70 -R -d firewire -v6 2> ffado-jack.log
ffado-logs-v6-disable-dead-handler-detection.tar.gz (49.1 kB) - added by pnoffke on 10/17/08 05:00:37.
After disabling dead handler detection.
ffado-logs-v10.tar.gz (0.8 MB) - added by pnoffke on 10/18/08 16:31:37.
Last 100000 lines of a log running jackd as: sudo jackd --verbose -P 70 -R -d firewire -v10 2> ffado-jack.log

Change History

10/17/08 04:52:34 changed by pnoffke

  • attachment ffado-diag.log added.

10/17/08 04:56:02 changed by pnoffke

  • attachment ffado-logs-sudo-p70.tar.gz added.

Running jackd as: sudo jackd --verbose -P 70 -R -d firewire -v6 2> ffado-jack.log

10/17/08 04:59:58 changed by pnoffke

Update, I could not attach the -v10 logs with Pieter's change to disable the dead handler detection. The file ffado-logs-sudo-p70.tar.gz is before Pieter's change.

10/17/08 05:00:37 changed by pnoffke

  • attachment ffado-logs-v6-disable-dead-handler-detection.tar.gz added.

After disabling dead handler detection.

10/17/08 05:01:55 changed by pnoffke

Now I have attached a -v6 log with Pieter's change.

10/17/08 05:04:34 changed by pnoffke

  • version changed from FFADO 2.0-beta6 (1.999.36) to FFADO SVN.

10/18/08 16:31:37 changed by pnoffke

  • attachment ffado-logs-v10.tar.gz added.

Last 100000 lines of a log running jackd as: sudo jackd --verbose -P 70 -R -d firewire -v10 2> ffado-jack.log

11/22/08 13:39:48 changed by ppalmers

  • status changed from new to closed.
  • resolution set to fixed.

This should be fixed in the 2.0 branch.

Note: not yet backported to FFADO SVN trunk.