Bug 174292 - "separate current tag [Ctrl+Shift+B]" for "multi-view tag" causes konqueror crash
Summary: "separate current tag [Ctrl+Shift+B]" for "multi-view tag" causes konqueror c...
Status: RESOLVED FIXED
Alias: None
Product: konqueror
Classification: Applications
Component: general (show other bugs)
Version: 4.1.2
Platform: Fedora RPMs Linux
: NOR crash
Target Milestone: ---
Assignee: Konqueror Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-11-04 19:40 UTC by Taka@Te
Modified: 2009-05-25 22:29 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Taka@Te 2008-11-04 19:40:41 UTC
Version:           Konqueror 4.1.2 (using KDE 4.1.2)
Compiler:          gcc version 4.3.0 20080428 (Red Hat 4.3.0-8) (GCC)  Target: x86_64-redhat-linux, thread[?]-model: posix 
OS:                Linux
Installed from:    Fedora RPMs

Detail: [what I do ](reproducable);
  1 split views; e.g. 1/1/1. (3 views in vertically)
  2 Make another multiview tab; e.g. 1:1. (2 views in horizontally)
 *3 Click 'Separate Current TAB [Ctrl+Shift+B]', then CRASH!!

[Note: The phrase 'Separate Current TAB' is my translation; 
replace suitable words, please.
Because of Locale ja_jp version, I've not see that in English.
]
Comment 1 Taka@Te 2008-11-04 20:09:17 UTC
Let me append the "KDE crash-handler output" as it is
(where Language:ja_jp, Encoding: utf8), please.

[Note: In the following "kcrash info~" & "detail-info", the japanese words;
 "致命的なエラーが発生" means 'The FATAL error occurs',
 "アプリケーション: " means 'application: ', "シグナル " means 'signal '.
]

# [kcrash] information
致命的なエラーが発生
The application Konqueror (konqueror) crashed and caused the signal 11 (SIGSEGV).

# [kcrash] detail-info:
アプリケーション: Konqueror (konqueror), シグナル SIGSEGV
(no debugging symbols found)
... 12 same lines  ...
(no debugging symbols found)
[Thread debugging using libthread_db enabled]
[New Thread 0x7f839da7d800 (LWP 5694)]
(no debugging symbols found)
... 108 same lines  ...
(no debugging symbols found)
[KCrash handler]
#5  0x000000302b0571ae in KConfigGroup::writeEntry ()
   from /usr/lib64/libkdeinit4_konqueror.so
#6  0x000000302b05743a in KConfigGroup::writeEntry ()
   from /usr/lib64/libkdeinit4_konqueror.so
#7  0x000000302b03e54a in KConfigGroup::writeEntry ()
   from /usr/lib64/libkdeinit4_konqueror.so
#8  0x000000302b043c14 in KConfigGroup::writeEntry ()
   from /usr/lib64/libkdeinit4_konqueror.so
#9  0x000000369b5574c4 in QMetaObject::activate ()
   from /usr/lib64/libQtCore.so.4
#10 0x000000302a81c73f in KParts::ReadOnlyPart::started ()
   from /usr/lib64/libkparts.so.4
#11 0x00007f8394a3da48 in ?? () from /usr/lib64/kde4/dolphinpart.so
#12 0x000000302a828985 in KParts::BrowserExtension::restoreState ()
   from /usr/lib64/libkparts.so.4
#13 0x000000302b0450b1 in KConfigGroup::writeEntry ()
   from /usr/lib64/libkdeinit4_konqueror.so
#14 0x000000302b04594c in KConfigGroup::writeEntry ()
   from /usr/lib64/libkdeinit4_konqueror.so
#15 0x000000302b04cb74 in KConfigGroup::writeEntry ()
   from /usr/lib64/libkdeinit4_konqueror.so
#16 0x000000302b04bdf9 in KConfigGroup::writeEntry ()
   from /usr/lib64/libkdeinit4_konqueror.so
#17 0x000000302b04d363 in KConfigGroup::writeEntry ()
   from /usr/lib64/libkdeinit4_konqueror.so
#18 0x000000302b04e04d in KConfigGroup::writeEntry ()
   from /usr/lib64/libkdeinit4_konqueror.so
#19 0x000000302b04e51b in KConfigGroup::writeEntry ()
   from /usr/lib64/libkdeinit4_konqueror.so
#20 0x000000302b04f6c2 in KConfigGroup::writeEntry ()
   from /usr/lib64/libkdeinit4_konqueror.so
#21 0x000000302b07141f in KConfigGroup::writeEntry ()
   from /usr/lib64/libkdeinit4_konqueror.so
#22 0x000000302b095465 in KConfigGroup::writeEntry ()
   from /usr/lib64/libkdeinit4_konqueror.so
#23 0x000000369b5574c4 in QMetaObject::activate ()
   from /usr/lib64/libQtCore.so.4
#24 0x000000369b55d7af in ?? () from /usr/lib64/libQtCore.so.4
#25 0x000000369b551da3 in QObject::event () from /usr/lib64/libQtCore.so.4
#26 0x000000369fd827dd in QApplicationPrivate::notify_helper ()
   from /usr/lib64/libQtGui.so.4
#27 0x000000369fd8a58a in QApplication::notify ()
   from /usr/lib64/libQtGui.so.4
#28 0x000000369dffb55b in KApplication::notify ()
   from /usr/lib64/libkdeui.so.5
#29 0x000000369b543081 in QCoreApplication::notifyInternal ()
   from /usr/lib64/libQtCore.so.4
#30 0x000000369b56eef6 in ?? () from /usr/lib64/libQtCore.so.4
#31 0x000000369b56b60d in ?? () from /usr/lib64/libQtCore.so.4
#32 0x000000369303742b in g_main_context_dispatch ()
   from /lib64/libglib-2.0.so.0
#33 0x000000369303ac0d in ?? () from /lib64/libglib-2.0.so.0
#34 0x000000369303adcb in g_main_context_iteration ()
   from /lib64/libglib-2.0.so.0
#35 0x000000369b56b56f in QEventDispatcherGlib::processEvents ()
   from /usr/lib64/libQtCore.so.4
#36 0x000000369fe1350f in ?? () from /usr/lib64/libQtGui.so.4
#37 0x000000369b541992 in QEventLoop::processEvents ()
   from /usr/lib64/libQtCore.so.4
#38 0x000000369b541b1d in QEventLoop::exec () from /usr/lib64/libQtCore.so.4
#39 0x000000369b543fed in QCoreApplication::exec ()
   from /usr/lib64/libQtCore.so.4
#40 0x000000302b0b8434 in kdemain () from /usr/lib64/libkdeinit4_konqueror.so
#41 0x000000369001e32a in __libc_start_main () from /lib64/libc.so.6
#42 0x0000000000400809 in _start ()
Comment 2 Frank Reininghaus 2008-11-04 20:21:13 UTC
Thanks for the bug report. I can confirm this in 4.1.2 and trunk rev. 879688. I just have to add a point "0" to your instructions: Open a new tab with Ctrl-T. I'm getting a different backtrace, but that might depend on the contents of the views (mine were empty).

Konsole output:

konqueror(8839)/khtml (part) KHTMLPart::~KHTMLPart: KHTMLPart(0x8ecc730)                                                                                                            
konqueror(8839)/kparts KParts::PartManager::setActivePart: KParts::PartManager(0x8ef8520, name = "khtml part manager")  emitting activePartChanged  QObject(0x0)                    
konqueror(8839)/kparts KParts::Part::~Part: deleting widget  KHTMLView(0x8ecf150)   ""                                                                                              
QObject: Do not delete object, 'unnamed', during its event handler!                                                                                                                 
pure virtual method called                                                                                                                                                          
terminate called without an active exception                                                                                                                                        
KCrash: crashing... crashRecursionCounter = 2                                                                                                                                       
KCrash: Application Name = konqueror path = <unknown> pid = 8839                                                                                                                    

Backtrace:

Application: Konqueror (konqueror), signal SIGABRT
[Current thread is 0 (LWP 8839)]

Thread 2 (Thread 0xb2533b90 (LWP 8849)):
#0  0xb7f0b430 in __kernel_vsyscall ()
#1  0xb62f1c01 in select () from /lib/tls/i686/cmov/libc.so.6
#2  0xb74450bb in QProcessManager::run (this=0x881c618) at io/qprocess_unix.cpp:307
#3  0xb7359607 in QThreadPrivate::start (arg=0x881c618) at thread/qthread_unix.cpp:191
#4  0xb72cd50f in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#5  0xb62f97ee in clone () from /lib/tls/i686/cmov/libc.so.6

Thread 1 (Thread 0xb5ca5a60 (LWP 8839)):
[KCrash Handler]
#6  0xb7f0b430 in __kernel_vsyscall ()
#7  0xb6243880 in raise () from /lib/tls/i686/cmov/libc.so.6
#8  0xb6245248 in abort () from /lib/tls/i686/cmov/libc.so.6
#9  0xb64686f8 in __gnu_cxx::__verbose_terminate_handler () from /usr/lib/libstdc++.so.6
#10 0xb64665d5 in ?? () from /usr/lib/libstdc++.so.6
#11 0xb6466612 in std::terminate () from /usr/lib/libstdc++.so.6
#12 0xb64672b5 in __cxa_pure_virtual () from /usr/lib/libstdc++.so.6
#13 0xb7e66730 in KonqFrameContainerBase::activateChild (this=0x8e20ac4) at /home/kde-devel/kde/src/KDE/kdebase/apps/konqueror/src/konqframecontainer.h:62
#14 0xb7e66730 in KonqFrameContainerBase::activateChild (this=0x8e1f044) at /home/kde-devel/kde/src/KDE/kdebase/apps/konqueror/src/konqframecontainer.h:62
#15 0xb7e66730 in KonqFrameContainerBase::activateChild (this=0x8dc4be4) at /home/kde-devel/kde/src/KDE/kdebase/apps/konqueror/src/konqframecontainer.h:62
#16 0xb7e670d1 in KonqFrameTabs::slotCurrentChanged (this=0x8a39348, newPage=0x8dc4bd0) at /home/kde-devel/kde/src/KDE/kdebase/apps/konqueror/src/konqtabs.cpp:610
#17 0xb7e5ad9f in KonqViewManager::removeTab (this=0x891be80, currentFrame=0x8ed1cbc, emitAboutToRemoveSignal=false) at /home/kde-devel/kde/src/KDE/kdebase/apps/konqueror/src/konqviewmanager.cpp:394
#18 0xb7e5c1ba in KonqViewManager::breakOffTab (this=0x891be80, currentFrame=0x8ed1cbc, windowSize=@0xbfa0afa0) at /home/kde-devel/kde/src/KDE/kdebase/apps/konqueror/src/konqviewmanager.cpp:308
#19 0xb7e988e8 in KonqMainWindow::slotBreakOffTab (this=0x885b878) at /home/kde-devel/kde/src/KDE/kdebase/apps/konqueror/src/konqmainwindow.cpp:2367
#20 0xb7ea440d in KonqMainWindow::qt_metacall (this=0x885b878, _c=QMetaObject::InvokeMetaMethod, _id=69, _a=0xbfa0b17c)
    at /home/kde-devel/kde/build/KDE/kdebase/apps/konqueror/src/konqmainwindow.moc:401
#21 0xb747f923 in QMetaObject::activate (sender=0x897b3d8, from_signal_index=5, to_signal_index=6, argv=0xbfa0b17c) at kernel/qobject.cpp:3037
#22 0xb747fc14 in QMetaObject::activate (sender=0x897b3d8, m=0xb70d8c98, from_local_signal_index=1, to_local_signal_index=2, argv=0xbfa0b17c) at kernel/qobject.cpp:3127
#23 0xb67a60d2 in QAction::triggered (this=0x897b3d8, _t1=false) at .moc/debug-shared/moc_qaction.cpp:216
#24 0xb67a80f2 in QAction::activate (this=0x897b3d8, event=QAction::Trigger) at kernel/qaction.cpp:1131
#25 0xb67a82cc in QAction::event (this=0x897b3d8, e=0xbfa0b600) at kernel/qaction.cpp:1050
#26 0xb78fcb72 in KAction::event (this=0x897b3d8, event=0xbfa0b600) at /home/kde-devel/kde/src/KDE/kdelibs/kdeui/actions/kaction.cpp:88
#27 0xb67af43d in QApplicationPrivate::notify_helper (this=0x8819168, receiver=0x897b3d8, e=0xbfa0b600) at kernel/qapplication.cpp:3809
#28 0xb67af723 in QApplication::notify (this=0xbfa0c510, receiver=0x897b3d8, e=0xbfa0b600) at kernel/qapplication.cpp:3399
#29 0xb79d58d7 in KApplication::notify (this=0xbfa0c510, receiver=0x897b3d8, event=0xbfa0b600) at /home/kde-devel/kde/src/KDE/kdelibs/kdeui/kernel/kapplication.cpp:307
#30 0xb7467a71 in QCoreApplication::notifyInternal (this=0xbfa0c510, receiver=0x897b3d8, event=0xbfa0b600) at kernel/qcoreapplication.cpp:593
#31 0xb746c041 in QCoreApplication::sendEvent (receiver=0x897b3d8, event=0xbfa0b600) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
#32 0xb67f6c1a in QShortcutMap::dispatchEvent (this=0x8819204, e=0xbfa0ba44) at kernel/qshortcutmap.cpp:777
#33 0xb67f7d54 in QShortcutMap::tryShortcutEvent (this=0x8819204, w=0x8ecf150, e=0xbfa0ba44) at kernel/qshortcutmap.cpp:368
#34 0xb67af93e in QApplication::notify (this=0xbfa0c510, receiver=0x8ecf150, e=0xbfa0ba44) at kernel/qapplication.cpp:3436
#35 0xb79d58d7 in KApplication::notify (this=0xbfa0c510, receiver=0x8ecf150, event=0xbfa0ba44) at /home/kde-devel/kde/src/KDE/kdelibs/kdeui/kernel/kapplication.cpp:307
#36 0xb7467a71 in QCoreApplication::notifyInternal (this=0xbfa0c510, receiver=0x8ecf150, event=0xbfa0ba44) at kernel/qcoreapplication.cpp:593
#37 0xb67bce5b in QCoreApplication::sendSpontaneousEvent (receiver=0x8ecf150, event=0xbfa0ba44) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:218
#38 0xb6828b46 in qt_sendSpontaneousEvent (receiver=0x8ecf150, event=0xbfa0ba44) at kernel/qapplication_x11.cpp:4594
#39 0xb68691b5 in QKeyMapper::sendKeyEvent (keyWidget=0x8ecf150, grab=false, type=QEvent::KeyPress, code=66, modifiers=@0xbfa0bba8, text=@0xbfa0bbdc, autorepeat=false, count=1, nativeScanCode=56, 
    nativeVirtualKey=66, nativeModifiers=21) at kernel/qkeymapper_x11.cpp:1658
#40 0xb686a670 in QKeyMapperPrivate::translateKeyEvent (this=0x883e5c0, keyWidget=0x8ecf150, event=0xbfa0c15c, grab=false) at kernel/qkeymapper_x11.cpp:1629
#41 0xb683cf51 in QApplication::x11ProcessEvent (this=0xbfa0c510, event=0xbfa0c15c) at kernel/qapplication_x11.cpp:3059
#42 0xb686cfcd in x11EventSourceDispatch (s=0x881c058, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:148
#43 0xb5f6a6f8 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#44 0xb5f6dda3 in ?? () from /usr/lib/libglib-2.0.so.0
#45 0xb5f6df61 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#46 0xb749cff8 in QEventDispatcherGlib::processEvents (this=0x8819260, flags=@0xbfa0c304) at kernel/qeventdispatcher_glib.cpp:325
#47 0xb686c69c in QGuiEventDispatcherGlib::processEvents (this=0x8819260, flags=@0xbfa0c334) at kernel/qguieventdispatcher_glib.cpp:204
#48 0xb74642ee in QEventLoop::processEvents (this=0xbfa0c3bc, flags=@0xbfa0c374) at kernel/qeventloop.cpp:149
#49 0xb746452d in QEventLoop::exec (this=0xbfa0c3bc, flags=@0xbfa0c3c4) at kernel/qeventloop.cpp:200
#50 0xb74683a8 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:851
#51 0xb67af156 in QApplication::exec () at kernel/qapplication.cpp:3337
#52 0xb7ed568c in kdemain (argc=1, argv=0xbfa0c884) at /home/kde-devel/kde/src/KDE/kdebase/apps/konqueror/src/konqmain.cpp:257
#53 0x08048746 in main (argc=) at /home/kde-devel/kde/build/KDE/kdebase/apps/konqueror/src/konqueror_dummy.cpp:3

Comment 3 Frank Reininghaus 2008-11-05 00:35:13 UTC
BTW, it is sufficient to split the view just once. Simplified instructions to crash:

1. Start Konqueror.
2. Press Ctrl-T to open a new tab.
3. Press Ctrl-Shift-L to split the view.
4. Press Ctrl-Shift-B.

Note that bug 153122, now fixed, is very similar. The crash there occurred on closing the split tab with Ctrl-W (that can't be reproduced any more).
Comment 4 FiNeX 2008-11-06 13:31:02 UTC
Confirmed using current trunk (r880748).
Comment 5 Frank Reininghaus 2009-05-25 22:14:13 UTC
The root cause of the crash is the same as for bug 153122: the current code tries to break off the current view, and not the current tab as it should be. If the tab does not contain split views, that does not matter because current tab and current view are equal, but in the split view case, this leads to a crash.

However, changing this leads to another crash in KonqViewManager::breakOffTab(): for some reason, KonqViewManager::loadViewProfileFromConfig() fails if the profile to be loaded contains split views. I noticed that duplicating tabs with split views works fine and that KonqViewManager::duplicateTab() uses KonqViewManager::loadRootItem() to load the profile, so I just copied that to KonqViewManager::breakOffTab(), and now it works fine for me. I did not investigate in detail why KonqViewManager::loadViewProfileFromConfig() failed in the first place though.

I'll commit my fix in a minute.
Comment 6 Frank Reininghaus 2009-05-25 22:21:21 UTC
SVN commit 972850 by freininghaus:

Don't crash when breaking off a tab which contains split views. This
requires two changes:

1. KonqMainWindow::slotBreakOffTab() has to break off the current tab,
not the current view (cf. a similar crash on closing split tabs, fixed
by commit 744963).

2. In KonqViewManager::breakOffTab(), loadViewProfileFromConfig()
crashes when loading the profile with the split view, it is replaced
by loadRootItem() (similar to KonqViewManager::duplicateTab()).

BUG: 174292
CCMAIL: faure@kde.org


 M  +4 -1      konqmainwindow.cpp  
 M  +1 -1      konqviewmanager.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=972850
Comment 7 Frank Reininghaus 2009-05-25 22:29:10 UTC
SVN commit 972855 by freininghaus:

Don't crash when breaking off a tab which contains split views. This
requires two changes:

1. KonqMainWindow::slotBreakOffTab() has to break off the current tab,
not the current view (cf. a similar crash on closing split tabs, fixed
by commit 744963).

2. In KonqViewManager::breakOffTab(), loadViewProfileFromConfig()
crashes when loading the profile with the split view, it is replaced
by loadRootItem() (similar to KonqViewManager::duplicateTab()).

Fix will be in KDE 4.2.4.

CCBUG: 174292


 M  +4 -1      konqmainwindow.cpp  
 M  +1 -1      konqviewmanager.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=972855