----Origineel Bericht---- Van : r.scobie@clear.net.nz Datum : 07/09/2016 08:04 Aan : vdr@linuxtv.org Onderwerp : [vdr] VDR 2.3.1 dvbhddevice plugin
Does anyone have a vdr 2.3.1 modified version of the dvbhddevice plugin (or a patch against 2.2.0), that they can let me have?
I am not at all a coder, but with the help of the changes in the 2.3.1 Release notes and looking at another plugin that had been updated to 2.3.1, I made a few changes to the 2.2.0 plugin and got it to compile and it seems to work fine until I go to delete a recording, at which point vdr crashes.
This is vanilla vdr 2.3.1 and only my (probably incomplete) modified 2.2.0 dvbhddevice plugin.
Thanks,
Richard
vdr mailing list vdr@linuxtv.org https://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Hi Richard, Could you show the changes you made? Maybe we can see from that what you missed :-) Cheers, Cedric
cedric.dewijs@telfort.nl wrote:
Hi Richard, Could you show the changes you made? Maybe we can see from that what you missed :-)
Hi Cedric,
Thanks for your help.
In dvbhddevice.c :
- static const char *VERSION = "2.2.0"; + static const char *VERSION = "2.3.1";
In dvbhdffdevice.c:
void cDvbHdFfDevice::SetAudioTrackDevice(eTrackType Type) { //printf("SetAudioTrackDevice %d\n", Type); const tTrackId *TrackId = GetTrack(Type); if (TrackId && TrackId->id) { int streamType = 0; - cChannel * channel = Channels.GetByNumber(CurrentChannel()); + LOCK_CHANNELS_READ; + const cChannel * channel = Channels->GetByNumber(CurrentChannel());
After making these changes, the plugin compiled without error.
Regards,
Richard
Replying to my own post, it looks like this crash on deleting recordings is probably not due to dvbhddevice plugin, as others have experienced it, according to comment no. 26 in this thread:
http://www.vdr-portal.de/board1-news/board2-vdr-news/127271-announce-vdr-dev...
@Klaus
This comment and replies from yourself were a year ago.
Have you found a solution yet and it's due out in the next release, or would you like me to do any other testing or to provide any other information?
An incomplete backtrace is below:
Program received signal SIGSEGV, Segmentation fault. cRecordings::MBperMinute (this=0x0) at recording.c:3049 3049 } Missing separate debuginfos, use: debuginfo-install expat-2.0.1-11.fc15.x86_64 fontconfig-2.8.0-4.fc16.x86_64 freetype-2.4.6-3.fc16.x86_64 glibc-2.14.90-14.x86_64 libattr-2.4.46-2.fc16.x86_64 libcap-2.22-1.fc15.x86_64 libgcc-4.6.2-1.fc16.x86_64 libjpeg-turbo-1.1.1-1.fc16.x86_64 libstdc++-4.6.2-1.fc16.x86_64 (gdb) bt full #0 cRecordings::MBperMinute (this=0x0) at recording.c:3049 Recording = <optimized out> size = 0 length = 0 #1 0x000000000052ea0c in cVideoDiskUsage::HasChanged (State=@0x802660) at videodir.c:214 RecordingsLock = {stateKey = {stateLock = 0x0, write = false, state = -1, timedOut = false}, list = 0x0} Recordings = <optimized out> MBperMinute = <optimized out> FreeMB = 629428 UsedPercent = <optimized out> #2 0x000000000052eb08 in cVideoDiskUsage::String () at videodir.c:231 No locals. #3 0x00000000004fde06 in cSkinClassicDisplayMenu::DrawTitle (this=0xaa4020) at skinclassic.c:282 font = 0xa75540 WithDisk = <optimized out> #4 0x00000000004d5c44 in Display (this=0xad3950) at osdbase.c:238 count = <optimized out> #5 cOsdMenu::Display (this=0xad3950) at osdbase.c:223 No locals. #6 0x00000000004cb5bb in cMenuRecordings::Delete (this=0xad3950) at menu.c:3119 Recordings = 0x7f9bc0 Recording = 0x7fffe803cae0 FileName = {_vptr.cString = 0x79a350, s = 0xad1e50 "/mnt/storage/video/Newshub_Live_At_6pm/_/2016-09-08.17.55.3-0.rec"} ri = <optimized out> #7 0x00000000004d6a1c in cOsdMenu::ProcessKey (this=0xaadc50, Key=kYellow) at osdbase.c:528 state = <optimized out> #8 0x00000000004cb734 in cMenuRecordings::ProcessKey (this=0xaadc50, Key=kYellow) at menu.c:3177 HadSubMenu = true state = <optimized out> #9 0x00000000004d6a1c in cOsdMenu::ProcessKey (this=0xaa3ef0, Key=kYellow) at osdbase.c:528 state = <optimized out> #10 0x00000000004caa66 in cMenuMain::ProcessKey (this=0xaa3ef0, Key=kYellow) at menu.c:4372 HadSubMenu = true osdLanguage = 0 state = <optimized out> #11 0x0000000000474836 in main (argc=<optimized out>, argv=<optimized out>) at vdr.c:1354 state = <optimized out> Now = 1473396864 Interact = <optimized out> key = <optimized out> PreviousChannelIndex = 1 LastChannelChanged = 1473396826 IsInfoMenu = <optimized out> Menu = <optimized out> LastChannel = 12 LastTimerChannel = -1 PreviousChannel = {1, 12} CurrentSkin = <optimized out> LastInteract = 1473396864 MaxLatencyTime = 0 InhibitEpgScan = false ResourceDirectory = 0x57d2407f <Address 0x57d2407f out of bounds> LocaleDirectory = 0x552300 "ing down" MuteAudio = 255 savedTm = {c_iflag = 1280, c_oflag = 5, c_cflag = 191, c_lflag = 35387, c_line = 0 '\000', c_cc = "\003\034\177\025\004\000\001\000\021\023\032\000\022\017\027\026", '\000' <repeats 15 times>, c_ispeed = 15, c_ospeed = 15} ConfigDirectory = 0x552300 "ing down" Args = <optimized out> VdrUser = 0x0 VideoDirectory = <optimized out> LircDevice = <optimized out> EpgDataFileName = 0x7f9f40 "\241\\322W" DisplayVersion = 12 WatchdogTimeout = 0 DeprecatedVdrCharsetOverride = 0x1 <Address 0x1 out of bounds> PluginManager = {_vptr.cPluginManager = 0x797bf0, static pluginManager = 0x7fffffffdf70, directory = 0x809b60 "/home/rs/vdr/PLUGINS/lib", lastHousekeeping = 1473396825, nextHousekeeping = -1, dlls = {<cList<cDll>> = {<cListBase> = {_vptr.cListBase = 0x797c50, objects = 0x809c20, lastObject = 0x809c20, count = 1, stateLock = {name = 0x0, threadId = 0, rwLock = {rwlock = { __data = {__lock = 0, __nr_readers = 0, __readers_wakeup = 0, __writer_wakeup = 0, __nr_readers_queued = 0, __nr_writers_queued = 0, ---Type <return> to continue, or q <return> to quit--- __writer = 0, __shared = 0, __pad1 = 0, __pad2 = 0, __flags = 0}, __size = '\000' <repeats 55 times>, __align = 0}}, state = 0, explicitModify = false}, needsLocking = 0x0, useGarbageCollector = false}, <No data fields>}, <No data fields>}} StartedAsRoot = <optimized out> AudioCommand = 0x0 c = <optimized out> CodeSet = <optimized out> HasStdin = true UserDump = 32 SVDRPport = 6419 CacheDirectory = 0x552300 "ing down" DaemonMode = 90 EpgDataReader = {<cThread> = {_vptr.cThread = 0x794590, active = false, running = false, childTid = 140737085699840, childThreadId = 2880, mutex = {mutex = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 2, __spins = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 16 times>, "\002", '\000' <repeats 22 times>, __align = 0}, locked = 0}, description = 0x809e40 "epg data reader", lowPriority = false, static mainThreadId = 2876}, <No data fields>} DisplayHelp = 224 SysLogTarget = 8 Terminal = 0x0 OverrideCharacterTable = 0x1 <Address 0x1 out of bounds> long_options = {{name = 0x5526da "audio", has_arg = 1, flag = 0x0, val = 97}, {name = 0x5526e0 "cachedir", has_arg = 1, flag = 0x0, val = 355}, {name = 0x5526e9 "chartab", has_arg = 1, flag = 0x0, val = 611}, {name = 0x5526f1 "config", has_arg = 1, flag = 0x0, val = 99}, {name = 0x5526f8 "daemon", has_arg = 0, flag = 0x0, val = 100}, {name = 0x545eb8 "device", has_arg = 1, flag = 0x0, val = 68}, {name = 0x5526ff "dirnames", has_arg = 1, flag = 0x0, val = 356}, {name = 0x552708 "edit", has_arg = 1, flag = 0x0, val = 357}, {name = 0x55270d "epgfile", has_arg = 1, flag = 0x0, val = 69}, {name = 0x552715 "filesize", has_arg = 1, flag = 0x0, val = 358}, {name = 0x55271e "genindex", has_arg = 1, flag = 0x0, val = 359}, {name = 0x552727 "grab", has_arg = 1, flag = 0x0, val = 103}, {name = 0x55272c "help", has_arg = 0, flag = 0x0, val = 104}, {name = 0x552731 "instance", has_arg = 1, flag = 0x0, val = 105}, {name = 0x55273a "lib", has_arg = 1, flag = 0x0, val = 76}, {name = 0x55273e "lirc", has_arg = 2, flag = 0x0, val = 364}, {name = 0x552743 "localedir", has_arg = 1, flag = 0x0, val = 620}, {name = 0x55274d "log", has_arg = 1, flag = 0x0, val = 108}, {name = 0x54fa4f "mute", has_arg = 0, flag = 0x0, val = 109}, {name = 0x552751 "no-kbd", has_arg = 0, flag = 0x0, val = 366}, {name = 0x552758 "plugin", has_arg = 1, flag = 0x0, val = 80}, {name = 0x543dbe "port", has_arg = 1, flag = 0x0, val = 112}, {name = 0x55275f "record", has_arg = 1, flag = 0x0, val = 114}, {name = 0x552766 "resdir", has_arg = 1, flag = 0x0, val = 370}, {name = 0x55276d "showargs", has_arg = 2, flag = 0x0, val = 627}, {name = 0x552776 "shutdown", has_arg = 1, flag = 0x0, val = 115}, {name = 0x55277f "split", has_arg = 0, flag = 0x0, val = 371}, {name = 0x552785 "terminal", has_arg = 1, flag = 0x0, val = 116}, {name = 0x55278e "updindex", has_arg = 1, flag = 0x0, val = 629}, {name = 0x552797 "user", has_arg = 1, flag = 0x0, val = 117}, {name = 0x55279c "userdump", has_arg = 0, flag = 0x0, val = 373}, {name = 0x541be3 "version", has_arg = 0, flag = 0x0, val = 86}, {name = 0x5527a5 "vfat", has_arg = 0, flag = 0x0, val = 374}, {name = 0x545fea "video", has_arg = 1, flag = 0x0, val = 118}, {name = 0x5527aa "watchdog", has_arg = 1, flag = 0x0, val = 119}, {name = 0x0, has_arg = 0, flag = 0x0, val = 0}}
Regards,
Richard
Further to my last post, I applied the "vdr-2.3.1-fixcrashdelrec.diff" and "vdr-2.3.1-grantrecursivewritelocks-2.diff" that Klaus posted to the thread on vdr.portal.de :
http://www.vdr-portal.de/board1-news/board2-vdr-news/127271-announce-vdr-dev...
and I am no longer seg faulting.
I did not try this initially, as the poster "UFO", on that thread, for whom the patches were written, had not found any improvement.
Regards,
Richard
On 09.09.2016 07:01, Richard Scobie wrote:
Replying to my own post, it looks like this crash on deleting recordings is probably not due to dvbhddevice plugin, as others have experienced it, according to comment no. 26 in this thread:
http://www.vdr-portal.de/board1-news/board2-vdr-news/127271-announce-vdr-dev...
@Klaus
This comment and replies from yourself were a year ago.
Good heavens! Has it been a year already?! Time is really flying...
Have you found a solution yet and it's due out in the next release, or would you like me to do any other testing or to provide any other information?
"vdr-2.3.1-fixcrashdelrec.diff" and "vdr-2.3.1-grantrecursivewritelocks-2.diff" are the only two fixes I have. I sincerely hope to find more time for VDR development in the not so distant future. This past year I was rather busy with lots of other stuff. And of course any known fixes will go into the next version.
Klaus
Hi Klaus,
Klaus Schmidinger wrote:
"vdr-2.3.1-fixcrashdelrec.diff" and "vdr-2.3.1-grantrecursivewritelocks-2.diff" are the only two fixes I have. I sincerely hope to find more time for VDR development in the not so distant future. This past year I was rather busy with lots of other stuff. And of course any known fixes will go into the next version.
Klaus
Thanks for the reply.
Further testing last night after applying both those patches, revealed although it no longer crashes while deleting a recording, things still aren't right.
The "recordings" menu is no longer navigable - the highlit entry will not move and more than one iten in the list will become highlighted.
I'll try each patch seperately.
Regards,
Richard
On 09.09.2016 21:14, Richard Scobie wrote:
... The "recordings" menu is no longer navigable - the highlit entry will not move and more than one iten in the list will become highlighted.
Yes, I have this, too. No fix yet, though. Just press the Up or Down key in such a case and you get the cursor back. Ignore the previous (stuck) cursor. I guess this is the typical flaw that just isn't causing enough trouble to get fixed right away... ;-)
Klaus
Klaus Schmidinger wrote:
On 09.09.2016 21:14, Richard Scobie wrote:
... The "recordings" menu is no longer navigable - the highlit entry will not move and more than one iten in the list will become highlighted.
Yes, I have this, too. No fix yet, though. Just press the Up or Down key in such a case and you get the cursor back. Ignore the previous (stuck) cursor. I guess this is the typical flaw that just isn't causing enough trouble to get fixed right away... ;-)
Interesting. In my case, opening Recordings menu places a the highlighted recording in the centre of the list.
A single "Up" press scrolls the list and places the highlighted recording at the botoom of the list. Furthur Up key presses have no effect.
A Down key press at this point moves the highlighted event down one entry and scrolls the list so that this is at the top of the list. Further Down key presses have no effect.
Regards,
Richard