Bug 391362

Summary: Amarok crash on start
Product: [Applications] amarok Reporter: Jonathan <jonathan>
Component: generalAssignee: nsane457
Status: RESOLVED WORKSFORME    
Severity: crash CC: fabian, nsane457
Priority: NOR Keywords: drkonqi
Version: 2.9.0   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: backtrace.txt

Description Jonathan 2018-03-03 23:30:20 UTC
Application: amarok (2.8.0)

Qt Version: 5.10.1
Frameworks Version: 5.43.0
Operating System: Linux 4.15.7-1-ck-piledriver x86_64
Distribution (Platform): Archlinux Packages

-- Information about the crash:
- What I was doing when the application crashed:

Start amarok, crash everytime attempt to launch it.

Distribution: Arch

The crash can be reproduced every time.

-- Backtrace:
Application: Amarok (amarok), signal: Segmentation fault
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[Current thread is 1 (Thread 0x7fe08ffb7b40 (LWP 8063))]

Thread 3 (Thread 0x7fe038423700 (LWP 8066)):
#0  0x00007fe08b7a5786 in pthread_cond_timedwait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0
#1  0x00007fe042bc2308 in  () at /usr/lib/libmysqld.so.18
#2  0x00007fe042b6f61b in  () at /usr/lib/libmysqld.so.18
#3  0x00007fe08b79f08c in start_thread () at /usr/lib/libpthread.so.0
#4  0x00007fe08cc2de7f in clone () at /usr/lib/libc.so.6

Thread 2 (Thread 0x7fe05927f700 (LWP 8065)):
#0  0x00007fe08cc1f3d8 in read () at /usr/lib/libc.so.6
#1  0x00007fe077a857c2 in pa_read () at /usr/lib/pulseaudio/libpulsecommon-11.1.so
#2  0x00007fe083e3c7af in pa_mainloop_prepare () at /usr/lib/libpulse.so.0
#3  0x00007fe083e3d241 in pa_mainloop_iterate () at /usr/lib/libpulse.so.0
#4  0x00007fe083e3d301 in pa_mainloop_run () at /usr/lib/libpulse.so.0
#5  0x00007fe083e4b6ae in  () at /usr/lib/libpulse.so.0
#6  0x00007fe077ab581c in  () at /usr/lib/pulseaudio/libpulsecommon-11.1.so
#7  0x00007fe08b79f08c in start_thread () at /usr/lib/libpthread.so.0
#8  0x00007fe08cc2de7f in clone () at /usr/lib/libc.so.6

Thread 1 (Thread 0x7fe08ffb7b40 (LWP 8063)):
[KCrash Handler]
#6  0x00007fe07490cc02 in get_charset () at /usr/lib/libsmbconf.so.0
#7  0x00007fe0429e7242 in thd_init_client_charset(THD*, unsigned int) () at /usr/lib/libmysqld.so.18
#8  0x00007fe04296c154 in check_embedded_connection () at /usr/lib/libmysqld.so.18
#9  0x00007fe042974b09 in mysql_real_connect () at /usr/lib/libmysqld.so.18
#10 0x00007fe058877a85 in MySqlEmbeddedStorage::MySqlEmbeddedStorage(QString const&) () at /usr/lib/kde4/amarok_collection-mysqlecollection.so
#11 0x00007fe058876a07 in  () at /usr/lib/kde4/amarok_collection-mysqlecollection.so
#12 0x00007fe08f8d9834 in CollectionManager::loadPlugins(QList<Collections::CollectionFactory*> const&) () at /usr/lib/libamaroklib.so.1
#13 0x00007fe08f8d9cc9 in CollectionManager::handleNewFactories(QList<Plugins::PluginFactory*> const&) () at /usr/lib/libamaroklib.so.1
#14 0x00007fe08f9f164b in Plugins::PluginManager::init() () at /usr/lib/libamaroklib.so.1
#15 0x00007fe08f9f1d4d in Plugins::PluginManager::PluginManager(QObject*) () at /usr/lib/libamaroklib.so.1
#16 0x00007fe08f9f1e67 in Plugins::PluginManager::instance() () at /usr/lib/libamaroklib.so.1
#17 0x00007fe08f9e3da7 in MainWindow::MainWindow() () at /usr/lib/libamaroklib.so.1
#18 0x00007fe08f9c986b in App::continueInit() () at /usr/lib/libamaroklib.so.1
#19 0x00007fe08f9caaba in App::App() () at /usr/lib/libamaroklib.so.1
#20 0x00005603931e4e80 in  ()
#21 0x00007fe08cb58f4a in __libc_start_main () at /usr/lib/libc.so.6
#22 0x00005603931e6bfa in _start ()

Possible duplicates by query: bug 369494.

Reported using DrKonqi
Comment 1 Myriam Schweingruber 2018-03-07 18:10:34 UTC
Sadly you do not have debugging symbols enabled, so the backtrace is not really useful. Please see also https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports
Comment 2 nsane457 2018-04-05 23:04:07 UTC
Created attachment 111866 [details]
backtrace.txt

I ran into this bug in Gentoo Linux after building amarok from git as of commit adcbef160f03dcd54c44e3f0ff7a5c1d3c198532 (4/4/2018).  This is full gdb backtrace of all threads with symbols.
Comment 3 nsane457 2018-04-05 23:17:17 UTC
In my backtrace, the segfault happens in 'get_charset ()' in file

> ../source3/registry/reg_parse_internal.c

In the original submitted backtrace, the symbol is from "/usr/lib/libsmbconf.so.0".

Both of there reference the 'get_charset' symbol from samba even though, looking at the sourcecode, it seems mysql includes its own definition of 'get_charset' in the file "mysys/charset.c:.  Is there something about the way amarok loads mysql that could cause it to bind to 'get_charset' from the wrong library?
Comment 4 Myriam Schweingruber 2018-04-07 20:54:25 UTC
Could you please not hijack a bug which was about a different version?

FWIW: backtraces need to be posted as comments, attachments are not searchable unfortunately. And please do not confirm reports yourself, those need to be confirmed by the developers.
Comment 5 nsane457 2018-04-07 22:57:45 UTC
(In reply to Myriam Schweingruber from comment #4)
> Could you please not hijack a bug which was about a different version?
> 
> FWIW: backtraces need to be posted as comments, attachments are not
> searchable unfortunately. And please do not confirm reports yourself, those
> need to be confirmed by the developers.

Sorry.  I'll opened a new bug https://bugs.kde.org/show_bug.cgi?id=392848
Comment 6 Jonathan 2018-05-28 19:33:22 UTC
Backtrace with libsmbconf debug symbol, you can see: "#6  0x00007f4d74bf46da in get_charset (c=0xe0 <error: Cannot access memory at address 0xe0>) at ../source3/registry/reg_parse_internal.c:220"

It's enought?


Application: Amarok (amarok), signal: Segmentation fault
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f4d90e2eb40 (LWP 23598))]

Thread 3 (Thread 0x7f4d32ffb700 (LWP 23601)):
#0  0x00007f4d8c09d35b in pthread_cond_timedwait@@GLIBC_2.3.2 () at /usr/lib/libpthread.so.0
#1  0x00007f4d3dbbe7f7 in  () at /usr/lib/libmysqld.so.18
#2  0x00007f4d3db78f2c in  () at /usr/lib/libmysqld.so.18
#3  0x00007f4d8c097075 in start_thread () at /usr/lib/libpthread.so.0
#4  0x00007f4d8da4853f in clone () at /usr/lib/libc.so.6

Thread 2 (Thread 0x7f4d57087700 (LWP 23600)):
#0  0x00007f4d8da39934 in read () at /usr/lib/libc.so.6
#1  0x00007f4d778157c2 in pa_read () at /usr/lib/pulseaudio/libpulsecommon-11.1.so
#2  0x00007f4d8472c7af in pa_mainloop_prepare () at /usr/lib/libpulse.so.0
#3  0x00007f4d8472d241 in pa_mainloop_iterate () at /usr/lib/libpulse.so.0
#4  0x00007f4d8472d301 in pa_mainloop_run () at /usr/lib/libpulse.so.0
#5  0x00007f4d8473b6ae in  () at /usr/lib/libpulse.so.0
#6  0x00007f4d7784581c in  () at /usr/lib/pulseaudio/libpulsecommon-11.1.so
#7  0x00007f4d8c097075 in start_thread () at /usr/lib/libpthread.so.0
#8  0x00007f4d8da4853f in clone () at /usr/lib/libc.so.6

Thread 1 (Thread 0x7f4d90e2eb40 (LWP 23598)):
[KCrash Handler]
#6  0x00007f4d74bf46da in get_charset (c=0xe0 <error: Cannot access memory at address 0xe0>) at ../source3/registry/reg_parse_internal.c:220
#7  0x00007f4d3d9f8e52 in thd_init_client_charset(THD*, unsigned int) () at /usr/lib/libmysqld.so.18
#8  0x00007f4d3d982864 in check_embedded_connection () at /usr/lib/libmysqld.so.18
#9  0x00007f4d3d98a6fe in mysql_real_connect () at /usr/lib/libmysqld.so.18
#10 0x00007f4d3efcf356 in MySqlEmbeddedStorage::init(QString const&) () at /usr/lib/kde4/amarok_storage-mysqlestorage.so
#11 0x00007f4d3efd017a in  () at /usr/lib/kde4/amarok_storage-mysqlestorage.so
#12 0x00007f4d9086d500 in Plugins::PluginManager::checkPluginEnabledStates() () at /usr/lib/libamaroklib.so.1
#13 0x00007f4d9086ea4e in Plugins::PluginManager::PluginManager(QObject*) () at /usr/lib/libamaroklib.so.1
#14 0x00007f4d9086eb4f in Plugins::PluginManager::instance() () at /usr/lib/libamaroklib.so.1
#15 0x00007f4d9085dc38 in MainWindow::MainWindow() () at /usr/lib/libamaroklib.so.1
#16 0x00007f4d90843feb in App::continueInit() () at /usr/lib/libamaroklib.so.1
#17 0x00007f4d908452f5 in App::App() () at /usr/lib/libamaroklib.so.1
#18 0x0000556c75889fba in  ()
#19 0x00007f4d8d97306b in __libc_start_main () at /usr/lib/libc.so.6
#20 0x0000556c7588bfca in _start ()
Comment 7 Fabian Vogt 2020-04-04 10:09:09 UTC
Both libmariadbd/libmysqld (loaded by amarok) and libsmbconf (loaded by ffmpeg) .
The library which is loaded first takes precedence, which is in this case libsmbconf through ffmpeg. If libmariadbd/libmysqld is loaded first, get_charset resolves to the right library.
To force this, just LD_PRELOAD=/usr/lib64/libmariadbd.so.19 amarok makes it work fine here.
Comment 8 nsane457 2020-04-05 00:01:02 UTC
(In reply to Fabian Vogt from comment #7)
> Both libmariadbd/libmysqld (loaded by amarok) and libsmbconf (loaded by
> ffmpeg) .
> The library which is loaded first takes precedence, which is in this case
> libsmbconf through ffmpeg. If libmariadbd/libmysqld is loaded first,
> get_charset resolves to the right library.
> To force this, just LD_PRELOAD=/usr/lib64/libmariadbd.so.19 amarok makes it
> work fine here.

Thanks. I don't have the means to test right now so I'm going to close this.