vdr-bounces@linuxtv.org schrieb am 20.07.2006 12:03:09:
On Wed, 19 Jul 2006 12:59:36 +0200, Frank Schmirler wrote
I would like to raise an issue with SVDRP. When the client doesn't send QUIT but simply closes the connection, VDR happily ignores the EOF returned by read. The socket will remain in state CLOSE_WAIT until it's finally closed due to the SVDRP timeout. In the meantime the SVDRP port remains blocked for other clients.
An update on this issue: with the implementation used before vdr-1.2.2
you
*will* get a broken pipe message, as cSVDRP::Close() tries to send a
goodby
message to the client. This is not a problem, but as a "clean" solution
I
would suggest:
--- svdrp.c.orig 2006-07-20 11:34:10.000000000 +0200 +++ svdrp.c 2006-07-20 11:39:51.000000000 +0200 @@ -1575,8 +1575,11 @@ isyslog("lost connection to SVDRP client"); Close(); }
else
break;
else {
isyslog("SVDRP client closed connection");
file.Close();
DELETENULL(PUTEhandler);
} } if (Setup.SVDRPTimeout && time(NULL) - lastActivity > Setup.SVDRP
Timeout) { isyslog("timeout on SVDRP connection");
I will try this workarounds by backporting it to my productive system.
Had another kernel crash this morning with stuck SVDRP:
Jul 24 04:09:03 vdr vdr[1399]: closing SVDRP connection Jul 24 04:09:44 vdr vdr[1399]: connect from 127.0.0.1, port 32781 - accepted Jul 24 04:10:01 vdr /USR/SBIN/CRON[7313]: (root) CMD (test -x /usr/sbin/anacron || run-parts --report /etc/cr Jul 24 04:10:08 vdr vdr[1399]: max. latency time 23 seconds Jul 24 04:10:28 vdr vdr[1399]: timer 45 (55 2050-2110 'kinder~Bernd~BRAVO BERND~der etwas andere Sandmann') a
this shurely is VDRAdmin adding timers looks like it takes 54 second here =0
Jul 24 04:10:38 vdr vdr[1399]: closing SVDRP connection Jul 24 04:10:38 vdr vdr[1399]: connect from 127.0.0.1, port 32782 - accepted Jul 24 04:10:38 vdr vdr[1399]: ERROR (svdrp.c,365): Broken pipe Jul 24 04:11:03 vdr vdr[1399]: connect from 127.0.0.1, port 32784 - accepted Jul 24 04:11:03 vdr vdr[1399]: SVDRP message: 'Infosat:Received 1415 of 1500 data blocks [ 94.33%]' Jul 24 04:11:03 vdr vdr[1399]: info: Infosat:Received 1415 of 1500 data blocks [ 94.33%] Jul 24 04:11:04 vdr vdr[1399]: closing SVDRP connection Jul 24 04:12:03 vdr vdr[1399]: connect from 127.0.0.1, port 32785 - accepted Jul 24 04:12:03 vdr vdr[1399]: SVDRP message: 'Infosat:Received 1426 of 1500 data blocks [ 95.07%]' Jul 24 04:12:03 vdr vdr[1399]: info: Infosat:Received 1426 of 1500 data blocks [ 95.07%] Jul 24 04:12:03 vdr vdr[1399]: closing SVDRP connection Jul 24 04:13:04 vdr vdr[1399]: connect from 127.0.0.1, port 32786 - accepted Jul 24 04:13:04 vdr vdr[1399]: SVDRP message: 'Infosat:Received 1440 of 1500 data blocks [ 96.00%]' Jul 24 04:13:04 vdr vdr[1399]: info: Infosat:Received 1440 of 1500 data blocks [ 96.00%] Jul 24 04:13:04 vdr vdr[1399]: closing SVDRP connection Jul 24 04:14:04 vdr vdr[1399]: connect from 127.0.0.1, port 32787 - accepted Jul 24 04:14:04 vdr vdr[1399]: SVDRP message: 'Infosat:Received 1449 of 1500 data blocks [ 96.60%]' Jul 24 04:14:04 vdr vdr[1399]: info: Infosat:Received 1449 of 1500 data blocks [ 96.60%] Jul 24 04:14:04 vdr vdr[1399]: closing SVDRP connection Jul 24 04:14:47 vdr vdr[1410]: changing caids of channel 531 from 100 to 0 Jul 24 04:15:04 vdr vdr[1399]: connect from 127.0.0.1, port 32788 - accepted Jul 24 04:15:05 vdr vdr[1399]: SVDRP message: 'Infosat:Received 1464 of 1500 data blocks [ 97.60%]' Jul 24 04:15:05 vdr vdr[1399]: info: Infosat:Received 1464 of 1500 data blocks [ 97.60%] Jul 24 04:15:05 vdr vdr[1399]: closing SVDRP connection Jul 24 04:16:04 vdr vdr[1399]: connect from 127.0.0.1, port 32789 - accepted Jul 24 04:16:05 vdr vdr[1399]: SVDRP message: 'Infosat:Received 1472 of 1500 data blocks [ 98.13%]' Jul 24 04:16:05 vdr vdr[1399]: info: Infosat:Received 1472 of 1500 data blocks [ 98.13%] Jul 24 04:16:05 vdr vdr[1399]: closing SVDRP connection Jul 24 04:17:04 vdr vdr[1399]: connect from 127.0.0.1, port 32790 - accepted Jul 24 04:17:04 vdr vdr[1399]: SVDRP message: 'Infosat:Received 1476 of 1500 data blocks [ 98.40%]' Jul 24 04:17:04 vdr vdr[1399]: info: Infosat:Received 1476 of 1500 data blocks [ 98.40%] Jul 24 04:17:04 vdr vdr[1399]: closing SVDRP connection Jul 24 04:18:05 vdr vdr[1399]: connect from 127.0.0.1, port 32791 - accepted Jul 24 04:18:05 vdr vdr[1399]: SVDRP message: 'Infosat:Received 1481 of 1500 data blocks [ 98.73%]' Jul 24 04:18:05 vdr vdr[1399]: info: Infosat:Received 1481 of 1500 data blocks [ 98.73%] Jul 24 04:18:05 vdr vdr[1399]: closing SVDRP connection Jul 24 04:19:05 vdr vdr[1399]: connect from 127.0.0.1, port 32792 - accepted Jul 24 04:19:05 vdr vdr[1399]: SVDRP message: 'Infosat:Received 1490 of 1500 data blocks [ 99.33%]' Jul 24 04:19:05 vdr vdr[1399]: info: Infosat:Received 1490 of 1500 data blocks [ 99.33%] Jul 24 04:19:05 vdr vdr[1399]: closing SVDRP connection Jul 24 04:20:05 vdr vdr[1399]: connect from 127.0.0.1, port 32793 - accepted Jul 24 04:20:05 vdr vdr[1399]: SVDRP message: 'Infosat:Received 1497 of 1500 data blocks [ 99.80%]' Jul 24 04:20:05 vdr vdr[1399]: info: Infosat:Received 1497 of 1500 data blocks [ 99.80%] Jul 24 04:20:05 vdr vdr[1399]: closing SVDRP connection
this seems to be VDRAdin as it's not the same 60sec raster as the
messages from infosatepg
Jul 24 04:20:41 vdr vdr[1399]: connect from 127.0.0.1, port 32794 - accepted Jul 24 04:21:42 vdr vdr[1399]: PANIC: watchdog timer expired - exiting! Jul 24 04:21:43 vdr lircd 0.7.1pre2[839]: removed client Jul 24 04:21:43 vdr vdr[2415]: KBD remote control thread ended (pid=2415, tid=163851) Jul 24 04:21:43 vdr vdr[2404]: graphlcd plugin: Display update thread ended (pid=2404) Jul 24 04:21:43 vdr runvdrdevel: restarting VDR
Watchdog is 60sec and SVDRP timeout is 30 sec. VDRAdmin is 0.97-am3.3-2, vdr is 1.3.24 ctvdr-multipatch (please no request to test vanilla, this is the productive system and the crash comes every other month, no way I'm living with vanilla vdr this long ;)) )
Infosat should not do anything other than messages at this time.
Crash comes after restarting with an killed interrupt handler and infosat being blaimed. As a crash woraround I now happily kill infosatepg in my runvdr. That should keep me at least from crashing.
regards Peter