medialibrary issueshttps://code.videolan.org/videolan/medialibrary/-/issues2021-03-16T14:18:00Zhttps://code.videolan.org/videolan/medialibrary/-/issues/306Thumbs not generated for network audio media2021-03-16T14:18:00ZNicolas PomepuyThumbs not generated for network audio mediaWhen using the [taglib backport on Android](https://code.videolan.org/videolan/vlc-android/-/merge_requests/927), the thumbnails are not generated for network audio medias.
Logs during parsing (for one file):
```
2021-03-15 10:23:07.54...When using the [taglib backport on Android](https://code.videolan.org/videolan/vlc-android/-/merge_requests/927), the thumbnails are not generated for network audio medias.
Logs during parsing (for one file):
```
2021-03-15 10:23:07.540 27037-27430/org.videolan.vlc.debug D/VLC/medialibrary: [T#513542991024] ../src/parser/ParserWorker.cpp:247 mainloop Done executing VLC task on smb://AZABUNTU/Anonymous/audio/generated/1min%20%287e%20copie%29.mp3 in 139ms. Result: 1
2021-03-15 10:23:07.545 27037-27430/org.videolan.vlc.debug D/VLC/medialibrary: [T#513542991024] ../src/parser/ParserWorker.cpp:204 mainloop [VLC] has 68 tasks remaining
2021-03-15 10:23:07.545 27037-27446/org.videolan.vlc.debug D/VLC/medialibrary: [T#513997454512] ../src/parser/ParserWorker.cpp:197 mainloop Resuming ParserService [Metadata] mainloop
2021-03-15 10:23:07.545 27037-27430/org.videolan.vlc.debug D/VLC/medialibrary: [T#513542991024] ../src/parser/ParserWorker.cpp:225 mainloop Executing VLC task on smb://AZABUNTU/Anonymous/audio/generated/1min%20%288e%20copie%29.mp3
2021-03-15 10:23:07.545 27037-27446/org.videolan.vlc.debug D/VLC/medialibrary: [T#513997454512] ../src/parser/ParserWorker.cpp:204 mainloop [Metadata] has 1 tasks remaining
2021-03-15 10:23:07.545 27037-27446/org.videolan.vlc.debug D/VLC/medialibrary: [T#513997454512] ../src/parser/ParserWorker.cpp:225 mainloop Executing Metadata task on smb://AZABUNTU/Anonymous/audio/generated/1min%20%287e%20copie%29.mp3
2021-03-15 10:23:07.555 27037-27446/org.videolan.vlc.debug D/VLC/medialibrary: [T#513997454512] ../src/metadata_services/MetadataParser.cpp:551 createFileAndMedia Adding smb://AZABUNTU/Anonymous/audio/generated/1min%20%287e%20copie%29.mp3
2021-03-15 10:23:07.567 27037-27446/org.videolan.vlc.debug D/VLC/medialibrary: [T#513997454512] ../src/parser/ParserWorker.cpp:247 mainloop Done executing Metadata task on smb://AZABUNTU/Anonymous/audio/generated/1min%20%287e%20copie%29.mp3 in 21ms. Result: 1
2021-03-15 10:23:07.571 27037-27446/org.videolan.vlc.debug D/VLC/medialibrary: [T#513997454512] ../src/parser/Parser.cpp:171 updateStats Updating progress: 39
2021-03-15 10:23:07.571 27037-27446/org.videolan.vlc.debug V/VLC/MediaParsingService: onParsingStatsUpdated: 39
2021-03-15 10:23:07.572 27037-27446/org.videolan.vlc.debug D/VLC/medialibrary: [T#513997454512] ../src/parser/ParserWorker.cpp:190 mainloop Halting ParserService [Metadata] mainloop
2021-03-15 10:23:07.655 27037-27972/org.videolan.vlc.debug E/VLC: [0000007908196560/6d44] libvlc stream: unimplemented query (264) in control
```
No file are created under `/sdcard/Android/data/org.videolan.vlc.debug/files/medialib/thumbnails` except one for a m4a file.
The audio page query sends media with null for the `artworkMrl` field.https://code.videolan.org/videolan/medialibrary/-/issues/304Presence normalization for media containers2021-03-16T10:06:49ZNicolas PomepuyPresence normalization for media containersThe same accessing methods (as the one used by `MediaGroup`: `nbTotalMedia()` and `nbPresentMedia()`) should be used for all abjects representing a group of medias:
- Folder
- Album
- Artist
- GenreThe same accessing methods (as the one used by `MediaGroup`: `nbTotalMedia()` and `nbPresentMedia()`) should be used for all abjects representing a group of medias:
- Folder
- Album
- Artist
- GenreHugo Beauzée-LuyssenHugo Beauzée-Luyssenhttps://code.videolan.org/videolan/medialibrary/-/issues/295Share the same vlc instance between the apps and the ML2021-03-16T09:55:17ZNicolas PomepuyShare the same vlc instance between the apps and the MLNeeded to share network credentials between the app and the ML.Needed to share network credentials between the app and the ML.Hugo Beauzée-LuyssenHugo Beauzée-Luyssenhttps://code.videolan.org/videolan/medialibrary/-/issues/292Allow missing media to be listed2021-02-22T09:18:33ZHugo Beauzée-LuyssenAllow missing media to be listedWe need to allow the application to fetch missing media, when their removable or network drive is not mounted.We need to allow the application to fetch missing media, when their removable or network drive is not mounted.Hugo Beauzée-LuyssenHugo Beauzée-Luyssenhttps://code.videolan.org/videolan/medialibrary/-/issues/86Add VLC_ML_EVENT_ENTRY_POINT_ADDED event2021-02-19T14:47:00ZFelix Paul Kühnefkuehne@videolan.orgAdd VLC_ML_EVENT_ENTRY_POINT_ADDED eventSo far, there are events for entry points being banned, unbanned and removed, but there is no if one was actually added.So far, there are events for entry points being banned, unbanned and removed, but there is no if one was actually added.Hugo Beauzée-LuyssenHugo Beauzée-Luyssenhttps://code.videolan.org/videolan/medialibrary/-/issues/291Android crash2021-02-01T14:11:59ZNicolas PomepuyAndroid crashCrash on Android:
[Debug symbols](https://code.videolan.org/videolan/vlc-android/-/tags/libvlc-3.3.13)
```
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> org.videolan.vlc <<<
backtrace:
#00 pc 00...Crash on Android:
[Debug symbols](https://code.videolan.org/videolan/vlc-android/-/tags/libvlc-3.3.13)
```
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> org.videolan.vlc <<<
backtrace:
#00 pc 000000000006b518 /system/lib64/libc.so (tgkill+8)
#00 pc 000000000006899c /system/lib64/libc.so (pthread_kill+64)
#00 pc 0000000000023ee8 /system/lib64/libc.so (raise+24)
#00 pc 000000000001c96c /system/lib64/libc.so (abort+52)
#00 pc 000000000009e8e8 /data/app/org.videolan.vlc-1/lib/arm64/libc++_shared.so
#00 pc 000000000009eadc /data/app/org.videolan.vlc-1/lib/arm64/libc++_shared.so
#00 pc 00000000000b0530 /data/app/org.videolan.vlc-1/lib/arm64/libc++_shared.so
#00 pc 00000000000afe38 /data/app/org.videolan.vlc-1/lib/arm64/libc++_shared.so (__cxa_rethrow+196)
#00 pc 000000000022d928 /data/app/org.videolan.vlc-1/lib/arm64/libmla.so (bool medialibrary::sqlite::Tools::executeDelete<bool&, long&>(medialibrary::sqlite::Connection*, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, bool&, long&)+460)
#00 pc 0000000000229a7c /data/app/org.videolan.vlc-1/lib/arm64/libmla.so (medialibrary::Device::setPresent(bool)+96)
#00 pc 000000000012bd9c /data/app/org.videolan.vlc-1/lib/arm64/libmla.so (medialibrary::MediaLibrary::FsFactoryCb::onDeviceMounted(medialibrary::fs::IDevice const&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&)+468)
#00 pc 00000000001faeac /data/app/org.videolan.vlc-1/lib/arm64/libmla.so (medialibrary::fs::libvlc::FileSystemFactory::onDeviceMounted(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, bool)+724)
#00 pc 00000000000fe774 /data/app/org.videolan.vlc-1/lib/arm64/libmla.so (AndroidDeviceLister::refresh()+192)
#00 pc 000000000012ab7c /data/app/org.videolan.vlc-1/lib/arm64/libmla.so (medialibrary::MediaLibrary::startFsFactoriesAndRefresh()+156)
#00 pc 000000000017e254 /data/app/org.videolan.vlc-1/lib/arm64/libmla.so (medialibrary::DiscovererWorker::run()+220)
#00 pc 0000000000180f28 /data/app/org.videolan.vlc-1/lib/arm64/libmla.so (void* std::__ndk1::__thread_proxy<std::__ndk1::tuple<std::__ndk1::unique_ptr<std::__ndk1::__thread_struct, std::__ndk1::default_delete<std::__ndk1::__thread_struct> >, void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*> >(void*)+64)
#00 pc 00000000000681a4 /system/lib64/libc.so (__pthread_start(void*)+196)
#00 pc 000000000001db80 /system/lib64/libc.so (__start_thread+16)
```https://code.videolan.org/videolan/medialibrary/-/issues/280Crash Android2021-02-01T14:11:48ZNicolas PomepuyCrash AndroidCrash on 3.3.3 beta 2
libvlc [3.3.10](https://code.videolan.org/videolan/vlc-android/-/tags/libvlc-3.3.10)
```
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> org.videolan.vlc <<<
backtrace:
#00 p...Crash on 3.3.3 beta 2
libvlc [3.3.10](https://code.videolan.org/videolan/vlc-android/-/tags/libvlc-3.3.10)
```
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> org.videolan.vlc <<<
backtrace:
#00 pc 00000000000222ec /system/lib64/libc.so (abort+116)
#00 pc 000000000009e8e8 /data/app/org.videolan.vlc-x6noW2bV_EKqNXSG7TaSbw==/lib/arm64/libc++_shared.so
#00 pc 000000000009eadc /data/app/org.videolan.vlc-x6noW2bV_EKqNXSG7TaSbw==/lib/arm64/libc++_shared.so
#00 pc 00000000000b0530 /data/app/org.videolan.vlc-x6noW2bV_EKqNXSG7TaSbw==/lib/arm64/libc++_shared.so
#00 pc 00000000000afb5c /data/app/org.videolan.vlc-x6noW2bV_EKqNXSG7TaSbw==/lib/arm64/libc++_shared.so
#00 pc 00000000000afab8 /data/app/org.videolan.vlc-x6noW2bV_EKqNXSG7TaSbw==/lib/arm64/libc++_shared.so (__cxa_throw+112)
#00 pc 00000000001cfde0 /data/app/org.videolan.vlc-x6noW2bV_EKqNXSG7TaSbw==/lib/arm64/libmla.so (medialibrary::utils::url::scheme(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&)+240)
#00 pc 0000000000231870 /data/app/org.videolan.vlc-x6noW2bV_EKqNXSG7TaSbw==/lib/arm64/libmla.so (medialibrary::File::fromExternalMrl(medialibrary::MediaLibrary const*, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&)+56)
#00 pc 000000000010b1d0 /data/app/org.videolan.vlc-x6noW2bV_EKqNXSG7TaSbw==/lib/arm64/libmla.so (medialibrary::MediaLibrary::media(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&) const+224)
#00 pc 00000000000ec970 /data/app/org.videolan.vlc-x6noW2bV_EKqNXSG7TaSbw==/lib/arm64/libmla.so (getMediaFromMrl(_JNIEnv*, _jobject*, _jstring*)+156)
#00 pc 000000000003b7d8 /data/app/org.videolan.vlc-x6noW2bV_EKqNXSG7TaSbw==/oat/arm64/base.odex (offset 0x3a000) (org.videolan.medialibrary.MedialibraryImpl.nativeCreateGroup [DEDUPED]+152)
#00 pc 0000000000558f88 /system/lib64/libart.so (art_quick_invoke_stub+584)
#00 pc 00000000000cfcc8 /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
#00 pc 00000000002806c0 /system/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+344)
#00 pc 000000000027a6c8 /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+968)
#00 pc 00000000005291cc /system/lib64/libart.so (MterpInvokeDirect+296)
#00 pc 000000000054b614 /system/lib64/libart.so (ExecuteMterpImpl+14484)
#00 pc 0000000000a7f694 /data/app/org.videolan.vlc-x6noW2bV_EKqNXSG7TaSbw==/oat/arm64/base.vdex (org.videolan.medialibrary.MedialibraryImpl.getMedia+64)
#00 pc 000000000025431c /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3139158810)+488)
#00 pc 0000000000259e10 /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
#00 pc 000000000027a6ac /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+940)
#00 pc 000000000052aed0 /system/lib64/libart.so (MterpInvokeVirtualQuick+584)
#00 pc 000000000054f294 /system/lib64/libart.so (ExecuteMterpImpl+29972)
#00 pc 0000000000a7f5c4 /data/app/org.videolan.vlc-x6noW2bV_EKqNXSG7TaSbw==/oat/arm64/base.vdex (org.videolan.medialibrary.MedialibraryImpl.findMedia+40)
#00 pc 000000000025431c /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3139158810)+488)
#00 pc 0000000000259e10 /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
#00 pc 000000000027a6ac /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+940)
#00 pc 000000000052aed0 /system/lib64/libart.so (MterpInvokeVirtualQuick+584)
#00 pc 000000000054f294 /system/lib64/libart.so (ExecuteMterpImpl+29972)
#00 pc 0000000000ba4cbe /data/app/org.videolan.vlc-x6noW2bV_EKqNXSG7TaSbw==/oat/arm64/base.vdex (org.videolan.vlc.util.KextensionsKt.updateWithMLMeta+74)
#00 pc 000000000025431c /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3139158810)+488)
#00 pc 0000000000259e10 /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
#00 pc 000000000027a6ac /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+940)
#00 pc 0000000000529390 /system/lib64/libart.so (MterpInvokeStatic+204)
#00 pc 000000000054b694 /system/lib64/libart.so (ExecuteMterpImpl+14612)
#00 pc 0000000000b8e7ac /data/app/org.videolan.vlc-x6noW2bV_EKqNXSG7TaSbw==/oat/arm64/base.vdex (org.videolan.vlc.media.PlaylistManager$load$2.invokeSuspend+36)
#00 pc 000000000025431c /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3139158810)+488)
#00 pc 0000000000518720 /system/lib64/libart.so (artQuickToInterpreterBridge+1020)
#00 pc 00000000005620fc /system/lib64/libart.so (art_quick_to_interpreter_bridge+92)
#00 pc 00000000000598a4 /dev/ashmem/dalvik-jit-code-cache_28568_28568 (deleted)
```Hugo Beauzée-LuyssenHugo Beauzée-Luyssenhttps://code.videolan.org/videolan/medialibrary/-/issues/258Use after free during discovery2021-01-27T14:07:51ZHugo Beauzée-LuyssenUse after free during discoveryHappened after removing a device during the discovery, but I haven't managed to reproduce it so it's very likely to be an edge case somewhere in VLC's background worker
```
================================================================...Happened after removing a device during the discovery, but I haven't managed to reproduce it so it's very likely to be an edge case somewhere in VLC's background worker
```
=================================================================
==13400==ERROR: AddressSanitizer: heap-use-after-free on address 0x60e000005214 at pc 0x7f13df28d410 bp 0x7f13d9b087f0 sp 0x7f13d9b087e8
READ of size 4 at 0x60e000005214 thread T4
#0 0x7f13df28d40f in vlc_mutex_trylock ../../src/misc/threads.c:188
#1 0x7f13df28cf54 in vlc_mutex_lock ../../src/misc/threads.c:168
#2 0x7f13dfb5f874 in send_parsed_changed ../../lib/media.c:273
#3 0x7f13dfb5ff2b in input_item_preparse_ended ../../lib/media.c:342
#4 0x7f13defff0d3 in PreparserCloseInput ../../src/preparser/preparser.c:220
#5 0x7f13df257f93 in Thread ../../src/misc/background_worker.c:254
#6 0x7f13dfddefa2 in start_thread /build/glibc-vjB4T1/glibc-2.28/nptl/pthread_create.c:486
#7 0x7f13dfd0f4ce in clone (/usr/lib/x86_64-linux-gnu/libc.so.6+0xf94ce)
0x60e000005214 is located 116 bytes inside of 152-byte region [0x60e0000051a0,0x60e000005238)
freed by thread T2 here:
#0 0x7f13e6878fb0 in __interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xe8fb0)
#1 0x7f13dfb61486 in libvlc_media_release ../../lib/media.c:570
#2 0x7f13e3b91ae2 in std::_Sp_counted_deleter<libvlc_media_t*, void (*)(libvlc_media_t*), std::allocator<void>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/include/c++/8/bits/shared_ptr_base.h:471
#3 0x7f13e317a287 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/8/bits/shared_ptr_base.h:155
#4 0x7f13e316e75e in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() /usr/include/c++/8/bits/shared_ptr_base.h:728
#5 0x7f13e3b778e2 in std::__shared_ptr<libvlc_media_t, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() /usr/include/c++/8/bits/shared_ptr_base.h:1167
#6 0x7f13e3b7796f in std::shared_ptr<libvlc_media_t>::~shared_ptr() /usr/include/c++/8/bits/shared_ptr.h:103
#7 0x7f13e3b779fd in VLC::Internal<libvlc_media_t, void (*)(libvlc_media_t*)>::~Internal() /home/chouquette/dev/prefix/include/vlcpp/Internal.hpp:40
#8 0x7f13e3b781bc in VLC::Media::~Media() /home/chouquette/dev/prefix/include/vlcpp/Media.hpp:39
#9 0x7f13e3bed3b0 in medialibrary::fs::NetworkDirectory::read() const ../src/filesystem/network/Directory.cpp:63
#10 0x7f13e3813177 in medialibrary::fs::CommonDirectory::files() const ../src/filesystem/common/CommonDirectory.cpp:47
#11 0x7f13e3550ccb in medialibrary::prober::CrawlerProbe::hasDotNoMediaFile(medialibrary::fs::IDirectory const&) ../src/discoverer/probe/CrawlerProbe.h:97
#12 0x7f13e35501b2 in medialibrary::prober::CrawlerProbe::isHidden(medialibrary::fs::IDirectory const&) ../src/discoverer/probe/CrawlerProbe.h:53
#13 0x7f13e3778506 in medialibrary::FsDiscoverer::checkFolder(std::shared_ptr<medialibrary::fs::IDirectory>, std::shared_ptr<medialibrary::Folder>, medialibrary::IInterruptProbe const&, medialibrary::fs::IFileSystemFactory&, bool) const ../src/discoverer/FsDiscoverer.cpp:308
#14 0x7f13e37853b1 in medialibrary::FsDiscoverer::addFolder(std::shared_ptr<medialibrary::fs::IDirectory>, medialibrary::Folder*, medialibrary::IInterruptProbe const&, medialibrary::fs::IFileSystemFactory&) const ../src/discoverer/FsDiscoverer.cpp:495
#15 0x7f13e37786b7 in medialibrary::FsDiscoverer::checkFolder(std::shared_ptr<medialibrary::fs::IDirectory>, std::shared_ptr<medialibrary::Folder>, medialibrary::IInterruptProbe const&, medialibrary::fs::IFileSystemFactory&, bool) const ../src/discoverer/FsDiscoverer.cpp:310
#16 0x7f13e37853b1 in medialibrary::FsDiscoverer::addFolder(std::shared_ptr<medialibrary::fs::IDirectory>, medialibrary::Folder*, medialibrary::IInterruptProbe const&, medialibrary::fs::IFileSystemFactory&) const ../src/discoverer/FsDiscoverer.cpp:495
#17 0x7f13e376d574 in medialibrary::FsDiscoverer::discover(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, medialibrary::IInterruptProbe const&) ../src/discoverer/FsDiscoverer.cpp:95
#18 0x7f13e373e761 in medialibrary::DiscovererWorker::runDiscover(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ../src/discoverer/DiscovererWorker.cpp:559
#19 0x7f13e37370cb in medialibrary::DiscovererWorker::run() ../src/discoverer/DiscovererWorker.cpp:390
#20 0x7f13e37467cb in void std::__invoke_impl<void, void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*>(std::__invoke_memfun_deref, void (medialibrary::DiscovererWorker::*&&)(), medialibrary::DiscovererWorker*&&) /usr/include/c++/8/bits/invoke.h:73
#21 0x7f13e3741b49 in std::__invoke_result<void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*>::type std::__invoke<void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*>(void (medialibrary::DiscovererWorker::*&&)(), medialibrary::DiscovererWorker*&&) /usr/include/c++/8/bits/invoke.h:95
#22 0x7f13e376b721 in decltype (__invoke((_S_declval<0ul>)(), (_S_declval<1ul>)())) std::thread::_Invoker<std::tuple<void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) /usr/include/c++/8/thread:244
#23 0x7f13e376b573 in std::thread::_Invoker<std::tuple<void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*> >::operator()() /usr/include/c++/8/thread:253
#24 0x7f13e376b4b2 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*> > >::_M_run() /usr/include/c++/8/thread:196
#25 0x7f13e0b74b2e (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xbbb2e)
previously allocated by thread T2 here:
#0 0x7f13e6879518 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xe9518)
#1 0x7f13dfb602fc in libvlc_media_new_from_input_item ../../lib/media.c:395
#2 0x7f13dfb607cc in libvlc_media_new_location ../../lib/media.c:441
#3 0x7f13e3b77d8a in VLC::Media::Media(VLC::Instance&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, VLC::Media::FromType) /home/chouquette/dev/prefix/include/vlcpp/Media.hpp:151
#4 0x7f13e3bec052 in medialibrary::fs::NetworkDirectory::read() const ../src/filesystem/network/Directory.cpp:63
#5 0x7f13e3813177 in medialibrary::fs::CommonDirectory::files() const ../src/filesystem/common/CommonDirectory.cpp:47
#6 0x7f13e3550ccb in medialibrary::prober::CrawlerProbe::hasDotNoMediaFile(medialibrary::fs::IDirectory const&) ../src/discoverer/probe/CrawlerProbe.h:97
#7 0x7f13e35501b2 in medialibrary::prober::CrawlerProbe::isHidden(medialibrary::fs::IDirectory const&) ../src/discoverer/probe/CrawlerProbe.h:53
#8 0x7f13e3778506 in medialibrary::FsDiscoverer::checkFolder(std::shared_ptr<medialibrary::fs::IDirectory>, std::shared_ptr<medialibrary::Folder>, medialibrary::IInterruptProbe const&, medialibrary::fs::IFileSystemFactory&, bool) const ../src/discoverer/FsDiscoverer.cpp:308
#9 0x7f13e37853b1 in medialibrary::FsDiscoverer::addFolder(std::shared_ptr<medialibrary::fs::IDirectory>, medialibrary::Folder*, medialibrary::IInterruptProbe const&, medialibrary::fs::IFileSystemFactory&) const ../src/discoverer/FsDiscoverer.cpp:495
#10 0x7f13e37786b7 in medialibrary::FsDiscoverer::checkFolder(std::shared_ptr<medialibrary::fs::IDirectory>, std::shared_ptr<medialibrary::Folder>, medialibrary::IInterruptProbe const&, medialibrary::fs::IFileSystemFactory&, bool) const ../src/discoverer/FsDiscoverer.cpp:310
#11 0x7f13e37853b1 in medialibrary::FsDiscoverer::addFolder(std::shared_ptr<medialibrary::fs::IDirectory>, medialibrary::Folder*, medialibrary::IInterruptProbe const&, medialibrary::fs::IFileSystemFactory&) const ../src/discoverer/FsDiscoverer.cpp:495
#12 0x7f13e376d574 in medialibrary::FsDiscoverer::discover(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, medialibrary::IInterruptProbe const&) ../src/discoverer/FsDiscoverer.cpp:95
#13 0x7f13e373e761 in medialibrary::DiscovererWorker::runDiscover(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ../src/discoverer/DiscovererWorker.cpp:559
#14 0x7f13e37370cb in medialibrary::DiscovererWorker::run() ../src/discoverer/DiscovererWorker.cpp:390
#15 0x7f13e37467cb in void std::__invoke_impl<void, void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*>(std::__invoke_memfun_deref, void (medialibrary::DiscovererWorker::*&&)(), medialibrary::DiscovererWorker*&&) /usr/include/c++/8/bits/invoke.h:73
#16 0x7f13e3741b49 in std::__invoke_result<void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*>::type std::__invoke<void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*>(void (medialibrary::DiscovererWorker::*&&)(), medialibrary::DiscovererWorker*&&) /usr/include/c++/8/bits/invoke.h:95
#17 0x7f13e376b721 in decltype (__invoke((_S_declval<0ul>)(), (_S_declval<1ul>)())) std::thread::_Invoker<std::tuple<void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) /usr/include/c++/8/thread:244
#18 0x7f13e376b573 in std::thread::_Invoker<std::tuple<void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*> >::operator()() /usr/include/c++/8/thread:253
#19 0x7f13e376b4b2 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*> > >::_M_run() /usr/include/c++/8/thread:196
#20 0x7f13e0b74b2e (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xbbb2e)
Thread T4 created by T2 here:
#0 0x7f13e67e0db0 in __interceptor_pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x50db0)
#1 0x7f13df2ee369 in vlc_clone_attr ../../src/posix/thread.c:208
#2 0x7f13df2ee827 in vlc_clone_detach ../../src/posix/thread.c:271
#3 0x7f13df258102 in SpawnThread ../../src/misc/background_worker.c:274
#4 0x7f13df258640 in background_worker_Push ../../src/misc/background_worker.c:302
#5 0x7f13deffff87 in input_preparser_Push ../../src/preparser/preparser.c:293
#6 0x7f13def5e32f in vlc_MetadataRequest ../../src/libvlc.c:464
#7 0x7f13def5e5ef in libvlc_MetadataRequest ../../src/libvlc.c:491
#8 0x7f13dfb63857 in media_parse ../../lib/media.c:769
#9 0x7f13dfb63af3 in libvlc_media_parse_with_options ../../lib/media.c:808
#10 0x7f13e3ba15b1 in VLC::Media::parseWithOptions(VLC::Media::ParseFlags, int) /home/chouquette/dev/prefix/include/vlcpp/Media.hpp:609
#11 0x7f13e3bec2ea in medialibrary::fs::NetworkDirectory::read() const ../src/filesystem/network/Directory.cpp:78
#12 0x7f13e3813177 in medialibrary::fs::CommonDirectory::files() const ../src/filesystem/common/CommonDirectory.cpp:47
#13 0x7f13e3550ccb in medialibrary::prober::CrawlerProbe::hasDotNoMediaFile(medialibrary::fs::IDirectory const&) ../src/discoverer/probe/CrawlerProbe.h:97
#14 0x7f13e35501b2 in medialibrary::prober::CrawlerProbe::isHidden(medialibrary::fs::IDirectory const&) ../src/discoverer/probe/CrawlerProbe.h:53
#15 0x7f13e376d051 in medialibrary::FsDiscoverer::discover(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, medialibrary::IInterruptProbe const&) ../src/discoverer/FsDiscoverer.cpp:91
#16 0x7f13e373e761 in medialibrary::DiscovererWorker::runDiscover(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ../src/discoverer/DiscovererWorker.cpp:559
#17 0x7f13e37370cb in medialibrary::DiscovererWorker::run() ../src/discoverer/DiscovererWorker.cpp:390
#18 0x7f13e37467cb in void std::__invoke_impl<void, void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*>(std::__invoke_memfun_deref, void (medialibrary::DiscovererWorker::*&&)(), medialibrary::DiscovererWorker*&&) /usr/include/c++/8/bits/invoke.h:73
#19 0x7f13e3741b49 in std::__invoke_result<void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*>::type std::__invoke<void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*>(void (medialibrary::DiscovererWorker::*&&)(), medialibrary::DiscovererWorker*&&) /usr/include/c++/8/bits/invoke.h:95
#20 0x7f13e376b721 in decltype (__invoke((_S_declval<0ul>)(), (_S_declval<1ul>)())) std::thread::_Invoker<std::tuple<void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) /usr/include/c++/8/thread:244
#21 0x7f13e376b573 in std::thread::_Invoker<std::tuple<void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*> >::operator()() /usr/include/c++/8/thread:253
#22 0x7f13e376b4b2 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (medialibrary::DiscovererWorker::*)(), medialibrary::DiscovererWorker*> > >::_M_run() /usr/include/c++/8/thread:196
#23 0x7f13e0b74b2e (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xbbb2e)
Thread T2 created by T0 here:
#0 0x7f13e67e0db0 in __interceptor_pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x50db0)
#1 0x7f13e0b74db4 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xbbdb4)
#2 0x7f13e372ec9d in medialibrary::DiscovererWorker::DiscovererWorker(medialibrary::MediaLibrary*, std::unique_ptr<medialibrary::IDiscoverer, std::default_delete<medialibrary::IDiscoverer> >) ../src/discoverer/DiscovererWorker.cpp:52
#3 0x7f13e34dcc21 in medialibrary::MediaLibrary::startDiscoverer() ../src/MediaLibrary.cpp:1055
#4 0x7f13e353a2d8 in medialibrary::MediaLibrary::discover(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ../src/MediaLibrary.cpp:2264
#5 0x5604fd8ca000 in main ../test/discoverer/main.cpp:125
#6 0x7f13dfc3a09a in __libc_start_main ../csu/libc-start.c:308
SUMMARY: AddressSanitizer: heap-use-after-free ../../src/misc/threads.c:188 in vlc_mutex_trylock
Shadow bytes around the buggy address:
0x0c1c7fff89f0: fa fa fa fa fa fa fa fa fa fa fa fa 00 00 00 00
0x0c1c7fff8a00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c1c7fff8a10: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
0x0c1c7fff8a20: fd fd fd fd fd fd fd fd fd fd fd fd fa fa fa fa
0x0c1c7fff8a30: fa fa fa fa fd fd fd fd fd fd fd fd fd fd fd fd
=>0x0c1c7fff8a40: fd fd[fd]fd fd fd fd fa fa fa fa fa fa fa fa fa
0x0c1c7fff8a50: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c1c7fff8a60: fd fd fd fa fa fa fa fa fa fa fa fa fd fd fd fd
0x0c1c7fff8a70: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fa
0x0c1c7fff8a80: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
0x0c1c7fff8a90: fd fd fd fd fd fd fd fd fd fd fd fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==13400==ABORTING
```https://code.videolan.org/videolan/medialibrary/-/issues/294Entrypoints returns empty strings for each entryPoint2021-01-21T16:09:30ZNicolas PomepuyEntrypoints returns empty strings for each entryPointOn current master, the ML adds `""` entries for each real `entryPoint`
![Selection_037](/uploads/a6d95eb911999a981a59219534dbbbeb/Selection_037.png)
[vlc_media.db](/uploads/d94d6076c6bd5833fa347f166ba7c55b/vlc_media.db)On current master, the ML adds `""` entries for each real `entryPoint`
![Selection_037](/uploads/a6d95eb911999a981a59219534dbbbeb/Selection_037.png)
[vlc_media.db](/uploads/d94d6076c6bd5833fa347f166ba7c55b/vlc_media.db)https://code.videolan.org/videolan/medialibrary/-/issues/250Playback from local playlist files fails due to invalid URL encoding2020-12-20T17:48:17ZFelix Paul Kühnefkuehne@videolan.orgPlayback from local playlist files fails due to invalid URL encodingSynchronize a file (such as http://www.feepk.net/testing/nonrestricted/iptv.m3u) which includes URLs including ports. Note that downloading such a file will be rejected, so you need to use WiFi sharing to sync.
Try to open a stream from ...Synchronize a file (such as http://www.feepk.net/testing/nonrestricted/iptv.m3u) which includes URLs including ports. Note that downloading such a file will be rejected, so you need to use WiFi sharing to sync.
Try to open a stream from the Playlist tab.
Playback will fail without a meaningful error message.
Logging reveals that VLC tries to open "udp://%40224.10.50.10%3A5004" instead of "udp://@224.10.50.10:5004".
This is an often-complained about regression from 3.2.7.Hugo Beauzée-LuyssenHugo Beauzée-Luyssenhttps://code.videolan.org/videolan/medialibrary/-/issues/286Android crash2020-12-15T10:07:23ZNicolas PomepuyAndroid crashApp version 3.3.3 beta 4
Symbols: https://code.videolan.org/videolan/vlc-android/-/tags/libvlc-3.3.11
```
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> org.videolan.vlc <<<
backtrace:
#00 pc 000...App version 3.3.3 beta 4
Symbols: https://code.videolan.org/videolan/vlc-android/-/tags/libvlc-3.3.11
```
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> org.videolan.vlc <<<
backtrace:
#00 pc 00000000000832a8 /apex/com.android.runtime/lib64/bionic/libc.so (abort+160)
#00 pc 000000000009e8e8 /data/app/org.videolan.vlc-C1qyKIoiJuuFIqV1rxNajw==/lib/arm64/libc++_shared.so
#00 pc 000000000009eadc /data/app/org.videolan.vlc-C1qyKIoiJuuFIqV1rxNajw==/lib/arm64/libc++_shared.so
#00 pc 00000000000b0530 /data/app/org.videolan.vlc-C1qyKIoiJuuFIqV1rxNajw==/lib/arm64/libc++_shared.so
#00 pc 00000000000afb5c /data/app/org.videolan.vlc-C1qyKIoiJuuFIqV1rxNajw==/lib/arm64/libc++_shared.so
#00 pc 00000000000afab8 /data/app/org.videolan.vlc-C1qyKIoiJuuFIqV1rxNajw==/lib/arm64/libc++_shared.so (__cxa_throw+112)
#00 pc 0000000000242a68 /data/app/org.videolan.vlc-C1qyKIoiJuuFIqV1rxNajw==/lib/arm64/libmla.so (medialibrary::Folder::mrl() const+892)
#00 pc 0000000000230ad4 /data/app/org.videolan.vlc-C1qyKIoiJuuFIqV1rxNajw==/lib/arm64/libmla.so (medialibrary::File::mrl() const+116)
#00 pc 0000000000147868 /data/app/org.videolan.vlc-C1qyKIoiJuuFIqV1rxNajw==/lib/arm64/libmla.so (medialibrary::Playlist::add(medialibrary::IMedia const&, unsigned int)+208)
#00 pc 0000000000148484 /data/app/org.videolan.vlc-C1qyKIoiJuuFIqV1rxNajw==/lib/arm64/libmla.so (medialibrary::Playlist::add(long, unsigned int)+84)
#00 pc 00000000001488a0 /data/app/org.videolan.vlc-C1qyKIoiJuuFIqV1rxNajw==/lib/arm64/libmla.so (medialibrary::Playlist::move(unsigned int, unsigned int)+272)
#00 pc 00000000000fbc38 /data/app/org.videolan.vlc-C1qyKIoiJuuFIqV1rxNajw==/lib/arm64/libmla.so (AndroidMediaLibrary::playlistMove(long, unsigned int, unsigned int)+84)
#00 pc 00000000000f4bb4 /data/app/org.videolan.vlc-C1qyKIoiJuuFIqV1rxNajw==/lib/arm64/libmla.so (playlistMove(_JNIEnv*, _jobject*, _jobject*, long, int, int)+120)
#00 pc 0000000000173f60 /data/app/org.videolan.vlc-C1qyKIoiJuuFIqV1rxNajw==/oat/arm64/base.odex (art_jni_trampoline+176)
#00 pc 000000000054a6e4 /data/app/org.videolan.vlc-C1qyKIoiJuuFIqV1rxNajw==/oat/arm64/base.odex (org.videolan.medialibrary.media.PlaylistImpl.move+148)
#00 pc 0000000000681634 /data/app/org.videolan.vlc-C1qyKIoiJuuFIqV1rxNajw==/oat/arm64/base.odex (org.videolan.vlc.gui.PlaylistActivity.onMove+196)
#00 pc 000000000055b6e8 /data/app/org.videolan.vlc-C1qyKIoiJuuFIqV1rxNajw==/oat/arm64/base.odex (org.videolan.vlc.gui.audio.AudioBrowserAdapter.onItemMoved+120)
#00 pc 00000000005182b8 /data/app/org.videolan.vlc-C1qyKIoiJuuFIqV1rxNajw==/oat/arm64/base.odex (org.videolan.vlc.gui.helpers.SwipeDragItemTouchHelperCallback.clearView+200)
#00 pc 0000000000328ec4 /data/app/org.videolan.vlc-C1qyKIoiJuuFIqV1rxNajw==/oat/arm64/base.odex (androidx.recyclerview.widget.ItemTouchHelper$3.onAnimationEnd+196)
#00 pc 00000000004354f8 /system/framework/arm64/boot-framework.oat (android.animation.Animator$AnimatorListener.onAnimationEnd+56)
#00 pc 000000000053e70c /system/framework/arm64/boot-framework.oat (android.animation.ValueAnimator.endAnimation+476)
#00 pc 000000000053fe84 /system/framework/arm64/boot-framework.oat (android.animation.ValueAnimator.doAnimationFrame+452)
#00 pc 0000000000434d6c /system/framework/arm64/boot-framework.oat (android.animation.AnimationHandler.doAnimationFrame+396)
#00 pc 0000000000533544 /system/framework/arm64/boot-framework.oat (android.animation.AnimationHandler$1.doFrame+228)
#00 pc 0000000000a31eb4 /system/framework/arm64/boot-framework.oat (android.view.Choreographer.doCallbacks+692)
#00 pc 0000000000a32648 /system/framework/arm64/boot-framework.oat (android.view.Choreographer.doFrame+1224)
#00 pc 0000000000b0dfe8 /system/framework/arm64/boot-framework.oat (android.view.Choreographer$FrameDisplayEventReceiver.run+72)
#00 pc 00000000007f432c /system/framework/arm64/boot-framework.oat (android.os.Handler.dispatchMessage+76)
#00 pc 00000000007f7a08 /system/framework/arm64/boot-framework.oat (android.os.Looper.loop+1448)
#00 pc 0000000000557334 /system/framework/arm64/boot-framework.oat (android.app.ActivityThread.main+788)
#00 pc 00000000001375b8 /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_static_stub+568)
#00 pc 000000000014600c /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+276)
#00 pc 00000000004b0200 /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
#00 pc 00000000004b1da4 /apex/com.android.runtime/lib64/libart.so (art::InvokeMethod(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned long)+1480)
#00 pc 000000000043cb60 /apex/com.android.runtime/lib64/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*)+52)
#00 pc 00000000000c9c54 /system/framework/arm64/boot.oat (art_jni_trampoline+180)
#00 pc 0000000000ab18d8 /system/framework/arm64/boot-framework.oat (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+136)
#00 pc 0000000000aba024 /system/framework/arm64/boot-framework.oat (com.android.internal.os.ZygoteInit.main+3012)
#00 pc 00000000001375b8 /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_static_stub+568)
#00 pc 000000000014600c /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+276)
#00 pc 00000000004b0200 /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
#00 pc 00000000004afdf0 /apex/com.android.runtime/lib64/libart.so (art::InvokeWithVarArgs(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+408)
#00 pc 00000000003ba8dc /apex/com.android.runtime/lib64/libart.so (art::JNI::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+624)
#00 pc 00000000000ee05c /system/lib64/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+116)
#00 pc 00000000000f117c /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+792)
#00 pc 0000000000003510 /system/bin/app_process64 (main+1216)
#00 pc 000000000007e898 /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+108)
```https://code.videolan.org/videolan/medialibrary/-/issues/279Crash Android2020-12-04T11:57:32ZNicolas PomepuyCrash AndroidCrash on 3.3.3 beta 2
libvlc [3.3.10](https://code.videolan.org/videolan/vlc-android/-/tags/libvlc-3.3.10)
```
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> org.videolan.vlc <<<
backtrace:
#00 p...Crash on 3.3.3 beta 2
libvlc [3.3.10](https://code.videolan.org/videolan/vlc-android/-/tags/libvlc-3.3.10)
```
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> org.videolan.vlc <<<
backtrace:
#00 pc 00000000000644e0 /system/lib/libc.so (pthread_mutex_lock+4)
#00 pc 000000000005e769 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/lib/arm/libc++_shared.so (std::__ndk1::mutex::lock()+4)
#00 pc 00000000001564b4 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/lib/arm/libmla.so (medialibrary::DiscovererWorker::enqueue(medialibrary::DiscovererWorker::Task)+44)
#00 pc 0000000000155e28 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/lib/arm/libmla.so (medialibrary::DiscovererWorker::enqueue(long long, medialibrary::DiscovererWorker::Task::Type)+308)
#00 pc 0000000000155ce8 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/lib/arm/libmla.so (medialibrary::DiscovererWorker::reloadDevice(long long)+20)
#00 pc 00000000000fb928 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/lib/arm/libmla.so (medialibrary::MediaLibrary::FsFactoryCb::onDeviceMounted(medialibrary::fs::IDevice const&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&)+608)
#00 pc 00000000001d927c /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/lib/arm/libmla.so (medialibrary::fs::libvlc::FileSystemFactory::onDeviceMounted(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&, bool)+816)
#00 pc 00000000000cfc7f /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/lib/arm/libmla.so (AndroidDeviceLister::refresh()+114)
#00 pc 0000000000227c68 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/lib/arm/libmla.so (medialibrary::Folder::mrl() const+164)
#00 pc 0000000000214198 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/lib/arm/libmla.so (medialibrary::File::mrl() const+108)
#00 pc 00000000000d0b87 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/lib/arm/libmla.so (mediaToMediaWrapper(_JNIEnv*, fields*, std::__ndk1::shared_ptr<medialibrary::IMedia> const&)+586)
#00 pc 00000000000c5609 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/lib/arm/libmla.so (lastMediaPLayed(_JNIEnv*, _jobject*)+100)
#00 pc 000000000003af3b /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.odex (offset 0x3a000) (org.videolan.medialibrary.MedialibraryImpl.nativeDevices [DEDUPED]+74)
#00 pc 0000000000417d75 /system/lib/libart.so (art_quick_invoke_stub_internal+68)
#00 pc 00000000003f12ef /system/lib/libart.so (art_quick_invoke_stub+226)
#00 pc 00000000000a1031 /system/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+136)
#00 pc 00000000001e8835 /system/lib/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+232)
#00 pc 00000000001e3511 /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+776)
#00 pc 00000000003ecda9 /system/lib/libart.so (MterpInvokeDirect+196)
#00 pc 000000000040ab14 /system/lib/libart.so (ExecuteMterpImpl+14484)
#00 pc 0000000000a7f890 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (org.videolan.medialibrary.MedialibraryImpl.lastMediaPlayed+8)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc757 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+146)
#00 pc 00000000001e34fb /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+754)
#00 pc 00000000003ee35b /system/lib/libart.so (MterpInvokeVirtualQuick+422)
#00 pc 000000000040e794 /system/lib/libart.so (ExecuteMterpImpl+29972)
#00 pc 0000000000ad9e10 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (org.videolan.television.viewmodel.MainTvModel$updateRecentlyPlayed$1$invokeSuspend$$inlined$getFromMl$1$1$1.invokeSuspend+84)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc757 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+146)
#00 pc 00000000001e34fb /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+754)
#00 pc 00000000003ee35b /system/lib/libart.so (MterpInvokeVirtualQuick+422)
#00 pc 000000000040e794 /system/lib/libart.so (ExecuteMterpImpl+29972)
#00 pc 0000000000ad9da0 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (org.videolan.television.viewmodel.MainTvModel$updateRecentlyPlayed$1$invokeSuspend$$inlined$getFromMl$1$1$1.invoke+20)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc757 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+146)
#00 pc 00000000001e34fb /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+754)
#00 pc 00000000003ecae5 /system/lib/libart.so (MterpInvokeInterface+1020)
#00 pc 000000000040ac14 /system/lib/libart.so (ExecuteMterpImpl+14740)
#00 pc 0000000000a3915c /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched+44)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc757 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+146)
#00 pc 00000000001e34fb /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+754)
#00 pc 00000000003ecef3 /system/lib/libart.so (MterpInvokeStatic+130)
#00 pc 000000000040ab94 /system/lib/libart.so (ExecuteMterpImpl+14612)
#00 pc 000000000048da8a /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (kotlinx.coroutines.CoroutineStart.invoke+54)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc757 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+146)
#00 pc 00000000001e34fb /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+754)
#00 pc 00000000003ee35b /system/lib/libart.so (MterpInvokeVirtualQuick+422)
#00 pc 000000000040e794 /system/lib/libart.so (ExecuteMterpImpl+29972)
#00 pc 000000000048d09c /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (kotlinx.coroutines.AbstractCoroutine.start+12)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc757 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+146)
#00 pc 00000000001e34fb /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+754)
#00 pc 00000000003ee35b /system/lib/libart.so (MterpInvokeVirtualQuick+422)
#00 pc 000000000040e794 /system/lib/libart.so (ExecuteMterpImpl+29972)
#00 pc 0000000000a0af6c /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (kotlinx.coroutines.BuildersKt__Builders_commonKt.launch+48)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc757 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+146)
#00 pc 00000000001e34fb /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+754)
#00 pc 00000000003ecef3 /system/lib/libart.so (MterpInvokeStatic+130)
#00 pc 000000000040ab94 /system/lib/libart.so (ExecuteMterpImpl+14612)
#00 pc 000000000048d1b8 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (kotlinx.coroutines.BuildersKt.launch)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc757 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+146)
#00 pc 00000000001e34fb /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+754)
#00 pc 00000000003ecef3 /system/lib/libart.so (MterpInvokeStatic+130)
#00 pc 000000000040ab94 /system/lib/libart.so (ExecuteMterpImpl+14612)
#00 pc 0000000000a0af20 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default+28)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc757 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+146)
#00 pc 00000000001e4377 /system/lib/libart.so (bool art::interpreter::DoCall<true, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+674)
#00 pc 00000000003ee115 /system/lib/libart.so (MterpInvokeStaticRange+100)
#00 pc 000000000040ae94 /system/lib/libart.so (ExecuteMterpImpl+15380)
#00 pc 000000000048d19c /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (kotlinx.coroutines.BuildersKt.launch$default)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc757 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+146)
#00 pc 00000000001e4377 /system/lib/libart.so (bool art::interpreter::DoCall<true, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+674)
#00 pc 00000000003ee115 /system/lib/libart.so (MterpInvokeStaticRange+100)
#00 pc 000000000040ae94 /system/lib/libart.so (ExecuteMterpImpl+15380)
#00 pc 0000000000ad9f52 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (org.videolan.television.viewmodel.MainTvModel$updateRecentlyPlayed$1$invokeSuspend$$inlined$getFromMl$1$1.onMedialibraryReady+54)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc757 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+146)
#00 pc 00000000001e34fb /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+754)
#00 pc 00000000003ecae5 /system/lib/libart.so (MterpInvokeInterface+1020)
#00 pc 000000000040ac14 /system/lib/libart.so (ExecuteMterpImpl+14740)
#00 pc 0000000000a7feb8 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (org.videolan.medialibrary.MedialibraryImpl.start+68)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc757 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+146)
#00 pc 00000000001e34fb /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+754)
#00 pc 00000000003ee35b /system/lib/libart.so (MterpInvokeVirtualQuick+422)
#00 pc 000000000040e794 /system/lib/libart.so (ExecuteMterpImpl+29972)
#00 pc 0000000000ae68f4 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (org.videolan.vlc.MediaParsingService.initMedialib+224)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc757 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+146)
#00 pc 00000000001e4377 /system/lib/libart.so (bool art::interpreter::DoCall<true, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+674)
#00 pc 00000000003ee5bf /system/lib/libart.so (MterpInvokeVirtualQuickRange+298)
#00 pc 000000000040e814 /system/lib/libart.so (ExecuteMterpImpl+30100)
#00 pc 0000000000ae6cd8 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (org.videolan.vlc.MediaParsingService.processAction+948)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc757 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+146)
#00 pc 00000000001e34fb /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+754)
#00 pc 00000000003ee35b /system/lib/libart.so (MterpInvokeVirtualQuick+422)
#00 pc 000000000040e794 /system/lib/libart.so (ExecuteMterpImpl+29972)
#00 pc 0000000000ae5634 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (org.videolan.vlc.MediaParsingService$processAction$1.invokeSuspend+24)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc757 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+146)
#00 pc 00000000001e34fb /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+754)
#00 pc 00000000003ee35b /system/lib/libart.so (MterpInvokeVirtualQuick+422)
#00 pc 000000000040e794 /system/lib/libart.so (ExecuteMterpImpl+29972)
#00 pc 00000000003c8800 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith+28)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc757 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+146)
#00 pc 00000000001e34fb /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+754)
#00 pc 00000000003ecae5 /system/lib/libart.so (MterpInvokeInterface+1020)
#00 pc 000000000040ac14 /system/lib/libart.so (ExecuteMterpImpl+14740)
#00 pc 0000000000a0f97e /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (kotlinx.coroutines.DispatchedTask.run+270)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc757 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+146)
#00 pc 00000000001e34fb /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+754)
#00 pc 00000000003ee35b /system/lib/libart.so (MterpInvokeVirtualQuick+422)
#00 pc 000000000040e794 /system/lib/libart.so (ExecuteMterpImpl+29972)
#00 pc 0000000000a3ad60 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc757 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+146)
#00 pc 00000000001e34fb /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+754)
#00 pc 00000000003ee35b /system/lib/libart.so (MterpInvokeVirtualQuick+422)
#00 pc 000000000040e794 /system/lib/libart.so (ExecuteMterpImpl+29972)
#00 pc 0000000000a39ae8 /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask+28)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc757 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+146)
#00 pc 00000000001e34fb /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+754)
#00 pc 00000000003ecda9 /system/lib/libart.so (MterpInvokeDirect+196)
#00 pc 000000000040ab14 /system/lib/libart.so (ExecuteMterpImpl+14484)
#00 pc 0000000000a39c1c /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker+56)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc757 /system/lib/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+146)
#00 pc 00000000001e34fb /system/lib/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+754)
#00 pc 00000000003ecda9 /system/lib/libart.so (MterpInvokeDirect+196)
#00 pc 000000000040ab14 /system/lib/libart.so (ExecuteMterpImpl+14484)
#00 pc 0000000000a39bcc /data/app/org.videolan.vlc-HCGSAXtdhmtPOo31U8PNhw==/oat/arm/base.vdex (kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run)
#00 pc 00000000001c7e89 /system/lib/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.2138293751)+352)
#00 pc 00000000001cc6a3 /system/lib/libart.so (art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*)+82)
#00 pc 00000000003df75b /system/lib/libart.so (artQuickToInterpreterBridge+890)
#00 pc 000000000041c2ff /system/lib/libart.so (art_quick_to_interpreter_bridge+30)
#00 pc 0000000000417d75 /system/lib/libart.so (art_quick_invoke_stub_internal+68)
#00 pc 00000000003f12ef /system/lib/libart.so (art_quick_invoke_stub+226)
#00 pc 00000000000a1031 /system/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+136)
#00 pc 0000000000350a6d /system/lib/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+52)
#00 pc 00000000003517f9 /system/lib/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue*)+316)
#00 pc 0000000000373371 /system/lib/libart.so (art::Thread::CreateCallback(void*)+900)
#00 pc 0000000000063bb5 /system/lib/libc.so (__pthread_start(void*)+22)
#00 pc 000000000001e02d /system/lib/libc.so (__start_thread+22)
```Hugo Beauzée-LuyssenHugo Beauzée-Luyssenhttps://code.videolan.org/videolan/medialibrary/-/issues/285Android crash2020-12-04T11:46:25ZNicolas PomepuyAndroid crashCrash on 3.3.3 beta 2
libvlc [3.3.10](https://code.videolan.org/videolan/vlc-android/-/tags/libvlc-3.3.10)
```
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> org.videolan.vlc <<<
backtrace:
#00 p...Crash on 3.3.3 beta 2
libvlc [3.3.10](https://code.videolan.org/videolan/vlc-android/-/tags/libvlc-3.3.10)
```
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> org.videolan.vlc <<<
backtrace:
#00 pc 0000000000022034 /system/lib64/libc.so (abort+116)
#00 pc 000000000009e8e8 /data/app/org.videolan.vlc-W9141tXMtXFsBDwvcR1y_g==/lib/arm64/libc++_shared.so
#00 pc 000000000009eadc /data/app/org.videolan.vlc-W9141tXMtXFsBDwvcR1y_g==/lib/arm64/libc++_shared.so
#00 pc 00000000000b0530 /data/app/org.videolan.vlc-W9141tXMtXFsBDwvcR1y_g==/lib/arm64/libc++_shared.so
#00 pc 00000000000afb5c /data/app/org.videolan.vlc-W9141tXMtXFsBDwvcR1y_g==/lib/arm64/libc++_shared.so
#00 pc 00000000000afab8 /data/app/org.videolan.vlc-W9141tXMtXFsBDwvcR1y_g==/lib/arm64/libc++_shared.so (__cxa_throw+112)
#00 pc 00000000001cfde0 /data/app/org.videolan.vlc-W9141tXMtXFsBDwvcR1y_g==/lib/arm64/libmla.so (medialibrary::utils::url::scheme(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&)+240)
#00 pc 0000000000231870 /data/app/org.videolan.vlc-W9141tXMtXFsBDwvcR1y_g==/lib/arm64/libmla.so (medialibrary::File::fromExternalMrl(medialibrary::MediaLibrary const*, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&)+56)
#00 pc 000000000010b1d0 /data/app/org.videolan.vlc-W9141tXMtXFsBDwvcR1y_g==/lib/arm64/libmla.so (medialibrary::MediaLibrary::media(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&) const+224)
#00 pc 00000000000ec970 /data/app/org.videolan.vlc-W9141tXMtXFsBDwvcR1y_g==/lib/arm64/libmla.so (getMediaFromMrl(_JNIEnv*, _jobject*, _jstring*)+156)
#00 pc 000000000003b7d8 /data/app/org.videolan.vlc-W9141tXMtXFsBDwvcR1y_g==/oat/arm64/base.odex (offset 0x3a000) (org.videolan.medialibrary.MedialibraryImpl.nativeCreateGroup [DEDUPED]+152)
#00 pc 0000000000554f88 /system/lib64/libart.so (art_quick_invoke_stub+584)
#00 pc 00000000000cf6c8 /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
#00 pc 000000000027f22c /system/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+344)
#00 pc 0000000000279240 /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+968)
#00 pc 0000000000525a34 /system/lib64/libart.so (MterpInvokeDirect+296)
#00 pc 0000000000547794 /system/lib64/libart.so (ExecuteMterpImpl+14484)
#00 pc 0000000000a7f724 /data/app/org.videolan.vlc-W9141tXMtXFsBDwvcR1y_g==/oat/arm64/base.vdex (org.videolan.medialibrary.MedialibraryImpl.getMedia+64)
#00 pc 0000000000252f44 /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1476001603)+488)
#00 pc 0000000000258a38 /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
#00 pc 0000000000279224 /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+940)
#00 pc 0000000000527738 /system/lib64/libart.so (MterpInvokeVirtualQuick+584)
#00 pc 000000000054b414 /system/lib64/libart.so (ExecuteMterpImpl+29972)
#00 pc 0000000000a7f654 /data/app/org.videolan.vlc-W9141tXMtXFsBDwvcR1y_g==/oat/arm64/base.vdex (org.videolan.medialibrary.MedialibraryImpl.findMedia+40)
#00 pc 0000000000252f44 /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1476001603)+488)
#00 pc 0000000000258a38 /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
#00 pc 0000000000279224 /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+940)
#00 pc 0000000000527738 /system/lib64/libart.so (MterpInvokeVirtualQuick+584)
#00 pc 000000000054b414 /system/lib64/libart.so (ExecuteMterpImpl+29972)
#00 pc 0000000000ba4e46 /data/app/org.videolan.vlc-W9141tXMtXFsBDwvcR1y_g==/oat/arm64/base.vdex (org.videolan.vlc.util.KextensionsKt.updateWithMLMeta+74)
#00 pc 0000000000252f44 /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1476001603)+488)
#00 pc 0000000000258a38 /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
#00 pc 0000000000279224 /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+940)
#00 pc 0000000000525bf8 /system/lib64/libart.so (MterpInvokeStatic+204)
#00 pc 0000000000547814 /system/lib64/libart.so (ExecuteMterpImpl+14612)
#00 pc 0000000000b8e934 /data/app/org.videolan.vlc-W9141tXMtXFsBDwvcR1y_g==/oat/arm64/base.vdex (org.videolan.vlc.media.PlaylistManager$load$2.invokeSuspend+36)
#00 pc 0000000000252f44 /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1476001603)+488)
#00 pc 0000000000514fa8 /system/lib64/libart.so (artQuickToInterpreterBridge+1020)
#00 pc 000000000055e0fc /system/lib64/libart.so (art_quick_to_interpreter_bridge+92)
#00 pc 00000000000101ec /dev/ashmem/dalvik-jit-code-cache (deleted)
```https://code.videolan.org/videolan/medialibrary/-/issues/278Crash Android2020-12-04T11:45:35ZNicolas PomepuyCrash AndroidCrash on 3.3.3 beta 2
libvlc [3.3.10](https://code.videolan.org/videolan/vlc-android/-/tags/libvlc-3.3.10)
```
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> org.videolan.vlc <<<
backtrace:
#00 pc 0...Crash on 3.3.3 beta 2
libvlc [3.3.10](https://code.videolan.org/videolan/vlc-android/-/tags/libvlc-3.3.10)
```
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> org.videolan.vlc <<<
backtrace:
#00 pc 0000000000083360 /apex/com.android.runtime/lib64/bionic/libc.so (abort+176)
#00 pc 000000000009e8e8 /data/app/org.videolan.vlc-LhK57cKuBbr0OLiynATZEg==/lib/arm64/libc++_shared.so
#00 pc 000000000009eadc /data/app/org.videolan.vlc-LhK57cKuBbr0OLiynATZEg==/lib/arm64/libc++_shared.so
#00 pc 00000000000b0530 /data/app/org.videolan.vlc-LhK57cKuBbr0OLiynATZEg==/lib/arm64/libc++_shared.so
#00 pc 00000000000afb5c /data/app/org.videolan.vlc-LhK57cKuBbr0OLiynATZEg==/lib/arm64/libc++_shared.so
#00 pc 00000000000afab8 /data/app/org.videolan.vlc-LhK57cKuBbr0OLiynATZEg==/lib/arm64/libc++_shared.so (__cxa_throw+112)
#00 pc 00000000001cfde0 /data/app/org.videolan.vlc-LhK57cKuBbr0OLiynATZEg==/lib/arm64/libmla.so (medialibrary::utils::url::scheme(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&)+240)
#00 pc 0000000000231870 /data/app/org.videolan.vlc-LhK57cKuBbr0OLiynATZEg==/lib/arm64/libmla.so (medialibrary::File::fromExternalMrl(medialibrary::MediaLibrary const*, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&)+56)
#00 pc 000000000010b1d0 /data/app/org.videolan.vlc-LhK57cKuBbr0OLiynATZEg==/lib/arm64/libmla.so (medialibrary::MediaLibrary::media(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&) const+224)
#00 pc 00000000000ec970 /data/app/org.videolan.vlc-LhK57cKuBbr0OLiynATZEg==/lib/arm64/libmla.so (getMediaFromMrl(_JNIEnv*, _jobject*, _jstring*)+156)
#00 pc 00000000000e5678 /data/app/org.videolan.vlc-LhK57cKuBbr0OLiynATZEg==/oat/arm64/base.odex (art_jni_trampoline+152)
#00 pc 000000000031fb78 /data/app/org.videolan.vlc-LhK57cKuBbr0OLiynATZEg==/oat/arm64/base.odex (org.videolan.medialibrary.MedialibraryImpl.getMedia+440)
#00 pc 000000000031f744 /data/app/org.videolan.vlc-LhK57cKuBbr0OLiynATZEg==/oat/arm64/base.odex (org.videolan.medialibrary.MedialibraryImpl.findMedia+132)
#00 pc 000000000031098c /data/app/org.videolan.vlc-LhK57cKuBbr0OLiynATZEg==/oat/arm64/base.odex (org.videolan.vlc.util.KextensionsKt.updateWithMLMeta+396)
#00 pc 0000000000398f48 /data/app/org.videolan.vlc-LhK57cKuBbr0OLiynATZEg==/oat/arm64/base.odex (org.videolan.vlc.media.PlaylistManager$load$2.invokeSuspend+168)
#00 pc 00000000002622b8 /data/app/org.videolan.vlc-LhK57cKuBbr0OLiynATZEg==/oat/arm64/base.odex (kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith+232)
#00 pc 0000000000316a34 /data/app/org.videolan.vlc-LhK57cKuBbr0OLiynATZEg==/oat/arm64/base.odex (kotlinx.coroutines.DispatchedTask.run+1156)
#00 pc 00000000002dba98 /data/app/org.videolan.vlc-LhK57cKuBbr0OLiynATZEg==/oat/arm64/base.odex (kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely+56)
#00 pc 00000000002d7308 /data/app/org.videolan.vlc-LhK57cKuBbr0OLiynATZEg==/oat/arm64/base.odex (kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker+1096)
#00 pc 00000000002d8748 /data/app/org.videolan.vlc-LhK57cKuBbr0OLiynATZEg==/oat/arm64/base.odex (kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run+40)
#00 pc 0000000000137334 /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)
#00 pc 00000000001460ac /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244)
#00 pc 00000000004b2af8 /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
#00 pc 00000000004b3ba8 /apex/com.android.runtime/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+416)
#00 pc 00000000004f46c8 /apex/com.android.runtime/lib64/libart.so (art::Thread::CreateCallback(void*)+1176)
#00 pc 00000000000e3b24 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
#00 pc 0000000000085330 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
```https://code.videolan.org/videolan/medialibrary/-/issues/284Android crash2020-12-04T11:44:35ZNicolas PomepuyAndroid crashCrash on 3.3.3 beta 3
libvlc [3.3.10](https://code.videolan.org/videolan/vlc-android/-/tags/libvlc-3.3.10)
```
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> org.videolan.vlc <<<
backtrace:
#00 p...Crash on 3.3.3 beta 3
libvlc [3.3.10](https://code.videolan.org/videolan/vlc-android/-/tags/libvlc-3.3.10)
```
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> org.videolan.vlc <<<
backtrace:
#00 pc 0000000000068b04 /system/lib64/libc.so (pthread_mutex_lock)
#00 pc 00000000000935cc /data/app/org.videolan.vlc-xxgVul2OA6KEQrcSbZ6aVQ==/lib/arm64/libc++_shared.so (std::__ndk1::mutex::lock()+8)
#00 pc 00000000001807ac /data/app/org.videolan.vlc-xxgVul2OA6KEQrcSbZ6aVQ==/lib/arm64/libmla.so (medialibrary::DiscovererWorker::enqueue(medialibrary::DiscovererWorker::Task)+56)
#00 pc 0000000000180180 /data/app/org.videolan.vlc-xxgVul2OA6KEQrcSbZ6aVQ==/lib/arm64/libmla.so (medialibrary::DiscovererWorker::enqueue(long, medialibrary::DiscovererWorker::Task::Type)+248)
#00 pc 000000000012bdd4 /data/app/org.videolan.vlc-xxgVul2OA6KEQrcSbZ6aVQ==/lib/arm64/libmla.so (medialibrary::MediaLibrary::FsFactoryCb::onDeviceMounted(medialibrary::fs::IDevice const&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&)+556)
#00 pc 00000000001f7e94 /data/app/org.videolan.vlc-xxgVul2OA6KEQrcSbZ6aVQ==/lib/arm64/libmla.so (medialibrary::fs::libvlc::FileSystemFactory::onDeviceMounted(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&, bool)+724)
#00 pc 00000000000fe754 /data/app/org.videolan.vlc-xxgVul2OA6KEQrcSbZ6aVQ==/lib/arm64/libmla.so (AndroidDeviceLister::refresh()+192)
#00 pc 000000000024073c /data/app/org.videolan.vlc-xxgVul2OA6KEQrcSbZ6aVQ==/lib/arm64/libmla.so (medialibrary::Folder::mrl() const+168)
#00 pc 0000000000240d44 /data/app/org.videolan.vlc-xxgVul2OA6KEQrcSbZ6aVQ==/lib/arm64/libmla.so (medialibrary::Folder::name() const+96)
#00 pc 00000000001011f4 /data/app/org.videolan.vlc-xxgVul2OA6KEQrcSbZ6aVQ==/lib/arm64/libmla.so (convertFolderObject(_JNIEnv*, fields*, std::__ndk1::shared_ptr<medialibrary::IFolder> const&, int)+52)
#00 pc 00000000000f5c48 /data/app/org.videolan.vlc-xxgVul2OA6KEQrcSbZ6aVQ==/lib/arm64/libmla.so (folders(_JNIEnv*, _jobject*, int, int, unsigned char, int, int)+424)
#00 pc 00000000002d6e64 /data/app/org.videolan.vlc-xxgVul2OA6KEQrcSbZ6aVQ==/oat/arm64/base.odex (offset 0xf7000)
```https://code.videolan.org/videolan/medialibrary/-/issues/276ML scan not forced to take new thumbs into account2020-11-25T15:33:18ZNicolas PomepuyML scan not forced to take new thumbs into accountAfter migrating from before the new thumb detection feature, the scan is not forced. The thumbs may then be staled at this point.After migrating from before the new thumb detection feature, the scan is not forced. The thumbs may then be staled at this point.https://code.videolan.org/videolan/medialibrary/-/issues/272Don't assign cover for unknown artist unknown album2020-11-23T13:16:29ZHugo Beauzée-LuyssenDon't assign cover for unknown artist unknown albumWe currently will share any thumbnail we find for a media that belongs to the unknown artist unknown album. This can lead to the same thumbnail being overshared in case the user's library isn't correctly tagged.
It is fine to assign the...We currently will share any thumbnail we find for a media that belongs to the unknown artist unknown album. This can lead to the same thumbnail being overshared in case the user's library isn't correctly tagged.
It is fine to assign the thumbnail to the media, but we shouldn't propagate it to the album & artist.
For *known* artists unknown album, it's OK to propagate the thumbnail to the artist, but it might not be a good idea to use it for its unknown albumHugo Beauzée-LuyssenHugo Beauzée-Luyssenhttps://code.videolan.org/videolan/medialibrary/-/issues/275Allow updating a media duration2020-11-17T09:17:00ZNicolas PomepuyAllow updating a media duration**Use case:**
In the case of an external media, the duration is always set to -1.
When the media has been read on Android we save some information about it (progress, play_count) etc. But when we want to display it again, it would be n...**Use case:**
In the case of an external media, the duration is always set to -1.
When the media has been read on Android we save some information about it (progress, play_count) etc. But when we want to display it again, it would be nice to have the duration (that we got from the last playback) persisted in the DB
**Request:**
Have an API allowing to update the media duration field in DBhttps://code.videolan.org/videolan/medialibrary/-/issues/266M3U: Show Playlist title if available2020-10-09T14:16:19ZJonas MüllerM3U: Show Playlist title if availableGiven I have the following playlist:
```
# my_playlist.m3u
#EXTM3U
#EXTENC: UTF-8
#PLAYLIST: My Playlist
file1.mp3
file2.mp3
file3.mp3
```
On the playlists overview page, VLC-iOS currently shows `my_playlist.m3u` on the first line unde...Given I have the following playlist:
```
# my_playlist.m3u
#EXTM3U
#EXTENC: UTF-8
#PLAYLIST: My Playlist
file1.mp3
file2.mp3
file3.mp3
```
On the playlists overview page, VLC-iOS currently shows `my_playlist.m3u` on the first line underneath the album art and `3 Tracks` on the second. It would be nice if it used the proper name of the playlist (in this case `My Playlist`) instead of the file name.https://code.videolan.org/videolan/medialibrary/-/issues/269youtube url when played doesn't appear in stream history2020-09-29T09:12:15ZPrince Guptayoutube url when played doesn't appear in stream historymedia is played using something like this
```cpp
ml_unique_ptr<vlc_ml_media_t> s{vlc_ml_get_media_by_mrl( m_ml, qtu( url ))};
if (!s) {
s.reset(vlc_ml_new_stream( m_ml, qtu( url ) ));
}
if (!s...media is played using something like this
```cpp
ml_unique_ptr<vlc_ml_media_t> s{vlc_ml_get_media_by_mrl( m_ml, qtu( url ))};
if (!s) {
s.reset(vlc_ml_new_stream( m_ml, qtu( url ) ));
}
if (!s)
return;
MLParentId itemId( s->i_id, VLC_ML_PARENT_UNKNOWN );
m_mediaLib->addAndPlay(itemId);
```
here url contains youtube url
media starts and plays correctly but the URL does not appear in subsequent calls of `MediaLibrary::streamHistory()`.