Summary: | Crash in ~QIconView - when doing find next | ||
---|---|---|---|
Product: | [Applications] kdevelop | Reporter: | Jon Smirl <jonsmirl> |
Component: | QEditor | Assignee: | KDevelop Developers <kdevelop-devel> |
Status: | RESOLVED FIXED | ||
Severity: | crash | ||
Priority: | NOR | ||
Version: | git master | ||
Target Milestone: | --- | ||
Platform: | RedHat Enterprise Linux | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Jon Smirl
2003-07-04 22:56:00 UTC
I sure didn't expect it, but I _can_ reproduce this one! 1. Use QEditor, start a search 2. Start another find (menu is reachable even if shortcut isn't) 3. run a few find next with the second dialog 4. Close it and attempt find next with the first dialog -> Crash! An interesting thing in my backtrace is that libGL (from nvidia) seems to be involved!? [New Thread 16384 (LWP 21357)] [New Thread 32769 (LWP 21371)] [New Thread 16386 (LWP 21372)] 0x419a039c in waitpid () from /lib/libpthread.so.0 #0 0x419a039c in waitpid () from /lib/libpthread.so.0 #1 0x40ef1a3e in KCrash::defaultCrashHandler(int) (sig=11) at kcrash.cpp:246 #2 0x4199f17c in __pthread_sighandler () from /lib/libpthread.so.0 #3 <signal handler called> #4 0x42000009 in __nvsym16903 () from /usr/lib/libGLcore.so.1 #5 0x409ead2c in KFileIconViewItem::~KFileIconViewItem() () from /opt/kde/lib/libkio.so.4 #6 0x41478bb2 in QIconView::~QIconView() () from /opt/qt-3.2.1/lib/libqt-mt.so.3 #7 0x40cbb9fb in ~KIconView (this=0x833e530) at kiconview.cpp:88 #8 0x409eb973 in KFileIconView::~KFileIconView() () from /opt/kde/lib/libkio.so.4 #9 0x409fdc49 in KDirOperator::~KDirOperator() () from /opt/kde/lib/libkio.so.4 #10 0x428b19c3 in ~KDevDirOperator (this=0x8316c28) at fileselector_widget.moc:396 #11 0x412f3ef8 in QWidget::~QWidget() () from /opt/qt-3.2.1/lib/libqt-mt.so.3 #12 0x428ac8a7 in ~KDevFileSelector (this=0x830ea20) at fileselector_widget.cpp:229 #13 0x428a94bd in ~FileSelectorPart (this=0x830f750) at fileselector_part.cpp:60 #14 0x40d0049d in QPtrList<QObject>::deleteItem(void*) (this=0x830eb28, d=0x830f750) at qptrlist.h:150 #15 0x41562d0e in QGList::clear() () from /opt/qt-3.2.1/lib/libqt-mt.so.3 #16 0x40d003b3 in QPtrList<QObject>::clear() (this=0x830eb28) at qptrlist.h:93 #17 0x40f0b288 in ~KLibrary (this=0x830eaf0) at klibloader.cpp:136 #18 0x40f0cec8 in KLibLoader::close_pending(KLibWrapPrivate*) (this=0x81fa7c0, wrap=0x830c0e8) at klibloader.cpp:521 #19 0x40f0c385 in ~KLibLoader (this=0x81fa7c0) at klibloader.cpp:338 #20 0x40f0bcee in KLibLoader::cleanUp() () at klibloader.cpp:308 #21 0x40e5f4e9 in ~KApplication (this=0xbffff3b0) at kapplication.cpp:1487 #22 0x0806c46f in main (argc=1, argv=0xbffff534) at main.cpp:128 #23 0x41b13b47 in __libc_start_main () from /lib/libc.so.6 OK, at least it has nothing to do with the FileSelector. Running without it, or even without any project loaded results in the same problem - KDevelop closes. The reported crash comes, as seen in the backtrace, while KDevelop is closing down (and without a project, I didn't get a crash from this) but _why_ are we closing down? I'm beginning to suspect the problem lies with QEditor. Changing component. Yes, it is QEditor, the same thing happens with the replace dialog. The reason KDevelop closes is one consequtive call too many to kapp->exit_loop(). Will try to fix it later tonight. Subject: kdevelop/editors/qeditor CVS commit by dagerbo: If there is already a find or replace in progress when a new is started, close the first. CCMAIL: 60770-done@bugs.kde.org M +11 -1 qeditor_view.cpp 1.48 --- kdevelop/editors/qeditor/qeditor_view.cpp #1.47:1.48 @@ -477,4 +477,9 @@ void QEditorView::doFind() if( m_findDialog->exec() ){ m_options = m_findDialog->options(); + if ( m_find ) + { + m_find->abort(); + delete m_find; + } m_find = new KoFind( m_findDialog->pattern(), m_findDialog->options() ); connect( m_find, SIGNAL(highlight(const QString&,int,int,const QRect&)), @@ -492,4 +497,9 @@ void QEditorView::doReplace() if( m_replaceDialog->exec() ){ m_options = m_replaceDialog->options(); + if ( m_replace ) + { + m_replace->abort(); + delete m_replace; + } m_replace = new KoReplace( m_replaceDialog->pattern(), m_replaceDialog->replacement(), m_replaceDialog->options() ); *** Bug 60510 has been marked as a duplicate of this bug. *** |