Bug 218417 - Resize images KIPI plugin crashes with Oxygen style
Summary: Resize images KIPI plugin crashes with Oxygen style
Status: RESOLVED FIXED
Alias: None
Product: Oxygen
Classification: Plasma
Component: style (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Hugo Pereira Da Costa
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-12-12 19:44 UTC by András Manţia
Modified: 2011-09-22 18:05 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description András Manţia 2009-12-12 19:44:26 UTC
Run e.g Gwenview->Plugins->Batch Processing->Resize Images. It crashes immediately if run with Oxygen widget style (doesn't crash otherwise). 
The ASSERT line is:
ASSERT failure in QVector<T>::at: "index out of range", file ../../include/QtCore/../../../../../sources/kde-trunk/qt-copy/src/corelib/tools/qvector.h, line 338


Here is the backtrace, indicating the crash comes from Oxygen:
Application: Gwenview (gwenview), signal: Aborted
[Current thread is 1 (Thread 0x7f23611617f0 (LWP 25988))]

Thread 2 (Thread 0x7f2350619910 (LWP 25989)):
#0  0x00007f235fd65049 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f23600144c1 in QWaitConditionPrivate::wait (this=0x80f610, time=18446744073709551615) at /home/andris/development/sources/kde-trunk/qt-copy/src/corelib/thread/qwaitcondition_unix.cpp:87
#2  0x00007f2360014269 in QWaitCondition::wait (this=0x80f360, mutex=0x80f358, time=18446744073709551615)
    at /home/andris/development/sources/kde-trunk/qt-copy/src/corelib/thread/qwaitcondition_unix.cpp:159
#3  0x00007f2360ab00cc in Gwenview::SemanticInfoThread::run (this=0x80f340) at /home/andris/development/sources/kde-trunk/kdegraphics/gwenview/lib/semanticinfo/nepomuksemanticinfobackend.cpp:132
#4  0x00007f2360012ec9 in QThreadPrivate::start (arg=0x80f340) at /home/andris/development/sources/kde-trunk/qt-copy/src/corelib/thread/qthread_unix.cpp:244
#5  0x00007f235fd6065d in start_thread () from /lib64/libpthread.so.0
#6  0x00007f235c76d14d in clone () from /lib64/libc.so.6
#7  0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f23611617f0 (LWP 25988)):
[KCrash Handler]
#5  0x00007f235c6ce4e5 in raise () from /lib64/libc.so.6
#6  0x00007f235c6cf9b0 in abort () from /lib64/libc.so.6
#7  0x00007f2360006c81 in qt_message_output (msgType=QtFatalMsg, 
    buf=0x11dd9c8 "ASSERT failure in QVector<T>::at: \"index out of range\", file ../../include/QtCore/../../../../../sources/kde-trunk/qt-copy/src/corelib/tools/qvector.h, line 338")
    at /home/andris/development/sources/kde-trunk/qt-copy/src/corelib/global/qglobal.cpp:2226
#8  0x00007f2360006e60 in qt_message (msgType=QtFatalMsg, msg=0x7f23601c7190 "ASSERT failure in %s: \"%s\", file %s, line %d", ap=0x7fff98f8b120)
    at /home/andris/development/sources/kde-trunk/qt-copy/src/corelib/global/qglobal.cpp:2272
#9  0x00007f23600076cd in qFatal (msg=0x7f23601c7190 "ASSERT failure in %s: \"%s\", file %s, line %d") at /home/andris/development/sources/kde-trunk/qt-copy/src/corelib/global/qglobal.cpp:2455
#10 0x00007f2360006853 in qt_assert_x (where=0x7f235dc44979 "QVector<T>::at", what=0x7f235dc448e8 "index out of range", 
    file=0x7f235dc44908 "../../include/QtCore/../../../../../sources/kde-trunk/qt-copy/src/corelib/tools/qvector.h", line=338)
    at /home/andris/development/sources/kde-trunk/qt-copy/src/corelib/global/qglobal.cpp:1997
#11 0x00007f235d3abcef in QVector<QLayoutStruct>::at (this=0x116ac08, i=1) at ../../include/QtCore/../../../../../sources/kde-trunk/qt-copy/src/corelib/tools/qvector.h:338
#12 0x00007f235d3c8c57 in QGridLayoutPrivate::distribute (this=0x116ab30, r=..., hSpacing=-1, vSpacing=-1) at /home/andris/development/sources/kde-trunk/qt-copy/src/gui/kernel/qgridlayout.cpp:947
#13 0x00007f235d3ca6fb in QGridLayout::setGeometry (this=0x1166470, rect=...) at /home/andris/development/sources/kde-trunk/qt-copy/src/gui/kernel/qgridlayout.cpp:1455
#14 0x00007f235d3d4132 in QLayoutPrivate::doResize (this=0x116ab30, r=...) at /home/andris/development/sources/kde-trunk/qt-copy/src/gui/kernel/qlayout.cpp:681
#15 0x00007f235d3d6371 in QLayout::activate (this=0x1166470) at /home/andris/development/sources/kde-trunk/qt-copy/src/gui/kernel/qlayout.cpp:1259
#16 0x00007f235d3d4238 in QLayout::widgetEvent (this=0x1166470, e=0x7fff98f8bcc0) at /home/andris/development/sources/kde-trunk/qt-copy/src/gui/kernel/qlayout.cpp:707
#17 0x00007f235d39b3c8 in QApplicationPrivate::notify_helper (this=0x69e0f0, receiver=0x1165520, e=0x7fff98f8bcc0)
    at /home/andris/development/sources/kde-trunk/qt-copy/src/gui/kernel/qapplication.cpp:4244
#18 0x00007f235d39b25a in QApplication::notify (this=0x7fff98f8d1f0, receiver=0x1165520, e=0x7fff98f8bcc0) at /home/andris/development/sources/kde-trunk/qt-copy/src/gui/kernel/qapplication.cpp:4218
#19 0x00007f235ee0c89b in KApplication::notify (this=0x7fff98f8d1f0, receiver=0x1165520, event=0x7fff98f8bcc0) at /home/andris/development/sources/kde-trunk/kdelibs/kdeui/kernel/kapplication.cpp:302
#20 0x00007f236013d3a8 in QCoreApplication::notifyInternal (this=0x7fff98f8d1f0, receiver=0x1165520, event=0x7fff98f8bcc0)
    at /home/andris/development/sources/kde-trunk/qt-copy/src/corelib/kernel/qcoreapplication.cpp:704
#21 0x00007f236014132d in QCoreApplication::sendEvent (receiver=0x1165520, event=0x7fff98f8bcc0)
    at ../../include/QtCore/../../../../../sources/kde-trunk/qt-copy/src/corelib/kernel/qcoreapplication.h:215
#22 0x00007f235d40c660 in QWidgetPrivate::sendPendingMoveAndResizeEvents (this=0x116a910, recursive=true, disableUpdates=true)
    at /home/andris/development/sources/kde-trunk/qt-copy/src/gui/kernel/qwidget.cpp:7070
#23 0x00007f235d40c739 in QWidgetPrivate::sendPendingMoveAndResizeEvents (this=0x1162d90, recursive=true, disableUpdates=true)
    at /home/andris/development/sources/kde-trunk/qt-copy/src/gui/kernel/qwidget.cpp:7082
#24 0x00007f235d40c739 in QWidgetPrivate::sendPendingMoveAndResizeEvents (this=0x115d840, recursive=true, disableUpdates=true)
    at /home/andris/development/sources/kde-trunk/qt-copy/src/gui/kernel/qwidget.cpp:7082
#25 0x00007f235d40c739 in QWidgetPrivate::sendPendingMoveAndResizeEvents (this=0x855880, recursive=true, disableUpdates=true)
    at /home/andris/development/sources/kde-trunk/qt-copy/src/gui/kernel/qwidget.cpp:7082
#26 0x00007f235d405d31 in QWidgetPrivate::prepareToRender (this=0x855880, region=..., renderFlags=...) at /home/andris/development/sources/kde-trunk/qt-copy/src/gui/kernel/qwidget.cpp:5149
#27 0x00007f235d404bdb in QWidget::render (this=0x10c01e0, target=0x7fff98f8c1e0, targetOffset=..., sourceRegion=..., renderFlags=...)
    at /home/andris/development/sources/kde-trunk/qt-copy/src/gui/kernel/qwidget.cpp:4853
#28 0x00007f235d4c4579 in QPixmap::grabWidget (widget=0x10c01e0, rect=...) at /home/andris/development/sources/kde-trunk/qt-copy/src/gui/image/qpixmap.cpp:1090
#29 0x00007f235515a63f in Oxygen::TransitionWidget::grab (this=0xa9f260, widget=0x10c01e0, rect=...)
    at /home/andris/development/sources/kde-trunk/kdebase/runtime/kstyles/oxygen/transitions/oxygentransitionwidget.cpp:86
#30 0x00007f235515523c in Oxygen::LineEditData::timerEvent (this=0x10f6f50, event=0x7fff98f8cd20)
    at /home/andris/development/sources/kde-trunk/kdebase/runtime/kstyles/oxygen/transitions/oxygenlineeditdata.cpp:81
#31 0x00007f2360156fdf in QObject::event (this=0x10f6f50, e=0x7fff98f8cd20) at /home/andris/development/sources/kde-trunk/qt-copy/src/corelib/kernel/qobject.cpp:1215
#32 0x00007f235d39b408 in QApplicationPrivate::notify_helper (this=0x69e0f0, receiver=0x10f6f50, e=0x7fff98f8cd20)
    at /home/andris/development/sources/kde-trunk/qt-copy/src/gui/kernel/qapplication.cpp:4253
#33 0x00007f235d398936 in QApplication::notify (this=0x7fff98f8d1f0, receiver=0x10f6f50, e=0x7fff98f8cd20) at /home/andris/development/sources/kde-trunk/qt-copy/src/gui/kernel/qapplication.cpp:3663
#34 0x00007f235ee0c89b in KApplication::notify (this=0x7fff98f8d1f0, receiver=0x10f6f50, event=0x7fff98f8cd20) at /home/andris/development/sources/kde-trunk/kdelibs/kdeui/kernel/kapplication.cpp:302
#35 0x00007f236013d3a8 in QCoreApplication::notifyInternal (this=0x7fff98f8d1f0, receiver=0x10f6f50, event=0x7fff98f8cd20)
    at /home/andris/development/sources/kde-trunk/qt-copy/src/corelib/kernel/qcoreapplication.cpp:704
#36 0x00007f236014132d in QCoreApplication::sendEvent (receiver=0x10f6f50, event=0x7fff98f8cd20)
    at ../../include/QtCore/../../../../../sources/kde-trunk/qt-copy/src/corelib/kernel/qcoreapplication.h:215
#37 0x00007f236017d981 in QTimerInfoList::activateTimers (this=0x69f150) at /home/andris/development/sources/kde-trunk/qt-copy/src/corelib/kernel/qeventdispatcher_unix.cpp:603
#38 0x00007f236017ea4d in QEventDispatcherUNIX::activateTimers (this=0x6862c0) at /home/andris/development/sources/kde-trunk/qt-copy/src/corelib/kernel/qeventdispatcher_unix.cpp:862
#39 0x00007f236017ed6d in QEventDispatcherUNIX::processEvents (this=0x6862c0, flags=...) at /home/andris/development/sources/kde-trunk/qt-copy/src/corelib/kernel/qeventdispatcher_unix.cpp:924
#40 0x00007f235d4828fe in QEventDispatcherX11::processEvents (this=0x6862c0, flags=...) at /home/andris/development/sources/kde-trunk/qt-copy/src/gui/kernel/qeventdispatcher_x11.cpp:152
#41 0x00007f236013a3a0 in QEventLoop::processEvents (this=0x7fff98f8d130, flags=...) at /home/andris/development/sources/kde-trunk/qt-copy/src/corelib/kernel/qeventloop.cpp:149
#42 0x00007f236013a4f6 in QEventLoop::exec (this=0x7fff98f8d130, flags=...) at /home/andris/development/sources/kde-trunk/qt-copy/src/corelib/kernel/qeventloop.cpp:201
#43 0x00007f236013daaa in QCoreApplication::exec () at /home/andris/development/sources/kde-trunk/qt-copy/src/corelib/kernel/qcoreapplication.cpp:981
#44 0x00007f235d3984d4 in QApplication::exec () at /home/andris/development/sources/kde-trunk/qt-copy/src/gui/kernel/qapplication.cpp:3572
#45 0x0000000000443db0 in main (argc=<value optimized out>, argv=<value optimized out>) at /home/andris/development/sources/kde-trunk/kdegraphics/gwenview/app/main.cpp:95
Comment 1 András Manţia 2009-12-13 12:41:04 UTC
It is reproducible with today's trunk and Qt 4.6 branch.
Comment 2 Hugo Pereira Da Costa 2009-12-14 15:50:44 UTC
mmm. As in bug 216215 this happens in a QWidget::render called by Oxygen on a valid widget ...
Comment 3 Hugo Pereira Da Costa 2009-12-15 03:30:39 UTC
Hi. I can reproduce ...
I'm pretty much at a loss here though.
1/ other plugins do not create a crash, while pretty much the same window is shown
2/ can you tell me how you infer an infinite loop in QLineEdit painting from the crash report above ? (I'm not arguing, I just don't see it.)

Will try to look a bit inside Qt (since from the debug output I put inside oxygen I did not find anything suspicious).
Comment 4 Hugo Pereira Da Costa 2009-12-15 04:45:43 UTC
oops sorry for the comment on not infinite loop in comment #3. This was actually referring to bug #21845.
Comment 5 András Manţia 2010-02-13 21:10:58 UTC
This still happens (trunk, qt 4.6.1). :(
Comment 6 Hugo Pereira Da Costa 2010-02-14 03:43:15 UTC
Hi, 
Still can't reproduce here. With kde either from trunk or using kde4.4.0 :-(
Therefore hard to debug :-(
Still looking.
Comment 7 Hugo Pereira Da Costa 2010-02-14 03:45:14 UTC
Hi, 
Still can't reproduce here. With kde either from trunk or using kde4.4.0 :-(
Therefore hard to debug :-(
Still looking.
In the meanwhile, as a temporary solution you can manually disable lineEdit animations by adding: 

LineEditTransitionsEnabled=false

in
~/.kde4/share/config/oxygenrc
(or ~/.kde/share/config/oxygenrc)

Will keep you posted if I find something suspicious.
under the [style] section.
Comment 8 Hugo Pereira Da Costa 2010-02-14 03:46:32 UTC
Sorry. I meant:

"By adding: 

LineEditTransitionsEnabled=false

in
~/.kde4/share/config/oxygenrc
(or ~/.kde/share/config/oxygenrc)

under the [Style] section. (uppercase S)"
Comment 9 Hugo Pereira Da Costa 2010-02-16 06:40:56 UTC
SVN commit 1090822 by hpereiradacosta:

Remove "GrabFromWindow" flag, cause unnecessary, and might cause crash (notably in KIPI 
plugin).
CCBUG: 218417



 M  +2 -1      oxygenlineeditdata.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1090822
Comment 10 Hugo Pereira Da Costa 2010-02-16 06:42:41 UTC
Hi again.
Could you try update after commit from comment #9. Its a bit of a shot in the dark (since I can't reproduce), but might be the reason ... Keep me posted.
I'll backport (and close the bug) if this fixes that.
Thanks
Comment 11 András Manţia 2010-02-16 10:31:43 UTC
Nor the patch or the LineEditTransitionsEnabled=false fixes it, but turning off the animations does (with AnimationsEnabled=false or the GUI).
Comment 12 Hugo Pereira Da Costa 2010-08-26 23:30:13 UTC
Still there in 4.5.0 ?
Comment 13 András Manţia 2010-09-08 18:33:32 UTC
Reproducible with trunk. Disabling Text editor transitions (with oxygen-settings) makes it go away.
Comment 14 Hugo Pereira Da Costa 2010-09-09 03:17:43 UTC
interesting, comment #13 sort of contradicts comment #11 (about adding LineEditTransitionsEnabled=false ...), since this is pretty much what oxygen-settings do. Well. Might have been a typo when trying to add it manually. 
Anyway, comment #13 makes sense, based on the crash report (namely line #30 Oxygen::LineEditData::timerEvent)
Comment 15 Hugo Pereira Da Costa 2010-09-10 17:26:07 UTC
SVN commit 1173847 by hpereiradacosta:

do not grab widget on show/resiwe/move events. This creates artifacts and possibly crashes. 
Instead, just reset the end pixmap. This will bypass some of the animations but should fix the 
above.

CCBUG: 218417


 M  +1 -4      oxygenlineeditdata.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1173847
Comment 16 Hugo Pereira Da Costa 2011-01-12 12:46:41 UTC
Still crashing ?
Comment 17 András Manţia 2011-09-22 18:05:08 UTC
I just tested (sorry, for a long time I didn't use Oxygen for performance reasons, I just switched back now) and works fine, no crash.