Comment 5 for bug 1175944

Revision history for this message
MMlosh (mmlosh) wrote :

UPDATE: Progress!

The stall was traced to a the "while" loop in dvr_input_ts ( dvr.c:68 )
When psi_reassemble does not increase "off", it gets called again with the same arguments -> inf-loop

I believe that that can happen only when section->len == 0.
I have no idea where is that coming from nor why.
  Getstream itself? Kernel? USB DVBT tuner's firmware? Tuner's hardware? Actual content of the signal?

The .patch attached does _NOT_ fix the cause of the aborts.
It only makes sure that psi_reassemble either makes progress or returns errors and prevents the inf-loop.
I am not even sure that "PSI_RC_LENFAIL" is the correct return code for the situation. PSI_RC_NOPAYLOAD? PSI_RC_CORRUPT?

I also attach a pack with on-abor/lockup stacktraces I collected.

I'll let it run for a week and see, whether it actually worked.
So far the attached not-fix successfully replaced all "abort" lines with "warning" lines in the logs, making getstream useful again.

I don't think that the patch is ready for upstream, but at least it allows me to use getstream
I hope it helps someone more involved than me to actually fix the issue.