Bug #2509
Telia-Sonera IPTV and Yle TELETEXT streams crashing Tvheadend when trying to view a Yle channel using XBMC 13.2
0%
Description
Hi,
noticed that my latest Tvheadend build (3.9.2158~gfe24184) crashes on Yle channels (only on them, other providers do not crash) when I try to view them through XBMC. When I filter out TELETEXT streams, the crash doesn't occur. I ran debug & trace and found this line occurring on every crash:
tvheadend [ 8779 ] : parser: pkt stream 4 TELETEXT type dts 0 (-9223372036854775808) pts 0 (-9223372036854775808) dur 0 len 1059
Last build I found which does not crash is 3.9.2075~g7e5abcb. The TELETEXT also works with this build. If needed, I can provide more logs or pcaps.
The attached zip contains a tcpdump pcap of the crash. It does not include anything else than firing up XBMC and trying to view Yle TV1.
BR,
j
Files
History
Updated by Jaroslav Kysela almost 10 years ago
Could you attach whole backtrace (you'll find detains in wiki - debugging section).
Updated by Joo Seppi almost 10 years ago
- File tvheadendcrash-full.tar.xz tvheadendcrash-full.tar.xz added
- File tvheadendcrash-core.tar.xz tvheadendcrash-core.tar.xz added
I set debug and trace on with options "all" to both entries using WebUI (runtime options). Attached are log file and core dump in XZ compression. The core is in default Debian format.
BR,
-j
Updated by Jaroslav Kysela almost 10 years ago
The backtrace is not there - like in https://tvheadend.org/issues/2500 ... The core file is useless unless you have access to executable and whole build environment..
Updated by Joo Seppi almost 10 years ago
Hi. Sorry for the inconvenience. That's all I got out and wondered myself if that would help or not. Since I'm not a C coder at all, I decided to upload what I have. Thank you for the link on how the log is supposed to look and also thanks on the tip on core. I suppose one with the proper access to those attached files could delete them since they useless.
As you've probably noticed, this is completely new territory to me. I can't seem to get any "[ALERT]:CRASH" messages logged. I have not disabled trace upon configure. This I got when running within gdb (I found this page https://tvheadend.org/projects/tvheadend/wiki/Tvheadendcrash):
this is what is printed out on out crash
tvheadend: src/plumbing/globalheaders.c:218: gh_hold: Assertion `gh->gh_ss == ((void *)0)' failed.
info reg
(gdb) info reg
r0 0x0 0
r1 0x167f 5759
r2 0x6 6
r3 0x167f 5759
r4 0x6 6
r5 0x41ca2bdc 1103768540
r6 0x41ca2000 1103765504
r7 0x10c 268
r8 0xbdc 3036
r9 0x460043a8 1174422440
r10 0x46004f30 1174425392
r11 0x460053f0 1174426608
r12 0x419a470c 1100629772
sp 0x46004308 0x46004308
lr 0x41b9fcd4 1102707924
pc 0x41b9fd08 0x41b9fd08 <raise+64>
fps 0x0 0
cpsr 0x20000010 536870928
disassemble
(gdb) disassemble $pc-32,$pc+32
Dump of assembler code for function raise:
0x41b9fcc8 <raise+0>: push {r4, r5, r7, lr}
0x41b9fccc <raise+4>: mov r4, r0
0x41b9fcd0 <raise+8>: bl 0x41b8a990
0x41b9fcd4 <raise+12>: ldr r3, [r0, #-1112] ; 0x458
0x41b9fcd8 <raise+16>: mov r2, r0
0x41b9fcdc <raise+20>: cmp r3, #0
0x41b9fce0 <raise+24>: ldr r0, [r0, #-1108] ; 0x454
0x41b9fce4 <raise+28>: bne 0x41b9fd18 <raise+80>
0x41b9fce8 <raise+32>: mov r7, #224 ; 0xe0
0x41b9fcec <raise+36>: svc 0x00000000
0x41b9fcf0 <raise+40>: mov r3, r0
0x41b9fcf4 <raise+44>: str r0, [r2, #-1112] ; 0x458
0x41b9fcf8 <raise+48>: mov r1, r3
0x41b9fcfc <raise+52>: mov r2, r4
0x41b9fd00 <raise+56>: mov r7, #268 ; 0x10c
0x41b9fd04 <raise+60>: svc 0x00000000
0x41b9fd08 <raise+64>: cmn r0, #4096 ; 0x1000
0x41b9fd0c <raise+68>: bhi 0x41b9fd34 <raise+108>
0x41b9fd10 <raise+72>: pop {r4, r5, r7, lr}
0x41b9fd14 <raise+76>: bx lr
0x41b9fd18 <raise+80>: cmp r0, #0
0x41b9fd1c <raise+84>: bgt 0x41b9fcf8 <raise+48>
0x41b9fd20 <raise+88>: bic r2, r0, #-2147483648 ; 0x80000000
0x41b9fd24 <raise+92>: cmp r2, #0
0x41b9fd28 <raise+96>: moveq r0, r3
0x41b9fd2c <raise+100>: rsbne r0, r0, #0
0x41b9fd30 <raise+104>: b 0x41b9fcf8 <raise+48>
0x41b9fd34 <raise+108>: ldr r1, [pc, #76] ; 0x41b9fd88 <raise+192>
0x41b9fd38 <raise+112>: rsb r5, r0, #0
0x41b9fd3c <raise+116>: ldr r1, [pc, r1]
0x41b9fd40 <raise+120>: bl 0x41b8a990
0x41b9fd44 <raise+124>: cmp r5, #38 ; 0x26
0x41b9fd48 <raise+128>: mov r2, r0
0x41b9fd4c <raise+132>: str r5, [r0, r1]
0x41b9fd50 <raise+136>: mvnne r0, #0
0x41b9fd54 <raise+140>: bne 0x41b9fd10 <raise+72>
0x41b9fd58 <raise+144>: mov r0, r3
---Type <return> to continue, or q <return> to quit---
0x41b9fd5c <raise+148>: mov r1, r4
0x41b9fd60 <raise+152>: mov r7, #238 ; 0xee
0x41b9fd64 <raise+156>: svc 0x00000000
0x41b9fd68 <raise+160>: cmn r0, #4096 ; 0x1000
0x41b9fd6c <raise+164>: bls 0x41b9fd10 <raise+72>
0x41b9fd70 <raise+168>: ldr r3, [pc, #20] ; 0x41b9fd8c <raise+196>
0x41b9fd74 <raise+172>: rsb r0, r0, #0
0x41b9fd78 <raise+176>: ldr r3, [pc, r3]
0x41b9fd7c <raise+180>: str r0, [r2, r3]
0x41b9fd80 <raise+184>: mvn r0, #0
0x41b9fd84 <raise+188>: b 0x41b9fd10 <raise+72>
0x41b9fd88 <raise+192>: andseq r2, r0, r8, lsr #8
0x41b9fd8c <raise+196>: andseq r2, r0, r12, ror #7
End of assembler dump.
(gdb)
"bt full" prints loads of:
#888 0x41ba3ca4 in abort () from /lib/libc.so.6
No symbol table info available.
I am currently researching into providing more info. Any help is appreciated. I'm currently trying building the tvheadend with gdb3 symbols.
BR,
-j
Updated by Jaroslav Kysela almost 10 years ago
Check latest, the issues with the assertion in globalheaders.c should be fixed there..
Updated by Joo Seppi almost 10 years ago
Checking out latest via git as I'm writing this. Was I anywhere near in providing useful stuff? Assembly is beyond me.
I'll report here using the latest build.
BR,
-j
Updated by Joo Seppi almost 10 years ago
Compiled HTS Tvheadend 3.9.2165~g3579d04 and could not reproduce the problem. I clicked through all Yle channels and some other provider ones and everything works currently. TELETEXT works as well via XBMC 13.2.
BR,
-j
Updated by Jaroslav Kysela almost 10 years ago
- Status changed from New to Fixed
Great. Closing as fixed. Note - the 'bt' (backtrace) command in gdb should work (and it gives the output to check), but you must have executable with debugging symbols. The best way is to compile tvh directly inside the source git tree and run it from ./buiild.linux/ .. Note that disassembler output is ususally not required (and no much useable - only in rare cases).