Hi,
Klaus Schmidinger wrote:
after applying all osdteletext patches and poisening VDR there still
seems to remain a race condtion when havily zapping between channels.
From /var/log/messages:
Dec 5 14:00:52 video vdr[1332]: switching to channel 18
Dec 5 14:00:52 video vdr[1412]: transfer thread ended (pid=1412,
tid=1196042)
Dec 5 14:00:52 video vdr[1332]: buffer stats: 0 (0%) used
Dec 5 14:00:52 video vdr[1415]: TS buffer on device 1 thread ended
(pid=1415, tid=1245197)
Dec 5 14:00:52 video vdr[1413]: buffer stats: 41172 (1%) used
Dec 5 14:00:52 video vdr[1413]: receiver on device 1 thread ended
(pid=1413, tid=1212427)
Dec 5 14:00:52 video vdr[1332]: buffer stats: 0 (0%) used
Dec 5 14:00:52 video vdr[1416]: transfer thread started (pid=1416,
tid=1261578)
Dec 5 14:00:52 video vdr[1332]: creating directory
/vtx/S19.2E-1-1101-28113
Dec 5 14:00:52 video vdr[1417]: receiver on device 1 thread started
(pid=1417, tid=1277963)
Dec 5 14:00:52 video vdr[1419]: receiver on device 1 thread started
(pid=1419, tid=1310733)
Dec 5 14:00:52 video vdr[1419]: buffer stats: 0 (0%) used
Dec 5 14:00:52 video vdr[1420]: TS buffer on device 1 thread started
(pid=1420, tid=1327118)
Dec 5 14:00:52 video vdr[1421]: TS buffer on device 1 thread started
(pid=1421, tid=1343503)
Dec 5 14:00:52 video vdr[1332]: switching to channel 19
Dec 5 14:00:52 video vdr[1416]: transfer thread ended (pid=1416,
tid=1261578)
Dec 5 14:00:52 video vdr[1332]: buffer stats: 0 (0%) used
Dec 5 14:00:53 video vdr[1421]: TS buffer on device 1 thread ended
(pid=1421, tid=1343503)
Dec 5 14:00:53 video vdr[1419]: buffer stats: 60536 (2%) used
At this point VDR crashed. Strange is that there are two receivers
(1417 , 1419) and two TS buffers (1420, 1421) but only a single
transfer thread (1416).
My guess would be that the osdteletext uses the other receiver.
Would you expect that there are two receivers at that time?
I don't think that two receivers are necessary as I've added debug
output to osdteletext's Receive() function and it gets also called when
there is only one receiver that typically feeds the transfer thread.
BTW: I've meanwhile realized that each time VDR crashes there were two
receivers created.