[BUG] EPG hanging, process at 100% win8 x64
#16
The issue is still present in Jan 3 nightly / RC3.

So its not fixed Sad
Reply
#17
Hello dushmaniac,

I saw you merged some fix to the EPG on dec 4.

So I gave a try to the dec 5th nightly for this issue.

There is still an issue but the effects have changed slightly.

The bug is still triggered the same way. However now instead of a hang with no way back, the image freeze but the sound keeps playing with some noise in the sound and some sound drop. All button on my remote were useless EXCEPT one. I have a button map to toggle fullscreen. If i press that i get back the video and things lokks good. If i bring the menu bar its cropped to the size of the bugged EPG window (that is gone) any menu is cutted that way. If i bring back the EPG then go back to the main menu I am back in a fully functional state (menu/overlay) are no longer cropped.

Lastly if i go back in EPG and scroll right up the point were it need to scroll the view it bug again and i'm back in a frozen image/button with audio state.

Hope it helps.
Reply
#18
I've open a ticket to track the issue: http://trac.xbmc.org/ticket/13920
Reply
#19
annoying, i can't repro it on linux.

the callstack shows a different thread. can you make it output class members too please, and the vars in the scope where it crashes
opdenkamp / dushmaniac

xbmc-pvr [Eden-PVR builds] [now included in mainline XBMC, so no more source link here :)]
personal website: [link]

Found a problem with PVR? Report it on Trac, under "PVR - core components". Please attach the full debug log.

If you like my work, please consider donating to me and/or Team XBMC.
Reply
#20
I know its a difficult issue. Sad

Vars in scope are included in my pastbin above however they can't be fully trusted because they are taken from an optimized (release) build. The crash dosent happen in debug.

I will look for class members.

This would be far form ideal but i could provide you access (remote desktop) to a vm stopped on a break point on the crash.
Reply
#21
that would be the last option. try to c+p the class member values and correct callstack first please.
opdenkamp / dushmaniac

xbmc-pvr [Eden-PVR builds] [now included in mainline XBMC, so no more source link here :)]
personal website: [link]

Found a problem with PVR? Report it on Trac, under "PVR - core components". Please attach the full debug log.

If you like my work, please consider donating to me and/or Team XBMC.
Reply
#22
this callstack is definatly good:

Code:
XBMC.exe!EPG::CGUIEPGGridContainer::Render()  Line 325 + 0x4 bytes      C++
        XBMC.exe!std::_Deque_iterator<CPTSOutputQueue::TPTSItem,std::allocator<CPTSOutputQueue::TPTSItem> >::operator-(int _Off)  Line 673 + 0x28 bytes C++
        XBMC.exe!CGUIControl::DoRender()  Line 180      C++
        XBMC.exe!CGUIControlGroup::Render()  Line 122   C++
        XBMC.exe!CGUIControl::DoRender()  Line 180      C++
        XBMC.exe!CGUIControlGroup::Render()  Line 122   C++
        XBMC.exe!CGUIControl::DoRender()  Line 180      C++
        XBMC.exe!CGUIControlGroup::Render()  Line 122   C++
        XBMC.exe!CGUIControl::DoRender()  Line 180      C++
        XBMC.exe!CGUIWindow::DoRender()  Line 354       C++
        XBMC.exe!CGUIWindowManager::RenderPass()  Line 538      C++
        XBMC.exe!CGUIWindowManager::Render()  Line 560  C++
        XBMC.exe!CApplication::RenderNoPresent()  Line 2194 + 0xa bytes C++
        XBMC.exe!CApplication::Render()  Line 2320 + 0x9 bytes  C++
        XBMC.exe!CXBApplicationEx::Run()  Line 177 + 0x15 bytes C++
        XBMC.exe!WinMain(HINSTANCE__ * hInst, HINSTANCE__ * __formal, char * commandLine, HINSTANCE__ * __formal)  Line 163     C++
        XBMC.exe!__tmainCRTStartup()  Line 275 + 0x1c bytes     C
        kernel32.dll!74ae8543()        
        [Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]    
        ntdll.dll!7703ac69()    
        ntdll.dll!7703ac3c()    
        XBMC.exe!CVariant::operator=(const CVariant & rhs)  Line 561 + 0x7 bytes        C++
        XBMC.exe!CBuiltins::Execute(const CStdStr<char> & execString)  Line 1259 + 0x7 bytes    C++
        XBMC.exe!JSONRPC::CJSONRPC::Initialize()  Line 74 + 0x25 bytes  C++
        XBMC.exe!JSONRPC::CJSONRPC::Initialize()  Line 74 + 0x25 bytes  C++
        XBMC.exe!CBuiltins::Execute(const CStdStr<char> & execString)  Line 1259 + 0x7 bytes    C++
        XBMC.exe!CBuiltins::Execute(const CStdStr<char> & execString)  Line 1259 + 0x7 bytes    C++

Theses are likely wrong:

Code:
EPG::CGUIEPGGridContainer * const
                cacheBeforeChannel      1123811328      int
                pos     358.92001       float
                focusedPos      1200.0000       float
+               focusedItem     {px=0x0b23f238 pn={...} }       boost::shared_ptr<CGUIListItem>
                focusedPosY     116.00000       float
+               item    {px=0x0b4a7eb0 pn={...} }       boost::shared_ptr<CGUIListItem>
                cacheBeforeProgramme    1123811328      int
                focusedPosX     1093.9200       float
                cacheBeforeRuler        1123811328      int
+               originRuler     {x=4.8153186e-032 y=3.1623901e-032}     CPoint
                endA    1200.0000       float
                end     428.00000       float
                focusedheight   52.000000       float
+               originChannel   {x=252.00000 y=4.5859375}       CPoint
                endB    636.00000       float
                DrawOffsetA     126.00000       float
                DrawOffsetB     126.00000       float
                focusedwidth    126.00000       float
                chanOffset      1122500608      int
                rulerOffset     1142882304      int
                posA    358.92001       float
                cacheAfterChannel       1149812081      int
                blockOffset     1       int
                drawOffset      1.401e-045#DEN  float
                cacheAfterRuler 1149812081      int
                cacheAfterProgramme     1149812081      int
+               originProgramme {x=4.8153186e-032 y=3.1623901e-032}     CPoint
                posB    428.00000       float
+               item    {px=0x0b7a0690 pn={...} }       boost::shared_ptr<CGUIListItem>
Reply
#23
Ok I think I found what's crashing, however, I don't know XBMC enough to say what's the proper behavior.

In CGUIEPGGridContainer::Render() Line 324: while (m_gridIndex[channel][startBlock].item == item)
In my crash scenario this code is executing with while (m_gridIndex[0][-1].item == item), -1 is outside the table therefore it crash in release mode.

Code:
if (blockOffset > 0 && item == m_gridIndex[channel][blockOffset-1].item)
    {
      /* first program starts before current view */
      int startBlock = blockOffset - 1;
      while (m_gridIndex[channel][startBlock].item == item)
        startBlock--;

      block = startBlock + 1;
      int missingSection = blockOffset - block;
      posA2 -= missingSection * m_blockSize;
    }

The course of event is:

320: if (blockOffset > 0 && item == m_gridIndex[channel][blockOffset-1].item) at that point blockOffset = 1
323: startBlock = 0 = 1 - 1
324: while (m_gridIndex[0][0].item == item)
325: startBlock = -1 = 0--
on next iteration while (m_gridIndex[0][-1].item == item): CRASH

I'm not sure what's being performed exactly, but since there is a safety with blockOffset > 0 at line 320, maybe there should also be startBlock > 0 at line 324.


Reply
#24
I seem to have good results with the following fix:

Change
while (m_gridIndex[channel][startBlock].item == item)
to
while (startBlock >= 0 && m_gridIndex[channel][startBlock].item == item)

Feel free to give me some credit in the git comments Smile

Thanks you
Reply
#25
uhm yeah that while loop is obviously wrong
opdenkamp / dushmaniac

xbmc-pvr [Eden-PVR builds] [now included in mainline XBMC, so no more source link here :)]
personal website: [link]

Found a problem with PVR? Report it on Trac, under "PVR - core components". Please attach the full debug log.

If you like my work, please consider donating to me and/or Team XBMC.
Reply
#26
I assume you take the lead on it?

Thanks Wink
Reply
#27
https://github.com/xbmc/xbmc/commit/d108...c966be7e8d
opdenkamp / dushmaniac

xbmc-pvr [Eden-PVR builds] [now included in mainline XBMC, so no more source link here :)]
personal website: [link]

Found a problem with PVR? Report it on Trac, under "PVR - core components". Please attach the full debug log.

If you like my work, please consider donating to me and/or Team XBMC.
Reply
#28
and now that i see the same commit on github i notice the typo Sad
opdenkamp / dushmaniac

xbmc-pvr [Eden-PVR builds] [now included in mainline XBMC, so no more source link here :)]
personal website: [link]

Found a problem with PVR? Report it on Trac, under "PVR - core components". Please attach the full debug log.

If you like my work, please consider donating to me and/or Team XBMC.
Reply
#29
Yes you need ">=", just ">" will cause problems

Thanks you Smile

https://github.com/xbmc/xbmc/commit/55d0...8071c2b0a4

I can now use the EPG without fearing it crash my htpc Smile

Feel free to close my trac report
Reply

Logout Mark Read Team Forum Stats Members Help
[BUG] EPG hanging, process at 100% win8 x640