Page 1 of 1

System "crash" when adding a song

Posted: Tue Jan 12, 2021 1:44 pm
by FinFin
Occasionally, my whole system "crashes" when I want to drag a new song to the playlist. The music continues to play, till the end of the song. Then it stops. I can move the cursor, but when I click anywhere nothing happens. The cursor is the hand with the + all the time.
The last terminal message at this moment is: "SOListBox::GetSelectedTracks <-1"
It happens with very different songs. But not all the time I add this song, so its not the broken song.

Any help?
THX

Re: System "crash" when adding a song

Posted: Tue Jan 12, 2021 2:02 pm
by anonbeat
Please can you do a backtrace ?
viewtopic.php?f=3&t=468

Thanks for your help

Re: System "crash" when adding a song

Posted: Thu Jan 28, 2021 1:44 pm
by radiometer
I'm having a problem that might be related. The first thing that happened is that songs in the playlist couldn't be dragged and dropped properly anymore. They could only be placed at position 10 or 11, no matter where I dropped them. The visual indicator (thick line between two songs) doesn't show (except when hovering over position 10). The same happend when dragging songs from the library into the playlist and also when dragging a file within a saved playlist, i.e. not in "Now playing".

To see if this is a configuration problem, I removed my entire config directory. Then I just added a directory to the libray and dragged several files at once into the playlist. This reproducibly leads to a segmentation fault. Here is a backtrace (couldn't attach it as a file; always get the error message "invalid file extension"):
Thread 1 "guayadeque" received signal SIGSEGV, Segmentation fault.
0x00007ffff64c5fa3 in __memmove_avx_unaligned_erms () from /lib64/libc.so.6
(gdb) bt
#0 0x00007ffff64c5fa3 in __memmove_avx_unaligned_erms () at /lib64/libc.so.6
#1 0x00000000006bb9b1 in std::__copy_move<true, true, std::random_access_iterator_tag>::__copy_m<Guayadeque::guTrack*>(Guayadeque::guTrack* const*, Guayadeque::guTrack* const*, Guayadeque::guTrack**) (__first=0x0, __last=0x58, __result=0x2dd6840) at /usr/include/c++/10/bits/stl_algobase.h:426
#2 0x00000000006bb906 in std::__copy_move_a2<true, Guayadeque::guTrack**, Guayadeque::guTrack**>(Guayadeque::guTrack**, Guayadeque::guTrack**, Guayadeque::guTrack**)
(__first=0x0, __last=0x58, __result=0x2dd6840) at /usr/include/c++/10/bits/stl_algobase.h:472
#3 0x00000000006bb89a in std::__copy_move_a1<true, Guayadeque::guTrack**, Guayadeque::guTrack**>(Guayadeque::guTrack**, Guayadeque::guTrack**, Guayadeque::guTrack**)
(__first=0x0, __last=0x58, __result=0x2dd6840) at /usr/include/c++/10/bits/stl_algobase.h:506
#4 0x00000000006bb7d6 in std::__copy_move_a<true, Guayadeque::guTrack**, Guayadeque::guTrack**>(Guayadeque::guTrack**, Guayadeque::guTrack**, Guayadeque::guTrack**)
(__first=0x0, __last=0x58, __result=0x2dd6840) at /usr/include/c++/10/bits/stl_algobase.h:513
#5 0x00000000006bb6c1 in std::copy<std::move_iterator<Guayadeque::guTrack**>, Guayadeque::guTrack**>(std::move_iterator<Guayadeque::guTrack**>, std::move_iterator<Guayadeque::guTrack**>, Guayadeque::guTrack**) (__first=..., __last=..., __result=0x2dd6840) at /usr/include/c++/10/bits/stl_algobase.h:569
#6 0x00000000006bb56e in std::__uninitialized_copy<true>::__uninit_copy<std::move_iterator<Guayadeque::guTrack**>, Guayadeque::guTrack**>(std::move_iterator<Guayadeque::guTrack**>, std::move_iterator<Guayadeque::guTrack**>, Guayadeque::guTrack**) (__first=..., __last=..., __result=0x2dd6840) at /usr/include/c++/10/bits/stl_uninitialized.h:109
#7 0x00000000006bb236 in std::uninitialized_copy<std::move_iterator<Guayadeque::guTrack**>, Guayadeque::guTrack**>(std::move_iterator<Guayadeque::guTrack**>, std::move_iterator<Guayadeque::guTrack**>, Guayadeque::guTrack**) (__first=..., __last=..., __result=0x2dd6840) at /usr/include/c++/10/bits/stl_uninitialized.h:150
#8 0x00000000006bae74 in std::__uninitialized_copy_a<std::move_iterator<Guayadeque::guTrack**>, Guayadeque::guTrack**, Guayadeque::guTrack*>(std::move_iterator<Guayadeque::guTrack**>, std::move_iterator<Guayadeque::guTrack**>, Guayadeque::guTrack**, std::allocator<Guayadeque::guTrack*>&) (__first=..., __last=..., __result=0x2dd6840)
at /usr/include/c++/10/bits/stl_uninitialized.h:325
#9 0x00000000006ba9b9 in std::__uninitialized_move_if_noexcept_a<Guayadeque::guTrack**, Guayadeque::guTrack**, std::allocator<Guayadeque::guTrack*> >(Guayadeque::guTrack**, Guayadeque::guTrack**, Guayadeque::guTrack**, std::allocator<Guayadeque::guTrack*>&) (__first=0x0, __last=0x58, __result=0x2dd6840, __alloc=...) at /usr/include/c++/10/bits/stl_uninitialized.h:347
#10 0x00000000007a4dd2 in std::vector<Guayadeque::guTrack*, std::allocator<Guayadeque::guTrack*> >::_M_fill_insert(__gnu_cxx::__normal_iterator<Guayadeque::guTrack**, std::vector<Guayadeque::guTrack*, std::allocator<Guayadeque::guTrack*> > >, unsigned long, Guayadeque::guTrack* const&)
(this=0x24e7ca8, __position=<error reading variable: Cannot access memory at address 0x58>, __n=1, __x=@0x7fffffffb248: 0x2d93710) at /usr/include/c++/10/bits/vector.tcc:573
#11 0x00000000007a2b77 in std::vector<Guayadeque::guTrack*, std::allocator<Guayadeque::guTrack*> >::insert(__gnu_cxx::__normal_iterator<Guayadeque::guTrack* const*, std::vector<Guayadeque::guTrack*, std::allocator<Guayadeque::guTrack*> > >, unsigned long, Guayadeque::guTrack* const&)
(this=0x24e7ca8, __position=<error reading variable: Cannot access memory at address 0x58>, __n=1, __x=@0x7fffffffb248: 0x2d93710) at /usr/include/c++/10/bits/stl_vector.h:1338
#12 0x000000000096e1e4 in wxBaseObjectArray<Guayadeque::guTrack, Guayadeque::wxObjectArrayTraitsForguTrackArray>::Insert(Guayadeque::guTrack const&, unsigned long, unsigned long)
(this=0x24e7ca8, item=..., uiIndex=11, nInsert=1) at /usr/include/wx-3.1/wx/dynarray.h:386
#13 0x00000000009600af in Guayadeque::guPlayList::AddItem(Guayadeque::guTrack const&, int) (this=0x24e78c0, NewItem=..., pos=0)
at /home/philipp/Programs/compile/guayadeque-git/src/ui/player/PlayList.cpp:720
#14 0x0000000000961aff in Guayadeque::guPlayList::AddToPlayList(Guayadeque::guTrackArray const&, bool, int) (this=0x24e78c0, items=..., deleteold=false, aftercurrent=0)
at /home/philipp/Programs/compile/guayadeque-git/src/ui/player/PlayList.cpp:1167
#15 0x000000000095e87b in Guayadeque::guPlayList::OnDropTracks(Guayadeque::guTrackArray const*) (this=0x24e78c0, tracks=0x2aac4e0)
at /home/philipp/Programs/compile/guayadeque-git/src/ui/player/PlayList.cpp:293
#16 0x0000000000806e1c in Guayadeque::guListViewDropTarget::OnData(int, int, wxDragResult) (this=0x24c7160, x=137, y=227, def=wxDragCopy)
at /home/philipp/Programs/compile/guayadeque-git/src/ui/itemlistbox/ListView.cpp:1827
#17 0x00007ffff78bbf85 in () at /usr/lib64/libwx_gtk3u_core-suse.so.4.0.0
#18 0x00007ffff5f5b404 in () at /usr/lib64/libgtk-3.so.0
#19 0x00007ffff71d32de in () at /usr/lib64/libgobject-2.0.so.0
#20 0x00007ffff71eba99 in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#21 0x00007ffff71ec22f in g_signal_emit_by_name () at /usr/lib64/libgobject-2.0.so.0
#22 0x00007ffff5f2feed in () at /usr/lib64/libgtk-3.so.0
#23 0x00007ffff5f5a5dc in () at /usr/lib64/libgtk-3.so.0
#24 0x00007ffff71d32de in () at /usr/lib64/libgobject-2.0.so.0
#25 0x00007ffff71eba99 in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#26 0x00007ffff71ec22f in g_signal_emit_by_name () at /usr/lib64/libgobject-2.0.so.0
#27 0x00007ffff5e4a134 in gtk_selection_convert () at /usr/lib64/libgtk-3.so.0
#28 0x00007ffff78bcc94 in () at /usr/lib64/libwx_gtk3u_core-suse.so.4.0.0
#29 0x00007ffff5f4f2f7 in () at /usr/lib64/libgtk-3.so.0
#30 0x00007ffff71d3092 in g_closure_invoke () at /usr/lib64/libgobject-2.0.so.0
#31 0x00007ffff71e57d3 in () at /usr/lib64/libgobject-2.0.so.0
#32 0x00007ffff71eb77e in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#33 0x00007ffff71ec22f in g_signal_emit_by_name () at /usr/lib64/libgobject-2.0.so.0
#34 0x00007ffff5f35ab0 in () at /usr/lib64/libgtk-3.so.0
#35 0x00007ffff5dbc8c3 in gtk_main_do_event () at /usr/lib64/libgtk-3.so.0
#36 0x00007ffff5a9d013 in () at /usr/lib64/libgdk-3.so.0
#37 0x00007ffff5ad3e02 in () at /usr/lib64/libgdk-3.so.0
#38 0x00007ffff70e0e57 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
--Type <RET> for more, q to quit, c to continue without paging--c
#39 0x00007ffff70e11d8 in () at /usr/lib64/libglib-2.0.so.0
#40 0x00007ffff70e128f in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#41 0x00007ffff5db9c95 in gtk_main_iteration () at /usr/lib64/libgtk-3.so.0
#42 0x00007ffff78bf09d in wxDropSource::DoDragDrop(int) () at /usr/lib64/libwx_gtk3u_core-suse.so.4.0.0
#43 0x000000000080075a in Guayadeque::guListView::OnBeginDrag(wxCommandEvent&) (this=0x23d32b0, event=...) at /home/philipp/Programs/compile/guayadeque-git/src/ui/itemlistbox/ListView.cpp:317
#44 0x00007ffff7ef099e in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () at /usr/lib64/libwx_baseu-suse.so.4.0.0
#45 0x00007ffff7ef20ad in wxEvtHandler::SearchDynamicEventTable(wxEvent&) () at /usr/lib64/libwx_baseu-suse.so.4.0.0
#46 0x00007ffff7ef2350 in wxEvtHandler::TryHereOnly(wxEvent&) () at /usr/lib64/libwx_baseu-suse.so.4.0.0
#47 0x00007ffff7ef23fb in wxEvtHandler::ProcessEventLocally(wxEvent&) () at /usr/lib64/libwx_baseu-suse.so.4.0.0
#48 0x00007ffff7ef2519 in wxEvtHandler::ProcessEvent(wxEvent&) () at /usr/lib64/libwx_baseu-suse.so.4.0.0
#49 0x00007ffff7ae15de in wxScrollHelperEvtHandler::ProcessEvent(wxEvent&) () at /usr/lib64/libwx_gtk3u_core-suse.so.4.0.0
#50 0x00000000008019dd in Guayadeque::guListView::OnMouse(wxMouseEvent&) (this=0x23d32b0, event=...) at /home/philipp/Programs/compile/guayadeque-git/src/ui/itemlistbox/ListView.cpp:652
#51 0x00007ffff7ef099e in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () at /usr/lib64/libwx_baseu-suse.so.4.0.0
#52 0x00007ffff7ef20ad in wxEvtHandler::SearchDynamicEventTable(wxEvent&) () at /usr/lib64/libwx_baseu-suse.so.4.0.0
#53 0x00007ffff7ef2350 in wxEvtHandler::TryHereOnly(wxEvent&) () at /usr/lib64/libwx_baseu-suse.so.4.0.0
#54 0x00007ffff7ef23fb in wxEvtHandler::ProcessEventLocally(wxEvent&) () at /usr/lib64/libwx_baseu-suse.so.4.0.0
#55 0x00007ffff7ef2519 in wxEvtHandler::ProcessEvent(wxEvent&) () at /usr/lib64/libwx_baseu-suse.so.4.0.0
#56 0x00007ffff7afb6fc in wxVarScrollHelperEvtHandler::ProcessEvent(wxEvent&) () at /usr/lib64/libwx_gtk3u_core-suse.so.4.0.0
#57 0x00007ffff7ef31c7 in wxEvtHandler::SafelyProcessEvent(wxEvent&) () at /usr/lib64/libwx_baseu-suse.so.4.0.0
#58 0x00007ffff78dcf8f in () at /usr/lib64/libwx_gtk3u_core-suse.so.4.0.0
#59 0x00007ffff5f4ec9b in () at /usr/lib64/libgtk-3.so.0
#60 0x00007ffff71d3092 in g_closure_invoke () at /usr/lib64/libgobject-2.0.so.0
#61 0x00007ffff71e57d3 in () at /usr/lib64/libgobject-2.0.so.0
#62 0x00007ffff71eb77e in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#63 0x00007ffff71ec00f in g_signal_emit () at /usr/lib64/libgobject-2.0.so.0
#64 0x00007ffff5f17414 in () at /usr/lib64/libgtk-3.so.0
#65 0x00007ffff5dbb710 in () at /usr/lib64/libgtk-3.so.0
#66 0x00007ffff5dbc9cb in gtk_main_do_event () at /usr/lib64/libgtk-3.so.0
#67 0x00007ffff5a9d013 in () at /usr/lib64/libgdk-3.so.0
#68 0x00007ffff5ad3e02 in () at /usr/lib64/libgdk-3.so.0
#69 0x00007ffff70e0e57 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#70 0x00007ffff70e11d8 in () at /usr/lib64/libglib-2.0.so.0
#71 0x00007ffff70e14cb in g_main_loop_run () at /usr/lib64/libglib-2.0.so.0
#72 0x00007ffff5db9bfd in gtk_main () at /usr/lib64/libgtk-3.so.0
#73 0x00007ffff78b4995 in wxGUIEventLoop::DoRun() () at /usr/lib64/libwx_gtk3u_core-suse.so.4.0.0
#74 0x00007ffff7e143dd in wxEventLoopBase::Run() () at /usr/lib64/libwx_baseu-suse.so.4.0.0
#75 0x00007ffff7df150a in wxAppConsoleBase::MainLoop() () at /usr/lib64/libwx_baseu-suse.so.4.0.0
#76 0x00007ffff7e53cba in wxEntry(int&, wchar_t**) () at /usr/lib64/libwx_baseu-suse.so.4.0.0
#77 0x0000000000690528 in main(int, char**) (argc=1, argv=0x7fffffffdaf8) at /home/philipp/Programs/compile/guayadeque-git/src/MainApp.cpp:41

Re: System "crash" when adding a song

Posted: Mon Mar 22, 2021 10:26 pm
by radiometer
Hmm, probably this has nothing to do with the original post, but since I posted my stack trace here already...

@anonbeat: Did you have some time to look into this?

What happens here is that in Playlist.cpp, e.g. if guPlayList::MoveSelection() or guPlayList::AddItem() is called, no matter where I drop a file or playlist entry, there is always m_DragOverItem=10. If the playlist doesn't have this many items, the program crashes with a segfault. Otherwise the item is inserted at position 10.

I'm using wxWidgets 3.1.4 on openSUSE Tumbleweed.

Re: System "crash" when adding a song

Posted: Tue Mar 23, 2021 9:42 am
by ontologger
Looks like ~guDataObjectComposite() is called before m_ListView->OnDropTracks( Tracks ) in ListView.cpp .....

Some compiler optimization I guess, but that's not 100% :roll:

Re: System "crash" when adding a song

Posted: Tue Mar 23, 2021 10:05 am
by radiometer
I'm using a debug build with optimisations disabled. To be certain I explicitly added -DCMAKE_CXX_FLAGS_DEBUG="-O0" to the cmake command in ./buildd and checked that -O0 actually appears on the compiler command lines with `make VERBOSE=1`.

Re: System "crash" when adding a song

Posted: Mon Mar 29, 2021 12:05 pm
by anonbeat
radiometer wrote: Mon Mar 22, 2021 10:26 pm Hmm, probably this has nothing to do with the original post, but since I posted my stack trace here already...

@anonbeat: Did you have some time to look into this?

What happens here is that in Playlist.cpp, e.g. if guPlayList::MoveSelection() or guPlayList::AddItem() is called, no matter where I drop a file or playlist entry, there is always m_DragOverItem=10. If the playlist doesn't have this many items, the program crashes with a segfault. Otherwise the item is inserted at position 10.

I'm using wxWidgets 3.1.4 on openSUSE Tumbleweed.
I will take a look when I can.

Thank you for reporting it

Re: System "crash" when adding a song

Posted: Wed Apr 07, 2021 6:33 am
by anonbeat
Hello,
I tried to reproduce the problem but I cant. Drag and drop is working fine for me.

Thanks for your help