Bug 303056

Summary: Amarok crashes when trying to write a faulty playlist. Should give an error message instead.
Product: [Applications] amarok Reporter: Phil Evans <pae9>
Component: Playlists/Saved PlaylistsAssignee: Amarok Developers <amarok-bugs-dist>
Status: RESOLVED FIXED    
Severity: crash CC: bart.cerneels, c2953420
Priority: NOR    
Version: 2.5.0   
Target Milestone: 2.6   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed In: 2.6
Sentry Crash Report:
Attachments: New crash information added by DrKonqi

Description Phil Evans 2012-07-05 11:25:48 UTC
Application: amarok (2.5.0)
KDE Platform Version: 4.8.4 (4.8.4)
Qt Version: 4.8.1
Operating System: Linux 3.2.0-26-generic x86_64
Distribution: Ubuntu 12.04 LTS

-- Information about the crash:
I created a playlist, selected  "Playlist->Export playlist as" and entered a filename (ending .m3u) and Amarok crashed. The .m3u file was created by was empty. THis happens every time I try it on this machine.

The crash can be reproduced every time.

-- Backtrace:
Application: Amarok (amarok), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f6660747780 (LWP 28608))]

Thread 10 (Thread 0x7f663e257700 (LWP 28611)):
#0  0x00007f665d040b03 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007f6657c40036 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f6657c40164 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f665d9d7426 in QEventDispatcherGlib::processEvents (this=0x7f6638000900, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#4  0x00007f665d9a6c82 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#5  0x00007f665d9a6ed7 in QEventLoop::exec (this=0x7f663e256dd0, flags=...) at kernel/qeventloop.cpp:204
#6  0x00007f665d8a5fa7 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:501
#7  0x00007f665d9869ff in QInotifyFileSystemWatcherEngine::run (this=0x1b6fa70) at io/qfilesystemwatcher_inotify.cpp:248
#8  0x00007f665d8a8fcb in QThreadPrivate::start (arg=0x1b6fa70) at thread/qthread_unix.cpp:298
#9  0x00007f665975de9a in start_thread (arg=0x7f663e257700) at pthread_create.c:308
#10 0x00007f665d04c4bd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()

Thread 9 (Thread 0x7f6637bd3700 (LWP 28612)):
#0  0x00007f665d040b03 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007f6657c40036 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f6657c40164 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f665d9d7426 in QEventDispatcherGlib::processEvents (this=0x7f66300008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#4  0x00007f665d9a6c82 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#5  0x00007f665d9a6ed7 in QEventLoop::exec (this=0x7f6637bd2e00, flags=...) at kernel/qeventloop.cpp:204
#6  0x00007f665d8a5fa7 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:501
#7  0x00007f665d8a8fcb in QThreadPrivate::start (arg=0x1e3b280) at thread/qthread_unix.cpp:298
#8  0x00007f665975de9a in start_thread (arg=0x7f6637bd3700) at pthread_create.c:308
#9  0x00007f665d04c4bd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#10 0x0000000000000000 in ?? ()

Thread 8 (Thread 0x7f6636733700 (LWP 28613)):
#0  0x00007f665d05a0d4 in pthread_mutex_lock (mutex=0x7f6628000a60) at forward.c:182
#1  0x00007f6657c7b5a1 in g_mutex_lock () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f6657c3f1df in g_main_context_acquire () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f6657c3ff04 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007f6657c40164 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007f665d9d7426 in QEventDispatcherGlib::processEvents (this=0x7f66280008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#6  0x00007f665d9a6c82 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#7  0x00007f665d9a6ed7 in QEventLoop::exec (this=0x7f6636732e00, flags=...) at kernel/qeventloop.cpp:204
#8  0x00007f665d8a5fa7 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:501
#9  0x00007f665d8a8fcb in QThreadPrivate::start (arg=0x1e6d7b0) at thread/qthread_unix.cpp:298
#10 0x00007f665975de9a in start_thread (arg=0x7f6636733700) at pthread_create.c:308
#11 0x00007f665d04c4bd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#12 0x0000000000000000 in ?? ()

Thread 7 (Thread 0x7f6635326700 (LWP 28615)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f665d8a94db in wait (time=18446744073709551615, this=0x1ebc650) at thread/qwaitcondition_unix.cpp:86
#2  QWaitCondition::wait (this=<optimized out>, mutex=0x1ebc7d0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:158
#3  0x00007f665acf20eb in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x1ebc500, th=0x1ebe410) at ../../../threadweaver/Weaver/WeaverImpl.cpp:365
#4  0x00007f665acf49db in ThreadWeaver::WorkingHardState::applyForWork (this=0x1ebc8a0, th=0x1ebe410) at ../../../threadweaver/Weaver/WorkingHardState.cpp:71
#5  0x00007f665acf49f4 in ThreadWeaver::WorkingHardState::applyForWork (this=0x1ebc8a0, th=0x1ebe410) at ../../../threadweaver/Weaver/WorkingHardState.cpp:74
#6  0x00007f665acf49f4 in ThreadWeaver::WorkingHardState::applyForWork (this=0x1ebc8a0, th=0x1ebe410) at ../../../threadweaver/Weaver/WorkingHardState.cpp:74
#7  0x00007f665acf49f4 in ThreadWeaver::WorkingHardState::applyForWork (this=0x1ebc8a0, th=0x1ebe410) at ../../../threadweaver/Weaver/WorkingHardState.cpp:74
#8  0x00007f665acf384f in ThreadWeaver::ThreadRunHelper::run (this=0x7f6635325e20, parent=0x1ebc500, th=0x1ebe410) at ../../../threadweaver/Weaver/Thread.cpp:87
#9  0x00007f665acf38db in ThreadWeaver::Thread::run (this=0x1ebe410) at ../../../threadweaver/Weaver/Thread.cpp:142
#10 0x00007f665d8a8fcb in QThreadPrivate::start (arg=0x1ebe410) at thread/qthread_unix.cpp:298
#11 0x00007f665975de9a in start_thread (arg=0x7f6635326700) at pthread_create.c:308
#12 0x00007f665d04c4bd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#13 0x0000000000000000 in ?? ()

Thread 6 (Thread 0x7f6627975700 (LWP 28616)):
#0  read () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007f6657c7a8cf in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f6657c3fba4 in g_main_context_check () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f6657c3ffd6 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007f6657c40164 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007f665d9d7426 in QEventDispatcherGlib::processEvents (this=0x7f661c0008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#6  0x00007f665d9a6c82 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#7  0x00007f665d9a6ed7 in QEventLoop::exec (this=0x7f6627974dd0, flags=...) at kernel/qeventloop.cpp:204
#8  0x00007f665d8a5fa7 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:501
#9  0x00007f665d9869ff in QInotifyFileSystemWatcherEngine::run (this=0x21757a0) at io/qfilesystemwatcher_inotify.cpp:248
#10 0x00007f665d8a8fcb in QThreadPrivate::start (arg=0x21757a0) at thread/qthread_unix.cpp:298
#11 0x00007f665975de9a in start_thread (arg=0x7f6627975700) at pthread_create.c:308
#12 0x00007f665d04c4bd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#13 0x0000000000000000 in ?? ()

Thread 5 (Thread 0x7f6626d4c700 (LWP 28617)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f665d8a94db in wait (time=18446744073709551615, this=0x1ebc650) at thread/qwaitcondition_unix.cpp:86
#2  QWaitCondition::wait (this=<optimized out>, mutex=0x1ebc7d0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:158
#3  0x00007f665acf20eb in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x1ebc500, th=0x2260d60) at ../../../threadweaver/Weaver/WeaverImpl.cpp:365
#4  0x00007f665acf49db in ThreadWeaver::WorkingHardState::applyForWork (this=0x1ebc8a0, th=0x2260d60) at ../../../threadweaver/Weaver/WorkingHardState.cpp:71
#5  0x00007f665acf49f4 in ThreadWeaver::WorkingHardState::applyForWork (this=0x1ebc8a0, th=0x2260d60) at ../../../threadweaver/Weaver/WorkingHardState.cpp:74
#6  0x00007f665acf384f in ThreadWeaver::ThreadRunHelper::run (this=0x7f6626d4be20, parent=0x1ebc500, th=0x2260d60) at ../../../threadweaver/Weaver/Thread.cpp:87
#7  0x00007f665acf38db in ThreadWeaver::Thread::run (this=0x2260d60) at ../../../threadweaver/Weaver/Thread.cpp:142
#8  0x00007f665d8a8fcb in QThreadPrivate::start (arg=0x2260d60) at thread/qthread_unix.cpp:298
#9  0x00007f665975de9a in start_thread (arg=0x7f6626d4c700) at pthread_create.c:308
#10 0x00007f665d04c4bd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()

Thread 4 (Thread 0x7f662654b700 (LWP 28618)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f665d8a94db in wait (time=18446744073709551615, this=0x1ebc650) at thread/qwaitcondition_unix.cpp:86
#2  QWaitCondition::wait (this=<optimized out>, mutex=0x1ebc7d0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:158
#3  0x00007f665acf20eb in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x1ebc500, th=0x225f060) at ../../../threadweaver/Weaver/WeaverImpl.cpp:365
#4  0x00007f665acf49db in ThreadWeaver::WorkingHardState::applyForWork (this=0x1ebc8a0, th=0x225f060) at ../../../threadweaver/Weaver/WorkingHardState.cpp:71
#5  0x00007f665acf49f4 in ThreadWeaver::WorkingHardState::applyForWork (this=0x1ebc8a0, th=0x225f060) at ../../../threadweaver/Weaver/WorkingHardState.cpp:74
#6  0x00007f665acf384f in ThreadWeaver::ThreadRunHelper::run (this=0x7f662654ae20, parent=0x1ebc500, th=0x225f060) at ../../../threadweaver/Weaver/Thread.cpp:87
#7  0x00007f665acf38db in ThreadWeaver::Thread::run (this=0x225f060) at ../../../threadweaver/Weaver/Thread.cpp:142
#8  0x00007f665d8a8fcb in QThreadPrivate::start (arg=0x225f060) at thread/qthread_unix.cpp:298
#9  0x00007f665975de9a in start_thread (arg=0x7f662654b700) at pthread_create.c:308
#10 0x00007f665d04c4bd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7f6625d4a700 (LWP 28619)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f665d8a94db in wait (time=18446744073709551615, this=0x1ebc650) at thread/qwaitcondition_unix.cpp:86
#2  QWaitCondition::wait (this=<optimized out>, mutex=0x1ebc7d0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:158
#3  0x00007f665acf20eb in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x1ebc500, th=0x2210df0) at ../../../threadweaver/Weaver/WeaverImpl.cpp:365
#4  0x00007f665acf49db in ThreadWeaver::WorkingHardState::applyForWork (this=0x1ebc8a0, th=0x2210df0) at ../../../threadweaver/Weaver/WorkingHardState.cpp:71
#5  0x00007f665acf384f in ThreadWeaver::ThreadRunHelper::run (this=0x7f6625d49e20, parent=0x1ebc500, th=0x2210df0) at ../../../threadweaver/Weaver/Thread.cpp:87
#6  0x00007f665acf38db in ThreadWeaver::Thread::run (this=0x2210df0) at ../../../threadweaver/Weaver/Thread.cpp:142
#7  0x00007f665d8a8fcb in QThreadPrivate::start (arg=0x2210df0) at thread/qthread_unix.cpp:298
#8  0x00007f665975de9a in start_thread (arg=0x7f6625d4a700) at pthread_create.c:308
#9  0x00007f665d04c4bd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#10 0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7f6624924700 (LWP 28622)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f6659d37222 in ?? () from /usr/lib/x86_64-linux-gnu/libQtScript.so.4
#2  0x00007f6659d37259 in ?? () from /usr/lib/x86_64-linux-gnu/libQtScript.so.4
#3  0x00007f665975de9a in start_thread (arg=0x7f6624924700) at pthread_create.c:308
#4  0x00007f665d04c4bd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#5  0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f6660747780 (LWP 28608)):
[KCrash Handler]
#6  0x00007f665f561f81 in Playlists::M3UPlaylist::save (this=<optimized out>, location=..., relative=false) at ../../src/core-impl/playlists/types/file/m3u/M3UPlaylist.cpp:234
#7  0x00007f665f56e7dc in Playlists::exportPlaylistFile (list=..., path=..., relative=false, queued=...) at ../../src/core-impl/playlists/types/file/PlaylistFileSupport.cpp:184
#8  0x00007f665f48c648 in Playlist::ProxyBase::exportPlaylist (this=0x1e72d40, path=..., relative=false) at ../../src/playlist/proxymodels/ProxyBase.cpp:107
#9  0x00007f665f745c47 in MainWindow::exportPlaylist (this=<optimized out>) at ../../src/MainWindow.cpp:515
#10 0x00007f665f751c25 in MainWindow::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at ./MainWindow.moc:116
#11 0x00007f665d9bc281 in QMetaObject::activate (sender=0x1fc4740, m=<optimized out>, local_signal_index=<optimized out>, argv=0x7fff771046f0) at kernel/qobject.cpp:3547
#12 0x00007f665e39c132 in QAction::triggered (this=<optimized out>, _t1=false) at .moc/release-shared/moc_qaction.cpp:277
#13 0x00007f665e39c31f in QAction::activate (this=0x1fc4740, event=<optimized out>) at kernel/qaction.cpp:1257
#14 0x00007f665e7ee119 in QMenuPrivate::activateCausedStack (this=0x216e4e0, causedStack=..., action=0x1fc4740, action_e=QAction::Trigger, self=true) at widgets/qmenu.cpp:1028
#15 0x00007f665e7f4272 in QMenuPrivate::activateAction (this=0x216e4e0, action=0x1fc4740, action_e=QAction::Trigger, self=true) at widgets/qmenu.cpp:1120
#16 0x00007f66602072d0 in KMenu::mouseReleaseEvent (this=0x2170030, e=0x7fff771052c0) at ../../kdeui/widgets/kmenu.cpp:464
#17 0x00007f665e3f3144 in QWidget::event (this=0x2170030, event=0x7fff771052c0) at kernel/qwidget.cpp:8362
#18 0x00007f665e7f580b in QMenu::event (this=0x2170030, e=0x7fff771052c0) at widgets/qmenu.cpp:2469
#19 0x00007f665e3a2894 in notify_helper (e=0x7fff771052c0, receiver=0x2170030, this=0x1487000) at kernel/qapplication.cpp:4559
#20 QApplicationPrivate::notify_helper (this=0x1487000, receiver=0x2170030, e=0x7fff771052c0) at kernel/qapplication.cpp:4531
#21 0x00007f665e3a80bf in QApplication::notify (this=<optimized out>, receiver=0x2170030, e=0x7fff771052c0) at kernel/qapplication.cpp:4102
#22 0x00007f66601469e6 in KApplication::notify (this=0x7fff77105fa0, receiver=0x2170030, event=0x7fff771052c0) at ../../kdeui/kernel/kapplication.cpp:311
#23 0x00007f665d9a7e9c in QCoreApplication::notifyInternal (this=0x7fff77105fa0, receiver=0x2170030, event=0x7fff771052c0) at kernel/qcoreapplication.cpp:876
#24 0x00007f665e3a3862 in sendEvent (event=<optimized out>, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#25 QApplicationPrivate::sendMouseEvent (receiver=0x2170030, event=0x7fff771052c0, alienWidget=0x0, nativeWidget=0x2170030, buttonDown=0x0, lastMouseReceiver=..., spontaneous=true) at kernel/qapplication.cpp:3170
#26 0x00007f665e4232c1 in QETWidget::translateMouseEvent (this=0x2170030, event=<optimized out>) at kernel/qapplication_x11.cpp:4551
#27 0x00007f665e421bae in QApplication::x11ProcessEvent (this=0x7fff77105fa0, event=0x7fff77105b90) at kernel/qapplication_x11.cpp:3732
#28 0x00007f665e44b0d2 in x11EventSourceDispatch (s=0x147c8b0, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#29 0x00007f6657c3fd53 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#30 0x00007f6657c400a0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#31 0x00007f6657c40164 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#32 0x00007f665d9d73bf in QEventDispatcherGlib::processEvents (this=0x12edad0, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#33 0x00007f665e44ad5e in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#34 0x00007f665d9a6c82 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#35 0x00007f665d9a6ed7 in QEventLoop::exec (this=0x7fff77105f30, flags=...) at kernel/qeventloop.cpp:204
#36 0x00007f665d9abf67 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1148
#37 0x0000000000408e4e in main (argc=1, argv=0x7fff77108428) at ../../src/main.cpp:303

Reported using DrKonqi
Comment 1 Myriam Schweingruber 2012-07-09 07:54:33 UTC
What if you don't add an extension? Normally Amarok adds the extension itself. Also where do you save the playlist to?
Comment 2 Phil Evans 2012-07-09 08:13:40 UTC
Hi,
The crash occurs every time however I save it. It was beign written to my /home area. However I just noticed that when I change the playlist I want to save it doesn't crash.

It appears to be a single track that was causing the problem. The track plays fine, but it had no entry in the "Artist" or "Album artist" field of the ID3 tag, for some reason. Having added an artist, the playlist now exports OK. I don't know why the ID3 tag had no artist, but I assume Amarok should raise an error if missing ID3 info means it can't export a track, rather than crashing!
Comment 3 Myriam Schweingruber 2012-07-10 18:17:14 UTC
Thank you for the fast feedback. Changing the title accordingly.
Comment 4 c2953420 2012-07-19 15:18:48 UTC
Created attachment 72631 [details]
New crash information added by DrKonqi

amarok (2.5.0) on KDE Platform 4.8.4 (4.8.4) using Qt 4.8.1

- What I was doing when the application crashed:
Wanted to save my playlist, to which I added some new songs, by overwriting an existing m3u file, but Amarok crashed every time I tried to do it. One of the new songs didn't have an artist tag. After adding "Unkown Artist" as artist using easyTAG, saving was possible, and Amarok didn't crash.

-- Backtrace (Reduced):
#6  0x00007fbb07b4bf81 in Playlists::M3UPlaylist::save (this=<optimized out>, location=..., relative=false) at ../../src/core-impl/playlists/types/file/m3u/M3UPlaylist.cpp:234
#7  0x00007fbb07b587dc in Playlists::exportPlaylistFile (list=..., path=..., relative=false, queued=...) at ../../src/core-impl/playlists/types/file/PlaylistFileSupport.cpp:184
#8  0x00007fbb07a76648 in Playlist::ProxyBase::exportPlaylist (this=0x2d7ece0, path=..., relative=false) at ../../src/playlist/proxymodels/ProxyBase.cpp:107
#9  0x00007fbb07d2fc47 in MainWindow::exportPlaylist (this=<optimized out>) at ../../src/MainWindow.cpp:515
#10 0x00007fbb07d3bc25 in MainWindow::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at ./MainWindow.moc:116
Comment 5 Ralf Engels 2012-08-08 15:07:44 UTC
Git commit 217fbb7b1ac6a3209da2c0716f5fb46ab93cfa70 by Ralf Engels.
Committed on 08/08/2012 at 16:54.
Pushed by rengels into branch 'master'.

Fix Amarok crashes when trying to write a faulty playlist.
FIXED-IN: 2.7

M  +1    -0    ChangeLog
M  +2    -1    src/core-impl/playlists/types/file/m3u/M3UPlaylist.cpp

http://commits.kde.org/amarok/217fbb7b1ac6a3209da2c0716f5fb46ab93cfa70