Kodi Community Forum

Full Version: Hard crash testing PVR skin files (Help!)
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
Hi Guys,

I'm currently trying to add PVR support to my skin and seem to have everything in place, but I keep having my system crash whenever I try changing the EPG from 'Next' to 'Timeline'. I'm running the demo frontend on Alpha7 under Win7. As soon as I change to 'Timeline' thru the the 'view-as' menu (or if I change to the Confluence skin, get into timeline there and then head back to my skin), XBMC hard crashes after a short wait. The last bit of the log file shows this:

PHP Code:
DEBUGCGUIWindowPVRGuide PVR::CGUIWindowPVRGuide::UpdateData update window 'epg'set view to 16
DEBUG
CGUIEPGGridContainer EPG::CGUIEPGGridContainer::SetStartEnd start=12/11/2012 3:00:00 AM end=14/11/2012 2:00:00 AM
DEBUG
EPG::CGUIEPGGridContainer::UpdateItems completed successfully in 3 ms
ERROR
Unhandled exception in CApplication::FrameMove() : Access violation at 0x76702e2aWriting location 0x76702e2a
ERROR
Previous line repeats 10 times.
ERRORCApplication::FrameMove(), too many exceptions 

Thing is, I have copied almost exactly (basically replace Confluence specific includes with my own) the code for the timeline view (id 10) from Confluence so I don't know why it's not working. Should I be looking for the problem in the NowNextlist view code (id 16) or the timeline view code (id 10). Does anyone have any suggestions?

Wyrm (xTV-SAF)
(2012-11-12, 05:31)wyrm Wrote: [ -> ]Hi Guys,

I'm currently trying to add PVR support to my skin and seem to have everything in place, but I keep having my system crash whenever I try changing the EPG from 'Next' to 'Timeline'. I'm running the demo frontend on Alpha7 under Win7. As soon as I change to 'Timeline' thru the the 'view-as' menu (or if I change to the Confluence skin, get into timeline there and then head back to my skin), XBMC hard crashes after a short wait. The last bit of the log file shows this:

PHP Code:
DEBUGCGUIWindowPVRGuide PVR::CGUIWindowPVRGuide::UpdateData update window 'epg'set view to 16
DEBUG
CGUIEPGGridContainer EPG::CGUIEPGGridContainer::SetStartEnd start=12/11/2012 3:00:00 AM end=14/11/2012 2:00:00 AM
DEBUG
EPG::CGUIEPGGridContainer::UpdateItems completed successfully in 3 ms
ERROR
Unhandled exception in CApplication::FrameMove() : Access violation at 0x76702e2aWriting location 0x76702e2a
ERROR
Previous line repeats 10 times.
ERRORCApplication::FrameMove(), too many exceptions 

Thing is, I have copied almost exactly (basically replace Confluence specific includes with my own) the code for the timeline view (id 10) from Confluence so I don't know why it's not working. Should I be looking for the problem in the NowNextlist view code (id 16) or the timeline view code (id 10). Does anyone have any suggestions?

Wyrm (xTV-SAF)

also had some crashes with PVR in the past. perhaps worth mentioning:
1) do not use a control with container.numitems
2) include the different PVR areas (TV,radio,timeline,recording) in the same order as confluence.

those two at least led to crashes in the past. don´t know if that´s fixed.
(2012-11-12, 05:47)phil65 Wrote: [ -> ]also had some crashes with PVR in the past. perhaps worth mentioning:
1) do not use a control with container.numitems
2) include the different PVR areas (TV,radio,timeline,recording) in the same order as confluence.

those two at least led to crashes in the past. don´t know if that´s fixed.
phil65,

At this stage mate I'm ready to try anything. Will give the above a go and see if it helps.

Wyrm (xTV-SAF)

- Well B#$$@& me, caused by point 1 above. Now all fixed, thanks a bunch phil65.
I don't know if its still the case but I've found in the past that changing the dimensions in the EPG grid view can cause some major issues you really need to just keep testing the size of the controls that don't crash it. Really the EPG grid is a bit of a hacked together control that needs redesigning from the ground up IMHO but yeah if you play around with the EPG grid you need to be aware that some dimensions will crash it
If you can get me reproducible crashes (e.g. a skin to download, with whatever instructions are needed to repro) I'm happy to take a look and see if they can be prevented.
container.numitems screwed me over when I added PVR to XeeBo. Rolleyes
(2012-11-12, 06:36)jmarshall Wrote: [ -> ]If you can get me reproducible crashes (e.g. a skin to download, with whatever instructions are needed to repro) I'm happy to take a look and see if they can be prevented.
Jonathan,

This was an issue with the Quartz skin(3.3.9) as well, so I guess you could grab that skin from the main repo to see the problem in action. Problem already eradicated from my local copy of my skin and I have not committed anything to a public repo as I did not want such a nasty issue with my skin out in the wild. As to reproducing the issue, I guess just use either a proper PVR client (or the demo one as in my case) and try to change the current PVR view to timeline to watch the fireworks (button id 31 in 'view-as' menu, that is grouplist id 9000 in MyPVR.xml).

Hope this helps
Wyrm (xTV-SAF)

(2012-11-12, 05:31)wyrm Wrote: [ -> ]
PHP Code:
DEBUGCGUIWindowPVRGuide PVR::CGUIWindowPVRGuide::UpdateData update window 'epg'set view to 16
DEBUG
CGUIEPGGridContainer EPG::CGUIEPGGridContainer::SetStartEnd start=12/11/2012 3:00:00 AM end=14/11/2012 2:00:00 AM
DEBUG
EPG::CGUIEPGGridContainer::UpdateItems completed successfully in 3 ms
ERROR
Unhandled exception in CApplication::FrameMove() : Access violation at 0x76702e2aWriting location 0x76702e2a
ERROR
Previous line repeats 10 times.
ERRORCApplication::FrameMove(), too many exceptions 

exact same error as several users reported with T!
http://trac.xbmc.org/ticket/13473

it might be platform depended?
crashes reported so far are on windows, while on linux it all works fine.
I had few minuts to finally reproduce it.

@jmarshall
Problem is that CGUIEPGGridContainer reports itself as container ( https://github.com/xbmc/xbmc/blob/master...iner.h#L80 , needed for epggrid to work as view control ) but it doesn't subclass from CGUIBaseContainer, so when we cast CGUIEPGGridContainer* to CGUIBaseContainer* we will crash (we do that in info manager).

I think there are too many differences between epg and rest of containers to use CGUIBaseContainer as base class for CGUIEPGGridContainer. Long term I would add intermediate IGUIContainer interface with stub container methods that both CGUIEPGGridContainerand CGUIBaseContainer subclass from (and cast to IGUIContainer instead of CGUIBaseContainer). For now just to fix the crash I would just add additional IsContainerClass() method so we don't cast epggrid to basecontainer (so info manager would return empty for "Container." infolabels for epggrid). What do You think?
^ Understood every word. Wink
@pieh: Can you just remove CGUIEPGGridContainer from saying it's a container anyway? What advantage is there to it returning true when it's not?
We can't remove that, because epggrid ( https://github.com/xbmc/xbmc/blob/master...e.cpp#L216 ) is used as view control in CGUIWindowPVR ( https://github.com/xbmc/xbmc/blob/master...R.cpp#L159 ).View Control only accept containers to be added as view, if we would report epggrid as not container, then view using epggrid would be unusable.
Ok. Is the GetListItem() stuff supposed to be being implemented? If so, you could use the control type to check it in CGUIInfoManager which I think is the only other place this stuff is being done?

You have to make sure you catch the spot using GetLabel() as well...

Cheers,
Jonathan
Fix was just merged: https://github.com/xbmc/xbmc/pull/1880 - Container.NumItems will return number of channels now in epggrid now (and rest of Container.* and ListItem.* infolabels will return info based on channel part of epggrid). Container.* booleans are not supported now (won't crash - will just always be false).
Any news on the crashes that happen in EPG: Timeline, when say: a horizontal wraplist somewhere in MyPVR.xml is wider then the window (1280x720)? Even if it is set to not visible.
Pages: 1 2