Kodi Community Forum

Full Version: .ISO ok, but DVDs on HDD crash xbmc
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Code:
22:11:42 T:3061147488 M: 40570880  NOTICE: DVDPlayer: Opening: /inc/Some DVD/VIDEO_TS/VIDEO_TS.IFO
22:11:42 T:3061147488 M: 40570880 WARNING: CDVDMessageQueue::Put MSGQ_NOT_INITIALIZED
22:11:42 T:2917137296 M: 40562688  NOTICE: Creating InputStream
22:11:42 T:2917137296 M: 40435712   ERROR: Error on dvdnav_open
22:11:42 T:2917137296 M: 40435712   ERROR: InputStream: Error opening, /inc/Some DVD/VIDEO_TS/VIDEO_TS.IFO
22:11:42 T:2917137296 M: 40435712  NOTICE: CDVDPlayer::OnExit()
22:11:42 T:2917137296 M: 40435712  NOTICE: CDVDPlayer::OnExit() deleting input stream
22:11:43 T:3061147488 M: 40443904  NOTICE: CDVDPlayer::CloseFile()
22:11:43 T:3061147488 M: 40443904 WARNING: CDVDMessageQueue::Put MSGQ_NOT_INITIALIZED
22:11:43 T:3061147488 M: 40443904  NOTICE: DVDPlayer: waiting for threads to exit
22:11:43 T:3061147488 M: 40443904  NOTICE: DVDPlayer: finished waiting
22:11:43 T:3061147488 M: 40443904   ERROR: Playlist Player: skipping unplayable item: -1, path [/inc/Some DVD/VIDEO_TS/VIDEO_TS.IFO]

...After this, xbmc exits immediatly. This bug is different from the virtual file handles + getmntent one.
Using revision: 14676

Note 1 : in the above example, DVD is not a real dvd. Just AUDIO_TS/VIDEO_TS directories on disk.
Note 2 : xbmc works fine with .ISO.
Não há problema, amigo...

Distribution : Slackware 12.1
Architecture : i686
Install Method : manual
SVN Revision : 14676
Reproduce the problem : play a DVD from the hard-disk

Full debug log : http://www.pastebin.ca/1093109

Backtrace :

Code:
#0  0x0831aebf in boost::detail::atomic_increment (pw=0x15)
    at /usr/include/boost/detail/sp_counted_base_gcc_x86.hpp:66
#1  0x0831af21 in boost::detail::sp_counted_base::add_ref_copy (this=0x11)
    at /usr/include/boost/detail/sp_counted_base_gcc_x86.hpp:133
#2  0x0831b003 in shared_count (this=0xbfe55e18, r=@0x8fecab4)
    at /usr/include/boost/detail/shared_count.hpp:215
#3  0x0840eb8c in shared_ptr (this=0xbfe55e14)
    at /usr/include/boost/shared_ptr.hpp:148
#4  0x085cca68 in PLAYLIST::CPlayList::SetUnPlayable (this=0x8d25550, iItem=-1)
    at PlayList.cpp:352
#5  0x085d3455 in PLAYLIST::CPlayListPlayer::Play (this=0x8c7c240, iSong=0,
    bAutoPlay=false, bPlayPrevious=false) at PlayListPlayer.cpp:216
#6  0x08541091 in CGUIWindowVideoBase::PlayMovie (this=0x8e742e8,
    item=0xbfe560cc) at GUIWindowVideoBase.cpp:1273
#7  0x085414c6 in CGUIWindowVideoBase::OnPlayMedia (this=0x8e742e8, iItem=13)
    at GUIWindowVideoBase.cpp:1187
#8  0x0854a4fe in CGUIWindowVideoFiles::OnPlayMedia (this=0x8e742e8, iItem=13)
    at GUIWindowVideoFiles.cpp:327
#9  0x084a0c37 in CGUIMediaWindow::OnClick (this=0x8e742e8, iItem=13)
    at GUIMediaWindow.cpp:744
#10 0x085406e4 in CGUIWindowVideoBase::OnClick (this=0x8e742e8, iItem=13)
    at GUIWindowVideoBase.cpp:896
#11 0x0854a6f5 in CGUIWindowVideoFiles::OnClick (this=0x8e742e8, iItem=13)
    at GUIWindowVideoFiles.cpp:300
#12 0x084a28d9 in CGUIMediaWindow::OnMessage (this=0x8e742e8,
    message=@0xbfe56c78) at GUIMediaWindow.cpp:197
#13 0x085470e8 in CGUIWindowVideoBase::OnMessage (this=0x8e742e8,
    message=@0xbfe56c78) at GUIWindowVideoBase.cpp:263
#14 0x0854b877 in CGUIWindowVideoFiles::OnMessage (this=0x8e742e8,
    message=@0xbfe56c78) at GUIWindowVideoFiles.cpp:217
#15 0x0832f5c8 in CGUIControl::SendWindowMessage (this=0x9339590,
    message=@0xbfe56c78) at GUIControl.cpp:247
#16 0x08319285 in CGUIBaseContainer::OnClick (this=0x9339590, actionID=7)
    at GUIBaseContainer.cpp:394
#17 0x0831a0a6 in CGUIBaseContainer::OnAction (this=0x9339590,
    action=@0xbfe56fe8) at GUIBaseContainer.cpp:124
#18 0x083527a7 in CGUIListContainer::OnAction (this=0x9339590,
    action=@0xbfe56fe8) at GUIListContainer.cpp:195
#19 0x0838b84b in CGUIWindow::OnAction (this=0x8e742e8, action=@0xbfe56fe8)
    at GUIWindow.cpp:502
#20 0x084a34ba in CGUIMediaWindow::OnAction (this=0x8e742e8,
    action=@0xbfe56fe8) at GUIMediaWindow.cpp:134
#21 0x0854719c in CGUIWindowVideoBase::OnAction (this=0x8e742e8,
    action=@0xbfe56fe8) at GUIWindowVideoBase.cpp:100
#22 0x08392700 in CGUIWindowManager::OnAction (this=0x8c7ade0,
    action=@0xbfe56fe8) at GUIWindowManager.cpp:431
#23 0x083f021c in CApplication::OnAction (this=0x8c81840, action=@0xbfe56fe8)
    at Application.cpp:2516
#24 0x083f191d in CApplication::OnKey (this=0x8c81840, key=@0xbfe5704c)
    at Application.cpp:2483
#25 0x083f237e in CApplication::ProcessRemote (this=0x8c81840,
    frameTime=0.0170000009) at Application.cpp:3188
#26 0x083f24b9 in CApplication::FrameMove (this=0x8c81840)
    at Application.cpp:2833
#27 0x0869034b in CXBApplicationEx::Run (this=0x8c81840)
    at XBApplicationEx.cpp:232
#28 0x086933cd in main (argc=3, argv=0xbfe573c4) at XboxMediaCenter.cpp:98

Something with the boost library. Mine is boost-1.35.0-i686-2as.

Thanks.
Note : SetUnPlayable is called with iItem as -1.
Should not happen, since playlist.size is greater than zero.

Weird. I'll dig into this later...
Followup :

Just before crash, iSong = 0 and m_iCurrentSong = -1.

Which is also weird, since m_iCurrentSong is set to iSong at PlayListPlayer.cpp:209.
Code:
#0  PLAYLIST::CPlayListPlayer::Reset (this=0x8c7c240) at PlayListPlayer.cpp:379
#1  0x085d3a77 in PLAYLIST::CPlayListPlayer::OnMessage (this=0x8c7c240, message=@0x8d1bdb8) at PlayListPlayer.cpp:77
#2  0x08394712 in CGUIWindowManager::SendMessage (this=0x8c7ade0, message=@0x8d1bdb8) at GUIWindowManager.cpp:66
#3  0x083ece98 in CApplication::PlayFile (this=0x8c81840, item=@0xb19062e0, bRestart=false) at Application.cpp:4146
#4  0x085d3400 in PLAYLIST::CPlayListPlayer::Play (this=0x8c7c240, iSong=0, bAutoPlay=false, bPlayPrevious=false)
    at PlayListPlayer.cpp:213

In short, CApplication:TonguelayFile checks whether playback has been successful. If not, it sends any queued messages. GUI_MSG_PLAYBACK_STOPPED in turn causes a playlist reset.

To get over this, I made a lousy hack : set m_iCurrentSong to iSong after application.PlayFile. Xbmc no longer crashes for me.

I'll now move to the next issue (ERROR: Error on dvdnav_open).
Okay, I got it.
From libdvdnav/src/dvdread/dvd_reader.c :

Code:
/**
     * let's just give it a try to open the path directly
     * should fail if this is really a standard folder
     */
    auth_drive = DVDOpenImageFile( path, have_css );

In my case, this does not fail with a standard folder. So, dvd->isImageFile is set to 1 and everything gets screwed thereafter.
If I force auth_drive to null, then DVDOpenPath gets called later on, and the DVD plays.

That's all.
Oh, about the trac : forgive me, but I don't feel like writing everything again. I've already followed a set of guidelines on submiting a but report, so I don't feel like following another (longer and generic, btw).

If no one else is experiencing this problem (playing DVDs from a path on disk), then perhaps the problem doesn't exist (except on my system). If not, sooner or later someone will create the proper trac.
Thanx for tracking it down. I assume you are playing from local disk, that would probably explain it. I only tested over smb:// network. Will ponder how to solve your issue.
elupus Wrote:I assume you are playing from local disk, that would probably explain it.

Yes, I am playing from local disk.
Thanks.