Bug 171170

Summary: konqueror crashes on myireland.pl website
Product: [Applications] konqueror Reporter: Marcin Międlar <newgargamel>
Component: generalAssignee: Konqueror Developers <konq-bugs>
Severity: crash CC: frank78ac, germain, patrick.rutka, Regnaron
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: unspecified   
OS: Linux   
Latest Commit: Version Fixed In:

Description Marcin Międlar 2008-09-16 17:57:30 UTC
Version:           4.1.1 (KDE 4.1.1) (using 4.1.1 (KDE 4.1.1), Arch Linux)
Compiler:          gcc
OS:                Linux (x86_64) release 2.6.26-ARCH

when I try to open www.myireland.pl website konqueror crashes. It was working fine in KDE3.

Comment 1 Frank Reininghaus 2008-09-16 23:28:31 UTC
Thanks for the bug report. I can't reproduce the problem: The page opens fine for me in 4.1.1 (Kubuntu) and yesterday's trunk. Does it crash directly on http://www.myireland.pl/ for you, or do you have to click a link? Is this always reproducible for you? 

It would be helpful if you could add a backtrace to this report, see
Comment 2 Marcin Międlar 2008-09-17 01:36:27 UTC
It crashes every time on this link: http://myireland.pl/irlandia/randki/
Sometimes you have to click on person's profile to get a crash. I don't have debug symbols atm but if you won't be able to reproduce it I will install kdemod with debug symbols.
Comment 3 Oliver Putz 2008-09-17 12:20:42 UTC
I can confirm this crash with a current svn checkout. My backtrace is:

Application: Konqueror (konqueror), signal SIGSEGV
[Current thread is 0 (LWP 2738)]

Thread 2 (Thread 0xb0f29b90 (LWP 2767)):
#0  0xffffe424 in __kernel_vsyscall ()
#1  0xb74ebf12 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2  0xb7566cad in QWaitCondition::wait (this=0x851d9d8, mutex=0x851d9d4, time=30000) at thread/qwaitcondition_unix.cpp:86
#3  0xb755beb0 in QThreadPoolThread::run (this=0x84e1e58) at concurrent/qthreadpool.cpp:141
#4  0xb7565a58 in QThreadPrivate::start (arg=0x84e1e58) at thread/qthread_unix.cpp:190
#5  0xb74e8160 in start_thread (arg=0xb0f29b90) at pthread_create.c:297
#6  0xb6726c0e in clone () from /lib/libc.so.6

Thread 1 (Thread 0xb6267700 (LWP 2738)):
[KCrash Handler]
#6  0xb6bde30c in QWidget::mapTo (this=0x963bee0, parent=0x80d6670, pos=@0xbfcb68d8) at ../../include/QtGui/../../src/gui/kernel/qwidget.h:982
#7  0xb6d56a4c in QWidgetBackingStore::cleanRegion (this=0x8099c10, rgn=@0xbfcb6948, widget=0x963bee0, recursiveCopyToScreen=true) at painting/qbackingstore.cpp:1052
#8  0xb6d5879b in qt_syncBackingStore (widget=0x963bee0) at painting/qbackingstore.cpp:319
#9  0xb6beddde in QWidget::event (this=0x963bee0, event=0xbfcb6ac8) at kernel/qwidget.cpp:7303
#10 0xb4533824 in KHTMLBackingStoreHackWidget::publicEvent (this=0x963bee0, e=0xbfcb6ac8) at /var/tmp/portage/kde-base/kdelibs-9999/work/kdelibs-9999/khtml/khtmlview.cpp:2086
#11 0xb45262c3 in KHTMLView::eventFilter (this=0x83795f8, o=0x963bee0, e=0x963bff8) at /var/tmp/portage/kde-base/kdelibs-9999/work/kdelibs-9999/khtml/khtmlview.cpp:2229
#12 0xb76561f1 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=0x80591a8, receiver=0x963bee0, event=0x963bff8) at kernel/qcoreapplication.cpp:698
#13 0xb6b95efe in QApplicationPrivate::notify_helper (this=0x80591a8, receiver=0x963bee0, e=0x963bff8) at kernel/qapplication.cpp:3796
#14 0xb6b9cab2 in QApplication::notify (this=0xbfcb73fc, receiver=0x963bee0, e=0x963bff8) at kernel/qapplication.cpp:3765
#15 0xb7b1f469 in KApplication::notify (this=0xbfcb73fc, receiver=0x963bee0, event=0x963bff8) at /var/tmp/portage/kde-base/kdelibs-9999/work/kdelibs-9999/kdeui/kernel/kapplication.cpp:307
#16 0xb7656771 in QCoreApplication::notifyInternal (this=0xbfcb73fc, receiver=0x963bee0, event=0x963bff8) at kernel/qcoreapplication.cpp:591
#17 0xb76575d4 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x804c310) at kernel/qcoreapplication.h:215
#18 0xb7657813 in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at kernel/qcoreapplication.cpp:1095
#19 0xb6c2af91 in QEventDispatcherX11::processEvents (this=0x8059090, flags={i = -1077186248}) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:220
#20 0xb7655300 in QEventLoop::processEvents (this=0xbfcb71b0, flags={i = -1077186184}) at kernel/qeventloop.cpp:149
#21 0xb76554a2 in QEventLoop::exec (this=0xbfcb71b0, flags={i = -1077186120}) at kernel/qeventloop.cpp:200
#22 0xb76578bf in QCoreApplication::exec () at kernel/qcoreapplication.cpp:849
#23 0xb6b95cb3 in QApplication::exec () at kernel/qapplication.cpp:3330
#24 0xb7f834e1 in kdemain (argc=2, argv=0xbfcb7714) at /var/tmp/portage/kde-base/konqueror-9999/work/konqueror/apps/konqueror/src/konqmain.cpp:227
#25 0x080487e2 in main (argc=386, argv=0x0) at /var/tmp/portage/kde-base/konqueror-9999/work/konqueror_build/apps/konqueror/src/konqueror_dummy.cpp:3
Comment 4 Oliver Putz 2008-09-17 12:34:15 UTC
Addendum: Seems like I am not able to reproduce this crash a second time. So Marcin, it would be good if you could install the debugging symbols nonetheless... (to see if the crash I got is at least the same you get)
Comment 5 Germain Garand 2008-09-17 13:59:47 UTC
I can reproduce this, and fixed it (symptomatically) in my git repo...
Comment 6 Germain Garand 2008-09-25 02:01:44 UTC
SVN commit 864146 by ggarand:

replace this backingstore hack with either an update or a repaint
depending on emergency - as it would occasionally cause crashes.

BUG: 171170

 M  +6 -6      khtmlview.cpp  

--- trunk/KDE/kdelibs/khtml/khtmlview.cpp #864145:864146
@@ -2218,19 +2218,19 @@
                    y += ap.y();
                    QRect pr = isUpdate ? static_cast<QUpdateLaterEvent*>(e)->region().boundingRect() : static_cast<QPaintEvent*>(e)->rect();
-                    bool asap = !isUpdate && !d->contentsMoving && qobject_cast<QAbstractScrollArea*>(c);
+                    bool asap = !d->contentsMoving && qobject_cast<QAbstractScrollArea*>(c);
                     if (isUpdate) {
                         setInPaintEventFlag(w, false);
-                        w->update(static_cast<QUpdateLaterEvent*>(e)->region());
+                        if (asap)
+                            w->repaint(static_cast<QUpdateLaterEvent*>(e)->region());
+                        else
+                            w->update(static_cast<QUpdateLaterEvent*>(e)->region());
-                        // implicitly call qt_syncBackingStore(w)
-                        QEvent fakeEvent(QEvent::UpdateRequest);
-                        static_cast<KHTMLBackingStoreHackWidget *>(w)->publicEvent(&fakeEvent);
                    // QScrollView needs fast repaints
-                   if ( asap && !d->painting && m_part->xmlDocImpl() && m_part->xmlDocImpl()->renderer() &&
+                   if ( asap && !isUpdate && !d->painting && m_part->xmlDocImpl() && m_part->xmlDocImpl()->renderer() &&
                         !static_cast<khtml::RenderCanvas *>(m_part->xmlDocImpl()->renderer())->needsLayout() ) {
                        repaintContents(x + pr.x(), y + pr.y(),
                                                pr.width(), pr.height()+1); // ### investigate that +1 (shows up when
Comment 7 Maksim Orlovich 2008-09-26 16:17:58 UTC
*** Bug 168081 has been marked as a duplicate of this bug. ***
Comment 8 Marcin Międlar 2008-09-26 16:43:44 UTC
Hi Guys, I can confirm now that it's fixed in konqueror 4.1.2
Thanks a lot, newgargamel