Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Segmentation fault when addon returns plugin URL for tvshow/season #67

Open
1 of 7 tasks
flubshi opened this issue Apr 12, 2020 · 1 comment
Open
1 of 7 tasks

Comments

@flubshi
Copy link

flubshi commented Apr 12, 2020

Bug report

When a media importer plugin sets the ListItem path for a tvshow or season to plugin:// Kodi crashes.

Describe the bug

Here is a clear and concise description of what the problem is:

During creating a media importer plugin I have set a plugin://-URL as ListItem path for a TvShow/Season. When running the media import/sync, Kodi crashes. I fixed it for my plugin, by setting path=None. However, Kodi should not crash in this case.
If you need more information, please tell me what you need.

Expected Behavior

Here is a clear and concise description of what was expected to happen:

If an invalid URL is set, Kodi should not crash.

Actual Behavior

Kodi crashes.

Possible Fix

To Reproduce

Steps to reproduce the behavior:

  1. In media importer addon modify execImport
  2. On MediaTypeTvShow and MediaTypeSeason modify Listitem
  3. item = xbmcgui.ListItem(label=title, path='plugin://asdasdasdddd.ed/bla.png"')
  4. Start Kodi
  5. Add TvShows as Media source
  6. Kodi crashes on import

Debuglog

The debuglog can be found here:

Thread 21 "JobWorker" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fff8ffff700 (LWP 247061)]
0x00005555577d0afa in CURL::Parse (this=0x0, strURL1=<error reading variable: Cannot access memory at address 0x8>) at /home/<username>/kodi_dev/xbmc/xbmc/URL.cpp:48
48	{
#0  0x00005555577d0afa in CURL::Parse (this=0x0, strURL1=<error reading variable: Cannot access memory at address 0x8>) at /home/<username>/kodi_dev/xbmc/xbmc/URL.cpp:48
#1  0x0000555556b8e22d in CURL::CURL (this=0x7fff8f800600, strURL="plugin://asdasdasdddd.ed/bla.png") at /home/<username>/kodi_dev/xbmc/xbmc/URL.h:25
#2  0x000055555729eae0 in URIUtils::SubstitutePath (url=..., reverse=false) at /home/<username>/kodi_dev/xbmc/xbmc/utils/URIUtils.cpp:497
#3  0x0000555557ea955b in XFILE::CFile::Stat (file=..., buffer=0x7fff8fffdc00) at /home/<username>/kodi_dev/xbmc/xbmc/filesystem/File.cpp:525
#4  0x0000555557ea94ab in XFILE::CFile::Stat (strFileName="plugin://asdasdasdddd.ed/bla.png", buffer=0x7fff8fffdc00) at /home/<username>/kodi_dev/xbmc/xbmc/filesystem/File.cpp:517
#5  0x0000555557ec4aa6 in XFILE::COverrideFile::Stat (this=0x7fff842999c0, url=..., buffer=0x7fff8fffdc00) at /home/<username>/kodi_dev/xbmc/xbmc/filesystem/OverrideFile.cpp:66

[...]

#10687 0x0000555557ea94ab in XFILE::CFile::Stat (strFileName="plugin://asdasdasdddd.ed/bla.png", buffer=0x7fff8fffdc00) at /home/<username>/kodi_dev/xbmc/xbmc/filesystem/File.cpp:517
#10688 0x0000555557079a8e in CVideoDatabase::AddPathToTvShow (this=0x7fff84000f10, idShow=2, path="plugin://asdasdasdddd.ed/bla.png", parentPath="plugin://plugin.video.waipu.tv", dateAdded=...) at /home/<username>/kodi_dev/xbmc/xbmc/video/VideoDatabase.cpp:1602
#10689 0x000055555708644e in CVideoDatabase::SetDetailsForTvShow (this=0x7fff84000f10, paths=std::vector of length 1, capacity 1 = {...}, details=..., artwork=std::map with 0 elements, seasonArt=std::map with 0 elements, idTvShow=2) at /home/<username>/kodi_dev/xbmc/xbmc/video/VideoDatabase.cpp:2967
#10690 0x0000555557cb7ff9 in CTvShowImportHandler::AddImportedItem (this=0x7fff84000f00, import=..., item=0x7fff6049a5f0) at /home/<username>/kodi_dev/xbmc/xbmc/media/import/handlers/TvShowImportHandler.cpp:114
#10691 0x0000555557c8ed6e in CMediaImportSynchronisationTask::DoWork (this=0x7fff8404d8e0) at /home/<username>/kodi_dev/xbmc/xbmc/media/import/jobs/tasks/MediaImportSynchronisationTask.cpp:69
#10692 0x0000555557c92e29 in CMediaImportTaskProcessorJob::ProcessTask (this=0x7fff68005c40, task=0x7fff8404d8e0) at /home/<username>/kodi_dev/xbmc/xbmc/media/import/jobs/MediaImportTaskProcessorJob.cpp:389
#10693 0x0000555557c93c50 in CMediaImportTaskProcessorJob::ProcessSynchronisationTasks (this=0x7fff68005c40) at /home/<username>/kodi_dev/xbmc/xbmc/media/import/jobs/MediaImportTaskProcessorJob.cpp:525
#10694 0x0000555557c92cb1 in CMediaImportTaskProcessorJob::ProcessTask (this=0x7fff68005c40) at /home/<username>/kodi_dev/xbmc/xbmc/media/import/jobs/MediaImportTaskProcessorJob.cpp:350
#10695 0x0000555557c92d43 in CMediaImportTaskProcessorJob::ProcessTask (this=0x7fff68005c40) at /home/<username>/kodi_dev/xbmc/xbmc/media/import/jobs/MediaImportTaskProcessorJob.cpp:370
#10696 0x0000555557c92d43 in CMediaImportTaskProcessorJob::ProcessTask (this=0x7fff68005c40) at /home/<username>/kodi_dev/xbmc/xbmc/media/import/jobs/MediaImportTaskProcessorJob.cpp:370
#10697 0x0000555557c92d43 in CMediaImportTaskProcessorJob::ProcessTask (this=0x7fff68005c40) at /home/<username>/kodi_dev/xbmc/xbmc/media/import/jobs/MediaImportTaskProcessorJob.cpp:370
#10698 0x0000555557c928d2 in CMediaImportTaskProcessorJob::DoWork (this=0x7fff68005c40) at /home/<username>/kodi_dev/xbmc/xbmc/media/import/jobs/MediaImportTaskProcessorJob.cpp:271
#10699 0x0000555557212cab in CJobWorker::Process (this=0x55555a297170) at /home/<username>/kodi_dev/xbmc/xbmc/utils/JobManager.cpp:55
#10700 0x00005555572c4631 in CThread::Action (this=0x55555a297170) at /home/<username>/kodi_dev/xbmc/xbmc/threads/Thread.cpp:282
#10701 0x00005555572c3c83 in CThread::<lambda(CThread*, std::promise<bool>)>::operator()(CThread *, std::promise<bool>) const (__closure=0x55555a334368, pThread=0x55555a297170, promise=...) at /home/<username>/kodi_dev/xbmc/xbmc/threads/Thread.cpp:140
#10702 0x00005555572c5044 in std::__invoke_impl<void, CThread::Create(bool)::<lambda(CThread*, std::promise<bool>)>, CThread*, std::promise<bool> >(std::__invoke_other, CThread::<lambda(CThread*, std::promise<bool>)> &&) (__f=...) at /usr/include/c++/9.3.0/bits/invoke.h:60
#10703 0x00005555572c4f5b in std::__invoke<CThread::Create(bool)::<lambda(CThread*, std::promise<bool>)>, CThread*, std::promise<bool> >(CThread::<lambda(CThread*, std::promise<bool>)> &&) (__fn=...) at /usr/include/c++/9.3.0/bits/invoke.h:95
#10704 0x00005555572c4e7f in std::thread::_Invoker<std::tuple<CThread::Create(bool)::<lambda(CThread*, std::promise<bool>)>, CThread*, std::promise<bool> > >::_M_invoke<0, 1, 2>(std::_Index_tuple<0, 1, 2>) (this=0x55555a334368) at /usr/include/c++/9.3.0/thread:244
#10705 0x00005555572c4e09 in std::thread::_Invoker<std::tuple<CThread::Create(bool)::<lambda(CThread*, std::promise<bool>)>, CThread*, std::promise<bool> > >::operator()(void) (this=0x55555a334368) at /usr/include/c++/9.3.0/thread:251
#10706 0x00005555572c4dde in std::thread::_State_impl<std::thread::_Invoker<std::tuple<CThread::Create(bool)::<lambda(CThread*, std::promise<bool>)>, CThread*, std::promise<bool> > > >::_M_run(void) (this=0x55555a334360) at /usr/include/c++/9.3.0/thread:195
#10707 0x00007ffff45b6b24 in std::execute_native_thread_routine (__p=0x55555a334360) at /build/gcc/src/gcc/libstdc++-v3/src/c++11/thread.cc:80
#10708 0x00007ffff7f7846f in start_thread () from /usr/lib/libpthread.so.0
#10709 0x00007ffff47d13d3 in clone () from /usr/lib/libc.so.6

Screenshots

Here are some links or screenshots to help explain the problem:

Additional context or screenshots (if appropriate)

Your Environment

Used Operating system:

  • Android

  • iOS

  • Linux

  • OSX

  • Raspberry-Pi

  • Windows

  • Windows UWP

  • Operating system version/name: Arch Linux

  • Kodi version: montellese/media_import_rebase_20200411

note: Once the issue is made we require you to update it with new information or Kodi versions should that be required.
Team Kodi will consider your problem report however, we will not make any promises the problem will be solved.

@Montellese
Copy link
Owner

In the description you write

item = xbmcgui.ListItem(label=title, path='plugin://asdasdasdddd.ed/bla.png"')

Was the " at the end of the URL also part of the path or is it a typo in the description?

I tried this by modifying mediaimporter.emby to set a plugin://mediaimporter.emby/<id> path for tvshows and everything worked fine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants