Bug 66540 - Frequent Crashes scrolling through collection list
Summary: Frequent Crashes scrolling through collection list
Status: RESOLVED FIXED
Alias: None
Product: juk
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: RedHat Enterprise Linux Linux
: NOR crash
Target Milestone: ---
Assignee: Scott Wheeler
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-10-25 09:09 UTC by Steven P. Ulrick
Modified: 2003-11-17 10:47 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
Tarball of backtraces from juk-1.95 (1.60 KB, text/plain)
2003-10-26 12:53 UTC, Steven P. Ulrick
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Steven P. Ulrick 2003-10-25 09:09:59 UTC
Version:           1.95 (separate from KDE) (using KDE KDE 3.1)
Installed from:    RedHat RPMs
Compiler:          gcc-3.2.2-5 
OS:          Linux

I have had it happen many times, that when I am selecting different items in the "Collection List", Juk immediately crashes.  It is quite frequent, but I haven't yet determined if there is a way to cause it to happen every time.
Since this form has given me no indication that it is about to ask me if I want to upload any files, and the form says to the left of where am typing,  that items of interest include Backtraces, I am including two of them in the body of this message.  If this is incorrect, I do apologize :)  I do know that they are not Exactly identical :)

BACKTRACE #1
[New Thread 1097412960 (LWP 10873)]
0xffffe002 in ?? ()
#0  0xffffe002 in ?? ()
#1  0x40ac357d in KCrash::defaultCrashHandler(int) ()
   from /usr/lib/libkdecore.so.4
#2  <signal handler called>
#3  0x08074278 in PlaylistItem::slotRefreshImpl() ()
#4  0x080721ca in CollectionListItem::slotRefresh() ()
#5  0x08073785 in PlaylistItem::setFile(QString const&) ()
#6  0x080881a7 in TagEditor::save(QValueList<PlaylistItem*> const&) ()
#7  0x0808841e in TagEditor::saveChangesPrompt() ()
#8  0x08085455 in TagEditor::slotSetItems(QValueList<PlaylistItem*> const&) ()
#9  0x080887c4 in TagEditor::qt_invoke(int, QUObject*) ()
#10 0x40e620c9 in QObject::activate_signal(QConnectionList*, QUObject*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#11 0x0807ae17 in Playlist::signalSelectionChanged(QValueList<PlaylistItem*> const&) ()
#12 0x0807b336 in Playlist::qt_invoke(int, QUObject*) ()
#13 0x08072c81 in CollectionList::qt_invoke(int, QUObject*) ()
#14 0x40e62040 in QObject::activate_signal(QConnectionList*, QUObject*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#15 0x40e61f6d in QObject::activate_signal(int) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#16 0x4115200b in QListView::selectionChanged() ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#17 0x40f2ef5b in QListView::contentsMousePressEventEx(QMouseEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#18 0x40f2e7f6 in QListView::contentsMousePressEvent(QMouseEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#19 0x408a3e5c in KListView::contentsMousePressEvent(QMouseEvent*) ()
   from /usr/lib/libkdeui.so.4
#20 0x40f5cedc in QScrollView::viewportMousePressEvent(QMouseEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#21 0x40f5c826 in QScrollView::eventFilter(QObject*, QEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#22 0x40f2e2d2 in QListView::eventFilter(QObject*, QEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#23 0x080786a4 in Playlist::eventFilter(QObject*, QEvent*) ()
#24 0x40e5fdee in QObject::activate_filters(QEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#25 0x40e5fd11 in QObject::event(QEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#26 0x40e95f8c in QWidget::event(QEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#27 0x40e03f24 in QApplication::internalNotify(QObject*, QEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#28 0x40e03753 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#29 0x40a571e9 in KApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/libkdecore.so.4
#30 0x40daa198 in QETWidget::translateMouseEvent(_XEvent const*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#31 0x40da7cdf in QApplication::x11ProcessEvent(_XEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#32 0x40dbcbda in QEventLoop::processEvents(unsigned) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#33 0x40e17cf6 in QEventLoop::enterLoop() ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#34 0x40e17b98 in QEventLoop::exec() () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#35 0x40e04151 in QApplication::exec() ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#36 0x08093acb in main ()
#37 0x420156a4 in __libc_start_main () from /lib/tls/libc.so.6

BACKTRACE #2
[New Thread 1097412960 (LWP 10895)]
0xffffe002 in ?? ()
#0  0xffffe002 in ?? ()
#1  0x40ac357d in KCrash::defaultCrashHandler(int) ()
   from /usr/lib/libkdecore.so.4
#2  <signal handler called>
#3  0x08074a22 in PlaylistItem::Data::tag() ()
#4  0x0808551e in TagEditor::slotRefresh() ()
#5  0x0807ff14 in PlaylistSplitter::slotChangePlaylist(QValueList<Playlist*> const&) ()
#6  0x0808073c in PlaylistSplitter::qt_invoke(int, QUObject*) ()
#7  0x40e620c9 in QObject::activate_signal(QConnectionList*, QUObject*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#8  0x0808442f in PlaylistBox::signalCurrentChanged(QValueList<Playlist*> const&) ()
#9  0x080832bb in PlaylistBox::slotPlaylistChanged() ()
#10 0x08084641 in PlaylistBox::qt_invoke(int, QUObject*) ()
#11 0x40e62040 in QObject::activate_signal(QConnectionList*, QUObject*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#12 0x40e61f6d in QObject::activate_signal(int) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#13 0x4115200b in QListView::selectionChanged() ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#14 0x40f2ef5b in QListView::contentsMousePressEventEx(QMouseEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#15 0x40f2e7f6 in QListView::contentsMousePressEvent(QMouseEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#16 0x408a3e5c in KListView::contentsMousePressEvent(QMouseEvent*) ()
   from /usr/lib/libkdeui.so.4
#17 0x40f5cedc in QScrollView::viewportMousePressEvent(QMouseEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#18 0x40f5c826 in QScrollView::eventFilter(QObject*, QEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#19 0x40f2e2d2 in QListView::eventFilter(QObject*, QEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#20 0x40e5fdee in QObject::activate_filters(QEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#21 0x40e5fd11 in QObject::event(QEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#22 0x40e95f8c in QWidget::event(QEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#23 0x40e03f24 in QApplication::internalNotify(QObject*, QEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#24 0x40e03753 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#25 0x40a571e9 in KApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/libkdecore.so.4
#26 0x40daa198 in QETWidget::translateMouseEvent(_XEvent const*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#27 0x40da7cdf in QApplication::x11ProcessEvent(_XEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#28 0x40dbcbda in QEventLoop::processEvents(unsigned) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#29 0x40e17cf6 in QEventLoop::enterLoop() ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#30 0x40e17b98 in QEventLoop::exec() () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#31 0x40e04151 in QApplication::exec() ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#32 0x08093acb in main ()
#33 0x420156a4 in __libc_start_main () from /lib/tls/libc.so.6

I am running Red Hat 9, I did a fresh install, not an upgrade, and I chose to install EVERY package.  I also am running all of the official Red Hat updates.
I am running the following, non-Red Hat versions of the following items, which could possibly be at issue:
automake 1.7.2
autoconf 2.57
libtools 1.4.3

Any questions you may have for me, I'm here to help :)
Steven P. Ulrick
Comment 1 Steven P. Ulrick 2003-10-25 09:12:16 UTC
Forgot to add, that of course, the expected behaviour would be that Juk wouldn't crash so frequently.  Other than that, I really love Juk :)  In fact, that's why I'm persuing this bug.
Comment 2 Steven P. Ulrick 2003-10-26 12:53:03 UTC
Created attachment 2884 [details]
Tarball of backtraces from juk-1.95

The attatched files are from five of my six most recent juk-1.95 crashes.  They
all took place within a matter of an hour or two.  If you want me to stop
sending backtraces, let me know, and I'll be glad to oblige :)
Comment 3 Steven P. Ulrick 2003-10-26 13:17:03 UTC
The above attatched tarball seems to be defective.  I don't understand this, as it works fine on my machine.  I have therefore uploaded it to the following location:

http://www.faith4miracle.org/juk-backtraces.tar.bz2

I apologize for any inconvenience :)
Steven P. Ulrick
Comment 4 Scott Wheeler 2003-10-26 14:13:04 UTC
Hi Steven,

If you've compiled from source it will make the backtraces more useful if you use --enabled-debug=full in your configure line.  That gives me the line number in addition to the function name that it has by default.  Otherwise I'll have a look at this based on the information that you gave in the next few days.
Comment 5 Steven P. Ulrick 2003-10-29 19:22:14 UTC
Hello, Scott :)
As requested, I recompiled Juk 1.95 with "--enabled-debug=full"  I have uploaded backtraces of the last four times Juk 1.95 has crashed to the following location:
http://www.faith4miracle.org/juk-backtraces2.tar.bz2
Unless you say different, any future backtraces I will upload to a web-server instead of attatching to this comment.  Please refer to "Additional Comment #3" above :)
Comment 6 Scott Wheeler 2003-10-31 16:21:27 UTC
Ok, from the looks of it, this is only happening when the tag editor is visible, correct?  I'll mess around with it this weekend and see if I can reproduce it.
Comment 7 Steven P. Ulrick 2003-11-03 08:49:40 UTC
Hello, Scott
I apologize for my lateness in responding to your last comment.  To answer your question, to the best of my knowledge, all of the crashes I've had have been with the editor visible.  If I can be of any further assistance to you, feel free to let me know.
Comment 8 Steven P. Ulrick 2003-11-05 15:39:23 UTC
Hello, Scott :)
If you need them, I have more backtraces that I have saved since I enabled full debugging on Juk 1.95.  If they are of any relevance to you, you will find them at the following location:
http://www.faith4miracle.org/JukBacktraces-11052003.tar.bz2
Comment 9 Scott Wheeler 2003-11-05 17:04:27 UTC
Yep -- just been busy the last few days with other code.  There's hopefully enough information here for me to figure out what's going on.  I'll let you know if I need more in the next short while...
Comment 10 Scott Wheeler 2003-11-14 01:38:37 UTC
Finally getting back to looking a bit more into this -- and sadly while I see the line where it's crashing I don't really see why.  Actually most of the related code has been rewritten in CVS, but since I can't reproduce it I can't be sure that it's fixed.  (Though I'm considering making a new JuK beta -- we'll see if time allows such.)

It seems to be some sort of memory coruption, but I'm still not exactly sure how.  Do you happen to have valgrind installed on your system?

If so just running "valgrind juk --nofork" might give some more information.  (Valgrind is a memory debugging tool.)  If you have any luck with that posting the full output up to and including the crash would be helpful.
Comment 11 Steven P. Ulrick 2003-11-14 22:57:37 UTC
I installed Valgrind after I read your last comment.  At the following location, you will find a tarball that contains the output from Valgrind from a recent session of Juk, and two backtraces from the KDE crash handler.

http://www.faith4miracle.org/juk-valgrind.tar.bz2

I recently reinstalled Fedora Core 1 (I put my two harddrives on separate IDE controllers) and ever since then, I think something went wrong with the KDE crash handler.  Please get back to me if, after looking at the output contained in the two backtraces that are in the tarball referenced above, you think something might be wrong.  If you know how I can fix it, cool.  If not, please refer me to whoever would have that information :)
Comment 12 Scott Wheeler 2003-11-15 22:26:12 UTC
Ok, still can't reproduce this, but I *might* have an idea what's going on.  Does this usually happen after you remove items from the list?
Comment 13 Scott Wheeler 2003-11-16 04:25:18 UTC
Subject: kdemultimedia/juk

CVS commit by wheeler: 

Finally was able to reproduce this one.  Add lots of paranoia to check for
null items before dereferencing them and make sure that item deletion signals
are propogated to various places even when items are being removed in
lists other than the current one.

CCMAIL:66540-done@bugs.kde.org


  M +4 -5      playlist.cpp   1.166
  M +2 -2      playlist.h   1.98
  M +7 -0      playlistitem.cpp   1.71
  M +6 -0      playlistitem.h   1.46
  M +85 -58    tageditor.cpp   1.42
  M +3 -0      tageditor.h   1.19



Comment 14 Steven P. Ulrick 2003-11-16 10:00:03 UTC
Hello, Scott :)
In response to your first comment yesterday, the crashes occured not so much when thing were removed from a list, but more so when things were changed: ie - I'd change a tag to the way I wanted it, click on another song, album or artist to work on, and Juk would crash.
In reference to your second comment, I would love to try out whatever fix you have come up with, but I can't compile the CVS because I only have qt 3.1x  I've had disastrous experiences with qt when attempting to upgrade versions of KDE (I've since given up on trying that :))  I understand I should be able to configure it and run it in my home directory?  I believe I tried that before, but I'll try it again, just to see.  If you have any advice, or a link where I could download a build that I COULD compile with qt 3.1, I'd love to hear from you :)
Steven P. Ulrick
Comment 15 Scott Wheeler 2003-11-17 10:47:27 UTC
It's certainly possible to have multiple Qt versions installed, but it in fact also requires the KDE libraries from CVS at this point.  I think Konstruct (an automated build system) supports building KDE from CVS -- if not I know it supports our betas, one of which should be out in a few days.

As for another beta -- that's still up in the air.  I haven't tried to compile JuK against KDE 3.1 for a while, so I don't know how much porting would be needed at this point.  However, even if I do another beta I will probably require KDE 3.1.4 / Qt 3.2 just so that there's less that I have to backport.  I really don't want to spend that much time on it since KDE 3.2 is just a couple months out.