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

Strawberry assertion failure when updating smart playlist during collection update #1625

Closed
Erriez opened this issue Dec 19, 2024 · 2 comments
Assignees
Labels

Comments

@Erriez
Copy link
Contributor

Erriez commented Dec 19, 2024

Describe the bug
Reproducible assertion failure:

ASSERT failure in QList::at: "index out of range", file C:\strawberry_msvc_x86_64_debug\include\QtCore/qlist.h, line 450

To Reproduce
Steps to reproduce the behavior:

  1. Create a directory with a large amount of audio files in the source directory configured via Tools | Settings | Collection. It should take several seconds to scan at startup.
  2. Click Smart playlists | Right mouse click All tracks ->Open a new playlist.
  3. Close Strawberry.
  4. Add audio files in the music source directory.
  5. Start Strawberry and make sure the scan is busy which shows Updating collection... in the status bar.
  6. Exactly in the middle of the Updating collection, select the previously created playlist, click Smart playlists | right mouse click All tracks -> Replace current playlist.
  7. Strawberry crashes.

Expected behavior
No crashes.

Screenshots:
image

System Information:

  • Operating system: Windows 11
  • Strawberry Version: v1.2.3

Command prompt output:

19:16:31.510 INFO  main:181                         Strawberry 1.2.3 Qt "6.8.1"
19:16:31.515 INFO  main:182                         "Windows 11 Version 23H2 11 - (winnt 10.0.22631) [x86_64]"
19:16:31.689 DEBUG main:213                         Looking for resources in QList("C:/strawberry_msvc_x86_64_debug/plugins", "C:/data/projects/strawberry/msvc_/downloads/strawberry/out/build/x64-Debug")
19:16:31.690 ERROR GstStartup:119                   GIO module path "C:/data/projects/strawberry/msvc_/downloads/strawberry/out/build/x64-Debug/gio-modules" does not exist.
19:16:31.690 ERROR GstStartup:141                   GStreamer plugin path "C:/data/projects/strawberry/msvc_/downloads/strawberry/out/build/x64-Debug/gstreamer-plugins" does not exist.
19:16:31.690 DEBUG GstStartup:149                   Setting GStreamer registry file to "C:/Users/user/AppData/Local/Strawberry/Strawberry/gst-registry-1.2.3-bin"
19:16:32.384 DEBUG logging:99(GLib-GIO)             _g_io_module_get_default: Found default implementation winhttp (GWinHttpVfs) for ÔÇÿgio-vfsÔÇÖ
19:16:33.669 DEBUG main:233                         Style: "windows11"
19:16:33.669 DEBUG DeviceFinders>:67                DeviceFinders(0x24c37f626c0, name = "DeviceFinders") created
19:16:33.669 INFO  Application:287                  Creating GLib main event loop.
19:16:33.683 DEBUG Application:315                  TagReaderClient(0x24c37904660, name = "TagReaderClient") moved to thread QThread(0x24c37af6670, name = "TagReaderClient")
19:16:33.683 DEBUG TagReaderClient>:67              TagReaderClient(0x24c37904660, name = "TagReaderClient") created
19:16:33.685 DEBUG Application:315                  AlbumCoverLoader(0x24c379043a0, name = "AlbumCoverLoader") moved to thread QThread(0x24c36ad1440, name = "AlbumCoverLoader")
19:16:33.685 DEBUG AlbumCoverLoader>:67             AlbumCoverLoader(0x24c379043a0, name = "AlbumCoverLoader") created
19:16:33.685 DEBUG TaskManager>:67                  TaskManager(0x24c37f631b0, name = "TaskManager") created
19:16:33.702 DEBUG Application:315                  Database(0x24c36a464c0, name = "Database") moved to thread QThread(0x24c36ad10d0, name = "Database")
19:16:33.702 DEBUG Database>:67                     Database(0x24c36a464c0, name = "Database") created
19:16:33.702 DEBUG CollectionLibrary:75             CollectionBackend(0x24c36af8690) moved to thread QThread(0x24c36ad10d0, name = "Database")
19:16:33.751 DEBUG CollectionLibrary>:67            CollectionLibrary(0x24c37bb8100, name = "CollectionLibrary") created
19:16:33.754 WARN  unknown                          QFileSystemWatcher::removePaths: list is empty
19:16:33.755 WARN  unknown                          QFileSystemWatcher::removePaths: list is empty
19:16:33.755 DEBUG CollectionLibrary:108            CollectionWatcher(0x24c36abffb0, name = "CollectionWatcher") moved to thread Thread(0x24c36af2450, name = "CollectionWatcher")
19:16:33.867 DEBUG GlobalShortcutsBackendWin:50     Registering
19:16:33.867 INFO  GlobalShortcut:97                Registered shortcut "Media Next"
19:16:33.867 INFO  GlobalShortcut:97                Registered shortcut "Media Play"
19:16:33.867 INFO  GlobalShortcut:97                Registered shortcut "Media Previous"
19:16:33.867 INFO  GlobalShortcut:97                Registered shortcut "Media Stop"
19:16:34.118 DEBUG CurrentAlbumCoverLoader>:67      CurrentAlbumCoverLoader(0x24c38624ed0, name = "CurrentAlbumCoverLoader") created
19:16:34.118 DEBUG MoodbarLoader>:67                MoodbarLoader(0x24c386405f0) created
19:16:34.118 DEBUG Application:315                  PlaylistBackend(0x24c385b8dd0, name = "PlaylistBackend") moved to thread QThread(0x24c36ad10d0, name = "Database")
19:16:34.118 DEBUG PlaylistBackend>:67              PlaylistBackend(0x24c385b8dd0, name = "PlaylistBackend") created
19:16:34.118 DEBUG UrlHandlers>:67                  UrlHandlers(0x24c38248ed0) created
19:16:34.118 DEBUG PlaylistManager>:67              PlaylistManager(0x24c38625330, name = "PlaylistManager") created
19:16:34.118 DEBUG EngineBase:184                   SOUP_FORCE_HTTP1: ON
19:16:34.118 DEBUG Player>:67                       Player(0x24c38621e60, name = "Player") created
19:16:34.154 INFO  UrlHandlers:38                   Registered URL handler for "subsonic"
19:16:34.170 DEBUG StreamingServices:49             Added streaming service "Subsonic"
19:16:34.172 DEBUG NetworkAccessManager>:67         NetworkAccessManager(0x24c38394070) created
19:16:34.172 INFO  UrlHandlers:38                   Registered URL handler for "tidal"
19:16:34.211 DEBUG StreamingServices:49             Added streaming service "Tidal"
19:16:34.252 DEBUG StreamingServices:49             Added streaming service "Spotify"
19:16:34.255 INFO  UrlHandlers:38                   Registered URL handler for "qobuz"
19:16:34.288 DEBUG StreamingServices:49             Added streaming service "Qobuz"
19:16:34.288 DEBUG StreamingServices>:67            StreamingServices(0x24c38552520) created
19:16:34.459 DEBUG logging:99(GLib-GIO)             Unexpectedly, UWP app `Microsoft.OutlookForWindows_1.2024.1002.100_x64__8wekyb3d8bbwe' (AUMId `Microsoft.OutlookForWindows_8wekyb3d8bbwe!Microsoft.OutlookforWindows') supports 4 extensions but has no verbs
19:16:34.867 DEBUG logging:99(GLib-GIO)             Unexpectedly, UWP app `Clipchamp.Clipchamp_3.1.11920.0_neutral__yxz26nhyzhsrt' (AUMId `Clipchamp.Clipchamp_yxz26nhyzhsrt!App') supports 41 extensions but has no verbs
19:16:34.867 DEBUG logging:99(GLib-GIO)             Unexpectedly, UWP app `Microsoft.ScreenSketch_11.2409.25.0_x64__8wekyb3d8bbwe' (AUMId `Microsoft.ScreenSketch_8wekyb3d8bbwe!App') supports 29 extensions but has no verbs
19:16:35.060 DEBUG LastFMImport>:67                 LastFMImport(0x24c3b8d40f0) created
19:16:35.065 DEBUG MainWindow:368                   Starting
19:16:35.166 DEBUG logging:99(GLib-GIO)             Collecting capable appnames: 0ms
Allocating hashtables:...... 0ms
Reading capable apps:        703ms
Reading URL associations:... 0ms
Reading extension assocs:    110ms
Reading exe-only apps:...... 46ms
Reading classes:             1172ms
Reading UWP apps:            1172ms
Postprocessing:..............0ms
TOTAL:                       3203ms
19:16:35.182 DEBUG CoverProviders:108               Registered cover provider "Last.fm"
19:16:35.182 DEBUG CoverProviders:108               Registered cover provider "MusicBrainz"
19:16:35.182 DEBUG CoverProviders:108               Registered cover provider "Discogs"
19:16:35.182 DEBUG CoverProviders:108               Registered cover provider "Deezer"
19:16:35.182 DEBUG CoverProviders:108               Registered cover provider "Musixmatch"
19:16:35.198 DEBUG CoverProviders:108               Registered cover provider "OpenTidal"
19:16:35.199 DEBUG CoverProviders:108               Registered cover provider "Tidal"
19:16:35.200 DEBUG CoverProviders:108               Registered cover provider "Spotify"
19:16:35.200 DEBUG CoverProviders:108               Registered cover provider "Qobuz"
19:16:35.201 DEBUG CoverProviders>:67               CoverProviders(0x24c3bb8fab0) created
19:16:35.214 DEBUG LyricsProviders:122              Registered lyrics provider "Genius"
19:16:35.214 DEBUG LyricsProviders:122              Registered lyrics provider "Lyrics.ovh"
19:16:35.214 DEBUG LyricsProviders:122              Registered lyrics provider "LoloLyrics"
19:16:35.214 DEBUG LyricsProviders:122              Registered lyrics provider "Musixmatch"
19:16:35.214 DEBUG LyricsProviders:122              Registered lyrics provider "ChartLyrics"
19:16:35.214 DEBUG LyricsProviders:122              Registered lyrics provider "songlyrics.com"
19:16:35.214 DEBUG LyricsProviders:122              Registered lyrics provider "azlyrics.com"
19:16:35.214 DEBUG LyricsProviders:122              Registered lyrics provider "elyrics.net"
19:16:35.214 DEBUG LyricsProviders:122              Registered lyrics provider "letras.mus.br"
19:16:35.214 DEBUG LyricsProviders:122              Registered lyrics provider "lyricfind.com"
19:16:35.214 DEBUG LyricsProviders>:67              LyricsProviders(0x24c3ba155d0, name = "LyricsProviders") created
19:16:35.262 DEBUG MainWindow:421                   Initializing player
19:16:35.262 DEBUG DeviceManager>:67                DeviceManager(0x24c3b11eec0, name = "DeviceManager") created
19:16:35.296 DEBUG OrganizeDialog>:67               OrganizeDialog(0x24c3b97de10, name="OrganizeDialog") created
19:16:35.298 DEBUG RadioServices:69                 Adding radio service: "SomaFM"
19:16:35.300 DEBUG RadioServices:69                 Adding radio service: "Radio Paradise"
19:16:35.300 DEBUG RadioServices>:67                RadioServices(0x24c385b4ae0) created
19:16:35.301 DEBUG MainWindow:454                   Creating UI
19:16:35.336 DEBUG AudioScrobbler:61                Registered scrobbler service "Last.fm"
19:16:35.347 DEBUG AudioScrobbler:61                Registered scrobbler service "Libre.fm"
19:16:35.347 DEBUG AudioScrobbler:61                Registered scrobbler service "ListenBrainz"
19:16:35.347 DEBUG AudioScrobbler:61                Registered scrobbler service "Subsonic"
19:16:35.348 DEBUG AudioScrobbler>:67               AudioScrobbler(0x24c38558db0) created
19:16:35.352 DEBUG Windows7ThumbBar:60              Setting actions
19:16:35.366 DEBUG Windows7ThumbBar:69              Done
19:16:35.367 DEBUG MoodbarController>:67            MoodbarController(0x24c37cf1c40) created
19:16:35.367 DEBUG MainWindow:896                   Creating playing widget
19:16:36.147 DEBUG MainWindow:950                   Loading settings
19:16:37.520 DEBUG Windows7ThumbBar:126             TaskbarButtonCreated message ID registered 49303
19:16:37.693 DEBUG MainWindow:1052                  Creating Qt Sparkle updater
19:16:37.693 DEBUG MainWindow:1111                  Started QThread(0x24c31e95820, name = "Main")
19:16:37.841 DEBUG Windows7ThumbBar:147             Adding 6 buttons
19:16:53.027 DEBUG SettingsDialog>:67               SettingsDialog(0x24c3d7611e0, name="SettingsDialog") created
19:17:14.829 DEBUG Database:493                     Starting database integrity check
19:17:15.119 DEBUG Database:563                     Starting database backup
19:17:21.419 ERROR unknown                          ASSERT failure in QList::at: "index out of range", file C:\strawberry_msvc_x86_64_debug\include\QtCore/qlist.h, line 450

Callstack:

 	ucrtbased.dll!00007ffc76b82fb5()	Unknown
 	ucrtbased.dll!00007ffc76b83153()	Unknown
 	ucrtbased.dll!00007ffc76b9ae2d()	Unknown
>	strawberry.exe!logging::MessageHandler(QtMsgType type, const QMessageLogContext & message_log_context, const QString & message) Line 181	C++
 	Qt6Cored.dll!qt_message_print(QtMsgType msgType, const QMessageLogContext & context, const QString & message) Line 2082	C++
 	Qt6Cored.dll!qt_message(QtMsgType msgType, const QMessageLogContext & context, const char * msg, char * ap) Line 379	C++
 	Qt6Cored.dll!QMessageLogger::fatal(const char * msg, ...) Line 885	C++
 	Qt6Cored.dll!qt_assert_x(const char * where, const char * what, const char * file, int line) Line 113	C++
 	strawberry.exe!QList<std::shared_ptr<PlaylistItem>>::at(__int64 i) Line 450	C++
 	strawberry.exe!QList<std::shared_ptr<PlaylistItem>>::operator[](__int64 i) Line 459	C++
 	strawberry.exe!Playlist::item_at(const int index) Line 198	C++
 	strawberry.exe!Playlist::ReloadItemsBlocking(const QList<int> & rows) Line 1927	C++
 	strawberry.exe!Playlist::InvalidateDeletedSongs() Line 2334	C++
 	[External Code]	
 	strawberry.exe!QtConcurrent::StoredFunctionCall<void (__cdecl Playlist::*)(void),Playlist *>::runFunctor::__l2::<lambda_1>::operator()(void(Playlist::*)() function, Playlist * <args_0>) Line 116	C++
 	[External Code]	
 	strawberry.exe!QtConcurrent::StoredFunctionCall<void (__cdecl Playlist::*)(void),Playlist *>::runFunctor() Line 120	C++
 	strawberry.exe!QtConcurrent::RunFunctionTaskBase<void>::run() Line 83	C++
 	Qt6Cored.dll!QThreadPoolThread::run() Line 70	C++
 	Qt6Cored.dll!QThreadPrivate::start(void * arg) Line 272	C++
 	[External Code]	
@jonaski
Copy link
Member

jonaski commented Jan 3, 2025

It's the "invalidate deleted songs on startup" feature which was added by Paweł Bara in commit clementine-player/Clementine@823f798,
Very ugly stuff, since InvalidateDeletedSongs is run in a different thread while reading items and indexes. I've known about this, but I guess forgotten about it since it hasn't caused any issues in the regular playlists.
The easiest fix for now is just run InvalidateDeletedSongs in the main thread, it will block the GUI with large playlists, but at least it's safe.

@jonaski jonaski self-assigned this Jan 3, 2025
@jonaski jonaski added the bug label Jan 3, 2025
@jonaski jonaski closed this as completed in a96627c Jan 3, 2025
@jonaski
Copy link
Member

jonaski commented Jan 3, 2025

Can you try with the latest master and verify that it's fixed?

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

No branches or pull requests

2 participants