TODO-list for amaroK
======================
<nick>  == reported by
-->nick == assigned to
#x      == sequential bug number,
           #183 being the highest available (take this one for your next bug and increase here)


SHORT-TERM (URGENT):

          <markey> When the KDE color scheme is changed while amaroK is running, all toolbar buttons
                   (those with text) lose their texts.

          <muesli> Take care of KToolbars in Context/Collection for palette changes

          <mxcl>   With one track in pls and repeat and random mode on, amaroK crashes at track end.

  ADD     <markey> We must add a FAQ about dmix software mixing and its setup. "amaroK blocks the sound
                   device" is one of the top user complaints. This FAQ should be put into a promiment
                   place, perhaps also in README.

          <markey> Check TagLib autoconf and makefile stuff. I have a feeling the problem with picking
                   up old versions could be on our side.

          <mxcl>   You can't add or drag albums from the context browser anymore

          <markey> "Handbook" and "About" menu entries are disabled (greyed out) for some people.
                   For the life of me I can't reproduce this, even with KDE 3.3.
          <madp8>  After merge of Head into make_it_cool the About amaroK entry works again, but now Report Bug is disabled.

  ADD 180 <muesli> Show "Artist - Song" for Various Artist folder.

  FIX 161 <markey> Configure prints "Good - your configure finished. Start make now" even when amaroK
                   will _not_ be built. Confusing..
                   I don't think we can fix this.

  FIX 134 <markey> Ctrl-C in Playlist (and other Ctrl shortcuts) for copying title doesn't work, because the
                   event gets eaten by another widget.


MID-TERM:

  CHG     <markey> When building collection, use a 2-phase progressbar: count to 100 for tagreading, and
                   then count to 100 again for database inserts.

  CHG     <markey> Consider following the system tray spec on http://www.freedesktop.org/Standards/systemtray-spec.
                   Apparently this makes it possible to make the tray KDE and GNOME compatible.

          <mxcl>   Context Browser doesn't update images when you fetch them using the Cover Manager.

  CHG     <markey> Make CollectionDB a singleton. Why do we create a fucking object for each db access?
                   This SUCKS. Also, you can't connect to CollectionDB signals currently, cause there are
                   many instances.

  CHG 173 <markey> Move ui files into seperate folder, and compile as lib. Currently, when you change one
                   file, you need to rebuild the world --> suckage

  ADD 148 <markey> AudioCD support for gst engine (cdparanoia ! *sink). -->markey

  ADD 143 <mxcl>   DCOP interface for ContextBrowser

  CHG 141 <markey> For critical errors, use warning dialogs instead of stderr output. (many distros build
                   with NDEBUG, and users are prone to missing debug messages).

  FIX 121 <markey> We should cut down on unnecessary/redundant debug output/warnings (noise).

  ADD 105 <markey> Make ArtsEngine depend not only on kdemultimedia-devel, but also on kdemultimedia,
                   since arts itself contains these crappy decoders and ppl come complain about bad sound.
                   Update: Would be even better to detect the mpeglib arts-plugins directly, since some
                   distros offer them as a separate package.

  FIX 131 <mxcl>   Grue reports with aRtsengine, amarok *, only loads 15-17 entries in dir with ~100,
                   media type is unimportant (happened for oggs, mp3s and flacs, mixed and otherwise)
                   Nobody else can replicate typically.

  ADD 127 <mxcl>   Connect PlayerWindow navigation buttons to KAction enabled states

  ADD 104 <mxcl>   Perhaps a nice idea: when you drag playlistItems to a branch in the collection browser
                   it prompts to change the track's tags, so drag a track to the "moolaaa" album and that
                   track get's it's album tag changed to "moolaaa" and is inserted into the branch, so the user
                   know's what has happened.

  ADD 100 <mxcl>   We have several areas where we ask for paths, it would be good to make it so these
                   always reflect the most recent path the user has used, eg looking in /my/music/bands
                   in the FileBrowser means when you open the SearchBrowser this is the search path
                   would be easy with a KConfig XT key. May be nice to do this with the URL histories too.

  ADD  96 <mxcl>   User asked for a CTRL-J itty-bitty dialog that allows you to jump to a specific part
                   of a track. I'll see if I can do it with tiny amount of code -->mxcl

  FIX  87 <muesli> Don't rely on KDE timeouts to see whether a file is accessible or not,
                   since this really sucks for disconnected network shares. XMMS handles
                   this way better and it really is a problem in userland. maybe a thread
                   helps, which simply tries to fopen() the file. if this task hasn't been
                   finished in (let's say) 3 seconds, jump to the next song. XMMS even
                   remembers such files and their folders, so that it's not going to open
                   another file from that folder for the next few minutes. what about hdd
                   sleep-timeouts? opinions?

  CHG  78 <mxcl>   Determine some behavior for the clear/shuffle/etc. buttons when a search is in action
                   clear   -> only clear the stuff that was searched for?
                   shuffle -> stop the search and do normal shuffle?
                   ADDitionally what to do when user rearranges a set of items that are the search result?
          <larson> No big deal to me as long as the behaviour is consistent. I.e. if shuffle shuffles
                   the search, then clear should clear the search only, and visa versa.

  FIX  76 <larson> Make playlist toolbar buttons toggle like the playerwidget buttons.

  ADD  75          Toolbar button in FileBrowser for switching recursive directory reading.

  FIX  73 <mxcl>   Can't resize newly displayed columns if they are hidden at beginning of session -->mxcl

  ADD  39 <markey> Add playlist column for media-type (mp3, ogg, mod, etc).
                   Display type of media next to bitrate (<berkus> i moved it here, seems its the same as above, no?)

  ADD  28 <muesli> Add an option "clean up playlist on startup".
          <mxcl>   Do you mean remove duplicates or dead entries etc. ? Cool.

  ADD     <mxcl>   Option: don't crossfade for sequential tracks on same album. Comments? -->mxcl
                   Of course, there would still be the up to 150ms gap, but we can fix that some other time..
          <markey> Please clarify: is this the same as BR #75388 ?
          <mxcl>   No, this is just to make crossfading not ruin album transitions

  FIX              Add dirs to combo history when user adds a track from that dir to the playlist.

  ADD              "Show playlist" to the right click menu, redundant but necessary.

  ADD              More KTips, better KTips, somehow use the "Did you know" tip dialog (eg kmail, gideon, etc.) -->mxcl

  ADD              History to add dialog, or implement better system for adding urls etc.

  ADD              Option to automatically adjust column widths.

  ADD              Option to implicitly sort playlist by { track, album } (on drop only) -->mxcl

  ADD              "Add item"-dialog should support multiple selections.

  ADD     <berkus> Playmode indication button in main widget (repeat track/pl/shuffle), clickable.


LONG-TERM:

  ADD  93 <markey> New engine: using ALSA (maybe OSS, too) and XMMS plugins for decoding.

  ADD  32 <markey> Icecast metadata support (uses UDP channel) -->markey

  CHG  21 <markey> Use more accurate interpolation for analyzers (cubic or spline)

  ADD              Tabbed playlists.
                   Pro: it's convenient to have several playlists
                   Contra: the playlist is getting cluttered enough as it is!

  ADD              Make windows magnetic / sticking together (difficult).

  ADD              Playlist export (generate text or html document from playlist entries)

  ADD              Make PlayerWidget shadeable (like XMMS)
          <mxcl>   Doesn't the systray provide this functionality already?
          <berkus> No it doesn't, double click the winamp/xmms window and see for yourself
          <larson> How do you propose this should work? Since we are handled by kwin and have
                   normal window borders, double clicking the titlebar is handled by kwin. Also, should
                   the playlist be shadable?

  ADD              Support for compressed archives / tarballs

  ADD     <mxcl>   Implement beat detection (thread?), interface should glow/move to
                   the beat, visualisations have access to beat/bpm info.

  ADD              Audio system info widget, showing all available codecs and similar info.

  CHG              Resizable playerwidget, like in Winamp3.


IDEAS:

  ADD              Bookmarks inside of tracks (good for very long tracks), and nifty bookmark browser

  ADD              Using filelight (as a kpart maybe) for a graphical representation of the playlist. so
                   you could see at first glance how the altogether playing time is divided into different
                   albums, tunes and so on.


DISCUSSING:

          <markey> I'd very much appreciate people keeping line length in all amaroK sources/textfiles
                   at 110 characters max. Longer lines cause horrible dynamic line breaks or scrolling when
                   you only have limited screen width, like in console or kdevelop. pretty please with icing =)
          <mxcl>   I added a 110 char marker to my editor (since ages ago). However I don't always keep to it.
                   Breaking lines is most often ugly :( Mostly I do though. You can praise me now ;)


DO-NOT-IMPLEMENT:

  FIX  61 <markey> Allow removing of playlist items by dragging back into browser.
          <larson> I think this is really weird. When I drag something I expect that someting to be
                   ADDed or opened in the target. Not removed from the sender.
                   (RFC: is this still appropriate or would it be misleading?)
          <muesli> imho, it's misleading and not hid-compatible. i would rather
                   expect that file to be copied to the browser's current directory.

  ADD              "Hide playlist when main widget is not active" option (?? comments please: )
          <berkus> Noo, we have it hiding into tray, thats enough (imagine how much flashing will be
                   if i drag mouse around with "focus follows mouse" on - this is the one i use all the time)
          <mxcl>   Hence it's an option, you'd not use it with focus follows mouse. But it was just an idea
                   anyway.. dunno if I like the sound of it anymore either.


BACKTRACE/DEBUG


From coolo:

#0  0x414119a2 in QListViewItem::sortChildItems (this=0x83d08d8, column=1, ascending=true)
    at widgets/qlistview.cpp:1418
#1  0x41412335 in QListViewItem::enforceSortOrder (this=0x83d08d8) at widgets/qlistview.cpp:1719
#2  0x4141eae8 in QListView::firstChild (this=0x8397ec8) at widgets/qlistview.cpp:5872
#3  0x41423e67 in QListViewItemIterator (this=0xbfffe260, lv=0x8397ec8, iteratorFlags=1)
    at widgets/qlistview.cpp:7452
#4  0x080e8035 in MyIterator (this=0xbfffe260, view=0x8397ec8, flags=1)
    at /home/coolo/prod/kdeextragear-1/amarok/src/playlist.cpp:67
#5  0x080e06f0 in Playlist::playNextTrack (this=0x8397ec8)
    at /home/coolo/prod/kdeextragear-1/amarok/src/playlist.cpp:366
#6  0x080e0b05 in Playlist::playCurrentTrack (this=0x8397ec8)
    at /home/coolo/prod/kdeextragear-1/amarok/src/playlist.cpp:440
#7  0x080e6cb0 in Playlist::qt_invoke (this=0x8397ec8, _id=119, _o=0xbfffe360) at playlist.moc:218
#8  0x4132a7c3 in QObject::activate_signal (this=0x81be4a0, clist=0x83d96b8, o=0xbfffe360)
    at kernel/qobject.cpp:2357
#9  0x4132a662 in QObject::activate_signal (this=0x81be4a0, signal=3) at kernel/qobject.cpp:2326
#10 0x080c7a0c in EngineController::orderCurrent (this=0x81be4a0) at enginecontroller.moc:174
#11 0x080c6d9e in EngineController::play (this=0x81be4a0)
    at /home/coolo/prod/kdeextragear-1/amarok/src/enginecontroller.cpp:237
#12 0x080c7b08 in EngineController::qt_invoke (this=0x81be4a0, _id=4, _o=0xbfffe470) at enginecontroller.moc:194
#13 0x4132a7c3 in QObject::activate_signal (this=0x83754c8, clist=0x836ea00, o=0xbfffe470)
    at kernel/qobject.cpp:2357
#14 0x4132a662 in QObject::activate_signal (this=0x83754c8, signal=2) at kernel/qobject.cpp:2326
#15 0x40b2e7b2 in KAction::activated (this=0x83754c8) at kaction.moc:157
#16 0x40b2e16f in KAction::slotActivated (this=0x83754c8) at /home/coolo/prod/kdelibs/kdeui/kaction.cpp:1073
#17 0x40b2eab6 in KAction::qt_invoke (this=0x83754c8, _id=14, _o=0xbfffe580) at kaction.moc:181
#18 0x4132a7c3 in QObject::activate_signal (this=0x8391598, clist=0x83a9958, o=0xbfffe580)
    at kernel/qobject.cpp:2357
#19 0x41680ffc in QSignal::signal (this=0x8391598, t0=@0x83915c0) at .moc/debug-shared-mt/moc_qsignal.cpp:100
#20 0x41347f73 in QSignal::activate (this=0x8391598) at kernel/qsignal.cpp:212
#21 0x4143f8c6 in QPopupMenu::mouseReleaseEvent (this=0x83670e8, e=0xbfffe990) at widgets/qpopupmenu.cpp:1690
#22 0x41362a5f in QWidget::event (this=0x83670e8, e=0xbfffe990) at kernel/qwidget.cpp:4673
#23 0x412c7a6f in QApplication::internalNotify (this=0xbfffee20, receiver=0x83670e8, e=0xbfffe990)
    at kernel/qapplication.cpp:2635
#24 0x412c7225 in QApplication::notify (this=0xbfffee20, receiver=0x83670e8, e=0xbfffe990)
    at kernel/qapplication.cpp:2421
#25 0x40de8962 in KApplication::notify (this=0xbfffee20, receiver=0x83670e8, event=0xbfffe990)
    at /home/coolo/prod/kdelibs/kdecore/kapplication.cpp:518
#26 0x4125d4d1 in QApplication::sendSpontaneousEvent (receiver=0x83670e8, event=0xbfffe990) at qapplication.h:494
---Type <return> to continue, or q <return> to quit---
#27 0x41256252 in QETWidget::translateMouseEvent (this=0x83670e8, event=0xbfffed20)
    at kernel/qapplication_x11.cpp:4230
#28 0x41254133 in QApplication::x11ProcessEvent (this=0xbfffee20, event=0xbfffed20)
    at kernel/qapplication_x11.cpp:3439
#29 0x4126e748 in QEventLoop::processEvents (this=0x8313298, flags=4) at kernel/qeventloop_x11.cpp:192
#30 0x412dbc8a in QEventLoop::enterLoop (this=0x8313298) at kernel/qeventloop.cpp:198
#31 0x412dbba6 in QEventLoop::exec (this=0x8313298) at kernel/qeventloop.cpp:145
#32 0x412c7bef in QApplication::exec (this=0xbfffee20) at kernel/qapplication.cpp:2758
#33 0x08122ee0 in main (argc=1, argv=0xbfffefb4)
    at /home/coolo/prod/kdeextragear-1/amarok/src/amarokcore/main.cpp:66

amarok: [void ContextBrowser::setStyleSheet()]
amarok: Initial Color Properties: s:255 v:128
amarok: Final Colour Properties: s:125 v:128
amarok: KMultiTabBarTab::updateState(): setting text to an empty QString***************
amarok:     Time: 46.16s
amarok:   Init: CollectionBrowser
amarok: [CollectionView::CollectionView(CollectionBrowser*)]
amarok: [browserBar] Initialisation statistics:
amarok:   Init: ContextBrowser
amarok: [ContextBrowser::ContextBrowser(const char*)]
amarok: [void ContextBrowser::setStyleSheet()]
amarok: Initial Color Properties: s:255 v:128
amarok: Final Colour Properties: s:125 v:128
amarok: [void CollectionView::renderView()]
khtml (xml):  using compatibility parseMode
==13315== Invalid read of size 1
==13315==    at 0x76D08A75: memcpy (in /lib/tls/libc.so.6)
==13315==    by 0x815D168: balance_nonroot (btree.c:3277)
==13315==    by 0x815D9E9: balance (btree.c:3477)
==13315==    by 0x815DE58: sqlite3BtreeInsert (btree.c:3582)
==13315==    by 0x81838B9: sqlite3VdbeExec (vdbe.c:3026)
==13315==    by 0x814D8E3: sqlite3_step (vdbeapi.c:183)
==13315==    by 0x80A3877: CollectionDB::execSql(QString const&, QStringList*, QStringList*, bool) (collectiondb.cpp:606)
==13315==    by 0x80A7205: CollectionDB::retrieveFirstLevel(QString, QString, QString, QString, QStringList*, QStringList*) (collectiondb.cpp:1027)
==13315==    by 0x809A476: CollectionView::renderView() (collectionbrowser.cpp:384)
==13315==    by 0x809B6C8: CollectionView::cat3Menu(int, bool) (collectionbrowser.cpp:583)
==13315==    by 0x809851A: CollectionBrowser::CollectionBrowser(char const*) (collectionbrowser.cpp:129)
==13315==    by 0x80FB42F: void PlaylistWindow::addBrowser<CollectionBrowser>(char const*, QString const&, QString const&) (playlistwindow.cpp:104)
==13315==    by 0x80F994A: PlaylistWindow::init() (playlistwindow.cpp:319)
==13315==    by 0x808DB58: App::App() (app.cpp:99)
==13315==  Address 0x77A235B0 is 4 bytes before a block of size 1016 alloc'd
==13315==    at 0x7501E8B4: malloc (vg_replace_malloc.c:105)
==13315==    by 0x814BC8A: sqlite3MallocRaw (util.c:294)
==13315==    by 0x815DC3F: sqlite3BtreeInsert (btree.c:3557)
==13315==    by 0x81838B9: sqlite3VdbeExec (vdbe.c:3026)
==13315==    by 0x814D8E3: sqlite3_step (vdbeapi.c:183)
==13315==    by 0x80A3877: CollectionDB::execSql(QString const&, QStringList*, QStringList*, bool) (collectiondb.cpp:606)
==13315==    by 0x80A7205: CollectionDB::retrieveFirstLevel(QString, QString, QString, QString, QStringList*, QStringList*) (collectiondb.cpp:1027)
==13315==    by 0x809A476: CollectionView::renderView() (collectionbrowser.cpp:384)
==13315==    by 0x809B6C8: CollectionView::cat3Menu(int, bool) (collectionbrowser.cpp:583)
==13315==    by 0x809851A: CollectionBrowser::CollectionBrowser(char const*) (collectionbrowser.cpp:129)
==13315==    by 0x80FB42F: void PlaylistWindow::addBrowser<CollectionBrowser>(char const*, QString const&, QString const&) (playlistwindow.cpp:104)
==13315==    by 0x80F994A: PlaylistWindow::init() (playlistwindow.cpp:319)
==13315==    by 0x808DB58: App::App() (app.cpp:99)
==13315==    by 0x8122ECD: main (main.cpp:64)
==13315==
==13315== Invalid read of size 2
==13315==    at 0x76D08A7A: memcpy (in /lib/tls/libc.so.6)
==13315==    by 0x815D168: balance_nonroot (btree.c:3277)
==13315==    by 0x815D9E9: balance (btree.c:3477)
==13315==    by 0x815DE58: sqlite3BtreeInsert (btree.c:3582)
==13315==    by 0x81838B9: sqlite3VdbeExec (vdbe.c:3026)
==13315==    by 0x814D8E3: sqlite3_step (vdbeapi.c:183)
==13315==    by 0x80A3877: CollectionDB::execSql(QString const&, QStringList*, QStringList*, bool) (collectiondb.cpp:606)
==13315==    by 0x80A7205: CollectionDB::retrieveFirstLevel(QString, QString, QString, QString, QStringList*, QStringList*) (collectiondb.cpp:1027)
==13315==    by 0x809A476: CollectionView::renderView() (collectionbrowser.cpp:384)
==13315==    by 0x809B6C8: CollectionView::cat3Menu(int, bool) (collectionbrowser.cpp:583)
==13315==    by 0x809851A: CollectionBrowser::CollectionBrowser(char const*) (collectionbrowser.cpp:129)
==13315==    by 0x80FB42F: void PlaylistWindow::addBrowser<CollectionBrowser>(char const*, QString const&, QString const&) (playlistwindow.cpp:104)
==13315==    by 0x80F994A: PlaylistWindow::init() (playlistwindow.cpp:319)
==13315==    by 0x808DB58: App::App() (app.cpp:99)
==13315==  Address 0x77A235B1 is 3 bytes before a block of size 1016 alloc'd
==13315==    at 0x7501E8B4: malloc (vg_replace_malloc.c:105)
==13315==    by 0x814BC8A: sqlite3MallocRaw (util.c:294)
==13315==    by 0x815DC3F: sqlite3BtreeInsert (btree.c:3557)
==13315==    by 0x81838B9: sqlite3VdbeExec (vdbe.c:3026)
==13315==    by 0x814D8E3: sqlite3_step (vdbeapi.c:183)
==13315==    by 0x80A3877: CollectionDB::execSql(QString const&, QStringList*, QStringList*, bool) (collectiondb.cpp:606)
==13315==    by 0x80A7205: CollectionDB::retrieveFirstLevel(QString, QString, QString, QString, QStringList*, QStringList*) (collectiondb.cpp:1027)
==13315==    by 0x809A476: CollectionView::renderView() (collectionbrowser.cpp:384)
==13315==    by 0x809B6C8: CollectionView::cat3Menu(int, bool) (collectionbrowser.cpp:583)
==13315==    by 0x809851A: CollectionBrowser::CollectionBrowser(char const*) (collectionbrowser.cpp:129)
==13315==    by 0x80FB42F: void PlaylistWindow::addBrowser<CollectionBrowser>(char const*, QString const&, QString const&) (playlistwindow.cpp:104)
==13315==    by 0x80F994A: PlaylistWindow::init() (playlistwindow.cpp:319)
==13315==    by 0x808DB58: App::App() (app.cpp:99)
==13315==    by 0x8122ECD: main (main.cpp:64)
==13315==
==13315== Invalid read of size 4
==13315==    at 0x76D08A7C: memcpy (in /lib/tls/libc.so.6)
==13315==    by 0x815D168: balance_nonroot (btree.c:3277)
==13315==    by 0x815D9E9: balance (btree.c:3477)
==13315==    by 0x815DE58: sqlite3BtreeInsert (btree.c:3582)
==13315==    by 0x81838B9: sqlite3VdbeExec (vdbe.c:3026)
==13315==    by 0x814D8E3: sqlite3_step (vdbeapi.c:183)
==13315==    by 0x80A3877: CollectionDB::execSql(QString const&, QStringList*, QStringList*, bool) (collectiondb.cpp:606)
==13315==    by 0x80A7205: CollectionDB::retrieveFirstLevel(QString, QString, QString, QString, QStringList*, QStringList*) (collectiondb.cpp:1027)
==13315==    by 0x809A476: CollectionView::renderView() (collectionbrowser.cpp:384)
==13315==    by 0x809B6C8: CollectionView::cat3Menu(int, bool) (collectionbrowser.cpp:583)
==13315==    by 0x809851A: CollectionBrowser::CollectionBrowser(char const*) (collectionbrowser.cpp:129)
==13315==    by 0x80FB42F: void PlaylistWindow::addBrowser<CollectionBrowser>(char const*, QString const&, QString const&) (playlistwindow.cpp:104)
==13315==    by 0x80F994A: PlaylistWindow::init() (playlistwindow.cpp:319)
==13315==    by 0x808DB58: App::App() (app.cpp:99)
==13315==  Address 0x77A235B3 is 1 bytes before a block of size 1016 alloc'd
==13315==    at 0x7501E8B4: malloc (vg_replace_malloc.c:105)
==13315==    by 0x814BC8A: sqlite3MallocRaw (util.c:294)
==13315==    by 0x815DC3F: sqlite3BtreeInsert (btree.c:3557)
==13315==    by 0x81838B9: sqlite3VdbeExec (vdbe.c:3026)
==13315==    by 0x814D8E3: sqlite3_step (vdbeapi.c:183)
==13315==    by 0x80A3877: CollectionDB::execSql(QString const&, QStringList*, QStringList*, bool) (collectiondb.cpp:606)
==13315==    by 0x80A7205: CollectionDB::retrieveFirstLevel(QString, QString, QString, QString, QStringList*, QStringList*) (collectiondb.cpp:1027)
==13315==    by 0x809A476: CollectionView::renderView() (collectionbrowser.cpp:384)
==13315==    by 0x809B6C8: CollectionView::cat3Menu(int, bool) (collectionbrowser.cpp:583)
==13315==    by 0x809851A: CollectionBrowser::CollectionBrowser(char const*) (collectionbrowser.cpp:129)
==13315==    by 0x80FB42F: void PlaylistWindow::addBrowser<CollectionBrowser>(char const*, QString const&, QString const&) (playlistwindow.cpp:104)
==13315==    by 0x80F994A: PlaylistWindow::init() (playlistwindow.cpp:319)
==13315==    by 0x808DB58: App::App() (app.cpp:99)
==13315==    by 0x8122ECD: main (main.cpp:64)
amarok: KMultiTabBarTab::updateState(): setting text to an empty QString***************
amarok:     Time: 39.74s
amarok:   Init: PlaylistBrowser
==13315== warning: Valgrind's pthread_attr_setinheritsched does nothing
==13315==          your program may misbehave as a result
==13315== warning: Valgrind's pthread_attr_destroy does nothing
==13315==          your program may misbehave as a result
amarok: [void ContextBrowser::setStyleSheet()]
amarok: Initial Color Properties: s:255 v:128
amarok: Final Colour Properties: s:125 v:128
amarok: KMultiTabBarTab::updateState(): setting text to an empty QString***************
amarok:     Time: 44.79s
amarok:   Init: CollectionBrowser
amarok: [CollectionView::CollectionView(CollectionBrowser*)]




From Lauri on FreeBSD:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 10 (LWP 100183)]
0x0815202f in balance_nonroot (pPage=0x868d448) at /cvs/kdeextragear-1/amarok/src/sqlite/btree.c:2902
2902    static int balance_nonroot(MemPage *pPage){
Current language:  auto; currently c
(gdb) bt
#0  0x0815202f in balance_nonroot (pPage=0x868d448) at /cvs/kdeextragear-1/amarok/src/sqlite/btree.c:2902
#1  0x081534fa in balance_deeper (pPage=0x86859d8) at /cvs/kdeextragear-1/amarok/src/sqlite/btree.c:3422
#2  0x08153547 in balance (pPage=0x86859d8) at /cvs/kdeextragear-1/amarok/src/sqlite/btree.c:3435
#3  0x08153a1f in sqlite3BtreeInsert (pCur=0x8661540, pKey=0x0, nKey=17, pData=0x865d370, nData=51) at /cvs/kdeextragear-1/amarok/src/sqlite/btree.c:3545
#4  0x081793c9 in sqlite3VdbeExec (p=0x8685e00) at /cvs/kdeextragear-1/amarok/src/sqlite/vdbe.c:3026
#5  0x08143938 in sqlite3_step (pStmt=0x8685e00) at /cvs/kdeextragear-1/amarok/src/sqlite/vdbeapi.c:159
#6  0x08093f65 in CollectionDB::execSql (this=0x8388768, statement=@0xbfa69c28, values=0x0, names=0x0, debug=false) at /cvs/kdeextragear-1/amarok/src/collectiondb.cpp:596
#7  0x080934c2 in CollectionDB::updateDirStats (this=0x8388768, path=
      {static null = {static null = <same as static member of an already seen type>, d = 0x81fa1e8, static shared_null = 0x81fa1e8}, d = 0x865e9e0, static shared_null = 0x81fa1e8}, datetime=1095275009) at /cvs/kdeextragear-1/amarok/src/collectiondb.cpp:477
#8  0x081027dd in CollectionReader::readDir (this=0x8655b00, dir=@0xbfa69d78, entries=@0xbfa69f38) at /cvs/kdeextragear-1/amarok/src/threadweaver.cpp:242
#9  0x08102c62 in CollectionReader::readDir (this=0x8655b00, dir=@0xbfa69e58, entries=@0xbfa69f38) at /cvs/kdeextragear-1/amarok/src/threadweaver.cpp:284
#10 0x08102c62 in CollectionReader::readDir (this=0x8655b00, dir=@0x82d5980, entries=@0xbfa69f38) at /cvs/kdeextragear-1/amarok/src/threadweaver.cpp:284
#11 0x08102671 in CollectionReader::doJob (this=0x8655b00) at /cvs/kdeextragear-1/amarok/src/threadweaver.cpp:222
#12 0x08101d84 in ThreadWeaver::run (this=0x83887e8) at /cvs/kdeextragear-1/amarok/src/threadweaver.cpp:105
#13 0x29291313 in QThreadInstance::start () from /usr/X11R6/lib/libqt-mt.so.3
#14 0x299ff9d5 in pthread_create () from /usr/lib/libpthread.so.1
#15 0x29b09def in _ctx_start () from /lib/libc.so.5


From Markus:

Program received signal SIGSEGV, Segmentation fault.
balance_nonroot (pPage=0x8594ea0) at btree.c:2905
2905      int nCell = 0;               /* Number of cells in aCell[] */
Current language:  auto; currently c
(gdb) bt
#0  balance_nonroot (pPage=0x8594ea0) at btree.c:2905
#1  0x081549a6 in balance_deeper (pPage=0x85838e0) at btree.c:3422
#2  0x08154a7d in balance (pPage=0x85838e0) at btree.c:3435
#3  0x08154dab in sqlite3BtreeInsert (pCur=0x8548200, pKey=0x0, nKey=17, pData=0x8590c70, nData=76) at btree.c:3545
#4  0x08175508 in sqlite3VdbeExec (p=0x858fd58) at vdbe.c:3026
#5  0x081477e9 in sqlite3_step (pStmt=0x858fd58) at vdbeapi.c:159
#6  0x08092232 in CollectionDB::execSql(QString const&, QStringList*, QStringList*, bool) (this=0x84eb548, statement=@0xbfadca10, values=0x0, names=0x0, debug=false) at collectiondb.cpp:596
#7  0x08090e1c in CollectionDB::updateDirStats(QString, long) (this=0x84eb548, path=
      {static null = {static null = <same as static member of an already seen type>, d = 0x8210e28, static shared_null = 0x8210e28}, d = 0x8582ec8, static shared_null = 0x8210e28}, datetime=1061836186)
    at collectiondb.cpp:477
#8  0x0810fb4b in CollectionReader::readDir(QString const&, QStringList&) (this=0x84eabf8, dir=@0xbfadcc40, entries=@0xbfadcf00) at threadweaver.cpp:242
#9  0x08110011 in CollectionReader::readDir(QString const&, QStringList&) (this=0x84eabf8, dir=@0xbfadcdc0, entries=@0xbfadcf00) at threadweaver.cpp:284
#10 0x08110011 in CollectionReader::readDir(QString const&, QStringList&) (this=0x84eabf8, dir=@0x8452fa0, entries=@0xbfadcf00) at threadweaver.cpp:284
#11 0x0810f8d9 in CollectionReader::doJob() (this=0x84eabf8) at /usr/X11R6/include/qvaluelist.h:535
#12 0x0810ed9d in ThreadWeaver::run() (this=0x84ed718) at threadweaver.cpp:105
#13 0x2919848b in QThreadInstance::start(void*) () from /usr/X11R6/lib/libqt-mt.so.3
#14 0xbfacd000 in ?? ()
#15 0x0813a0a1 in BoomAnalyzer::init() (this=0x84eb6fc) at boomanalyzer.cpp:69
Error accessing memory address 0x36: Bad address.



BT from samppa 09.01.2004: Huge playlist > 14000 items, hangs at startup

#0  0x4118bc3e in QListViewItem::sortChildItems ()
   from /usr/qt/3/lib/libqt-mt.so.3
#1  0x4118c39a in QListViewItem::enforceSortOrder ()
   from /usr/qt/3/lib/libqt-mt.so.3
#2  0x4119043d in QListView::buildDrawableList ()
   from /usr/qt/3/lib/libqt-mt.so.3
#3  0x411902ce in QListView::drawContentsOffset ()
   from /usr/qt/3/lib/libqt-mt.so.3
#4  0x411c422e in QScrollView::viewportPaintEvent ()
   from /usr/qt/3/lib/libqt-mt.so.3
#5  0x409a9f1c in KListView::viewportPaintEvent ()
   from /usr/kde/3.3/lib/libkdeui.so.4
#6  0x080bea3e in Playlist::viewportPaintEvent (this=0x82d1ed0, e=0x2)
    at playlist.cpp:885
#7  0x411c3c42 in QScrollView::eventFilter () from /usr/qt/3/lib/libqt-mt.so.3
#8  0x41192488 in QListView::eventFilter () from /usr/qt/3/lib/libqt-mt.so.3
#9  0x080beb55 in Playlist::eventFilter (this=0xbfffe3b0, o=0x415115f8,
    e=0x82d1ed0) at playlist.cpp:954
#10 0x410aca2e in QObject::activate_filters () from /usr/qt/3/lib/libqt-mt.so.3
#11 0x410ac95c in QObject::event () from /usr/qt/3/lib/libqt-mt.so.3
#12 0x410e50ef in QWidget::event () from /usr/qt/3/lib/libqt-mt.so.3
#13 0x41052cbf in QApplication::internalNotify ()
   from /usr/qt/3/lib/libqt-mt.so.3
#14 0x41052025 in QApplication::notify () from /usr/qt/3/lib/libqt-mt.so.3
#15 0x40c044aa in KApplication::notify () from /usr/kde/3.3/lib/libkdecore.so.4
#16 0x4101c4dd in QWidget::repaint () from /usr/qt/3/lib/libqt-mt.so.3
#17 0x410e6341 in QWidget::repaint () from /usr/qt/3/lib/libqt-mt.so.3
#18 0x411915c1 in QListView::updateContents () from /usr/qt/3/lib/libqt-mt.so.3
#19 0x414011d7 in QListView::qt_invoke () from /usr/qt/3/lib/libqt-mt.so.3
#20 0x409adb3b in KListView::qt_invoke () from /usr/kde/3.3/lib/libkdeui.so.4
#21 0x080c222a in Playlist::qt_invoke (this=0xbfffe3b0, _id=1095833080,
    _o=0x82d3224) at playlist.moc:225
#22 0x410af0fc in QObject::activate_signal () from /usr/qt/3/lib/libqt-mt.so.3
#23 0x410aef24 in QObject::activate_signal () from /usr/qt/3/lib/libqt-mt.so.3
#24 0x413eff7b in QTimer::timeout () from /usr/qt/3/lib/libqt-mt.so.3
#25 0x410d08d2 in QTimer::event () from /usr/qt/3/lib/libqt-mt.so.3
#26 0x41052cbf in QApplication::internalNotify ()
   from /usr/qt/3/lib/libqt-mt.so.3
#27 0x41052025 in QApplication::notify () from /usr/qt/3/lib/libqt-mt.so.3
#28 0x40c044aa in KApplication::notify () from /usr/kde/3.3/lib/libkdecore.so.4
#29 0x41042305 in QEventLoop::activateTimers ()
   from /usr/qt/3/lib/libqt-mt.so.3
#30 0x40ffcbbb in QEventLoop::processEvents () from /usr/qt/3/lib/libqt-mt.so.3
#31 0x0807c6b0 in App::applySettings (this=0xbfffee70, firstTime=true)
    at app.cpp:433
#32 0x0807a485 in App (this=0xbfffee70) at app.cpp:106
#33 0x080febb9 in main (argc=2, argv=0xbffff004) at main.cpp:62

