Bug 157133 - small background image makes plasma crash
Summary: small background image makes plasma crash
Status: RESOLVED FIXED
Alias: None
Product: plasma4
Classification: Plasma
Component: containment-desktop (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Plasma Bugs List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-02-03 01:16 UTC by Oliver Putz
Modified: 2008-02-03 17:57 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments
Image that makes plasma crash is selected as background (bug #157133) (161 bytes, image/png)
2008-02-03 01:18 UTC, Oliver Putz
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Oliver Putz 2008-02-03 01:16:56 UTC
Version:            (using Devel)
Installed from:    Compiled sources
Compiler:          gcc version 4.1.2 20070214 
OS:                Linux

If you select a too small wallpaper in the "configure desktop" dialog, (and make plasma scale the image) plasma crashes. (for example take a 3x3px image)

This bug crashes in the same region as bug #156944, but this is not a dupe. Below you can find two backtraces of this crash. The first one is the standard one, and the second has some more debugging information in the crucial part for the code.

First backtrace:
Application: Plasma Workspace (plasma), signal SIGABRT
[?1034hUsing host libthread_db library "/lib/libthread_db.so.1".
[Thread debugging using libthread_db enabled]
[New Thread 0xb62af6e0 (LWP 5199)]
[New Thread 0xb381db90 (LWP 5213)]
[New Thread 0xb4b53b90 (LWP 5200)]
[KCrash handler]
#5  0xffffe410 in __kernel_vsyscall ()
#6  0xb65551f1 in *__GI_raise (sig=6)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#7  0xb65569b8 in *__GI_abort () at abort.c:88
#8  0xb7344265 in qt_message_output (msgType=QtFatalMsg, 
    buf=0xb381b1bc "ASSERT: \"imgSize.width() > 0\" in file /var/tmp/portage/kde-base/kdebase-9999.4/work/kdebase-9999.4/workspace/plasma/containments/desktop/renderthread.cpp, line 133") at global/qglobal.cpp:2160
#9  0xb734432a in qFatal (msg=0xb744b87c "ASSERT: \"%s\" in file %s, line %d")
    at global/qglobal.cpp:2392
#10 0xb7344555 in qt_assert (assertion=0xb4d985dd "imgSize.width() > 0", 
    file=0xb4d98608 "/var/tmp/portage/kde-base/kdebase-9999.4/work/kdebase-9999.4/workspace/plasma/containments/desktop/renderthread.cpp", line=133)
    at global/qglobal.cpp:1917
#11 0xb4d937aa in RenderThread::run (this=0x82cdf04)
    at /var/tmp/portage/kde-base/kdebase-9999.4/work/kdebase-9999.4/workspace/plasma/containments/desktop/renderthread.cpp:133
#12 0xb734c5de in QThreadPrivate::start (arg=0x82cdf04)
    at thread/qthread_unix.cpp:179
#13 0xb730018b in start_thread (arg=0xb381db90) at pthread_create.c:296
#14 0xb65ed35e in clone () from /lib/libc.so.6

Thread 1 (Thread 0xb62af6e0 (LWP 5199)):
#0  0xffffe410 in __kernel_vsyscall ()
#1  0xb7304586 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2  0xb734d0e0 in QWaitCondition::wait (this=0x82c1260, mutex=0x82c124c, 
    time=4294967295) at thread/qwaitcondition_unix.cpp:267
#3  0xb734c499 in QThread::wait (this=0x82cdf04, time=4294967295)
    at thread/qthread_unix.cpp:550
#4  0xb4d9413d in ~RenderThread (this=0x82cdf04)
    at /var/tmp/portage/kde-base/kdebase-9999.4/work/kdebase-9999.4/workspace/plasma/containments/desktop/renderthread.cpp:35
#5  0xb4d7e087 in ~BackgroundDialog (this=0x82cddf8)
    at /var/tmp/portage/kde-base/kdebase-9999.4/work/kdebase_build/workspace/plasma/containments/desktop/../../../../../kdebase-9999.4/workspace/plasma/containments/desktop/backgrounddialog.h:35
#6  0xb4d80bf1 in ~DefaultDesktop (this=0x8125908)
    at /var/tmp/portage/kde-base/kdebase-9999.4/work/kdebase-9999.4/workspace/plasma/containments/desktop/desktop.cpp:80
#7  0xb7eb2fa6 in qDeleteAll<QList<Plasma::Containment*>::const_iterator> (
    begin=@0xbfbdedf8, end=@0xbfbdedf4)
    at /usr/include/qt4/QtCore/qalgorithms.h:343
#8  0xb7eb31d3 in qDeleteAll<QList<Plasma::Containment*> > (c=@0x81068e8)
    at /usr/include/qt4/QtCore/qalgorithms.h:351
#9  0xb7eb4b08 in ~Private (this=0x81068c0)
    at /var/tmp/portage/kde-base/kdebase-9999.4/work/kdebase-9999.4/workspace/libs/plasma/corona.cpp:67
#10 0xb7eb27c1 in ~Corona (this=0x8108888)
    at /var/tmp/portage/kde-base/kdebase-9999.4/work/kdebase-9999.4/workspace/libs/plasma/corona.cpp:142
#11 0xb7f8f5dc in PlasmaApp::cleanup (this=0x8056c88)
    at /var/tmp/portage/kde-base/kdebase-9999.4/work/kdebase-9999.4/workspace/plasma/plasma/plasmaapp.cpp:227
#12 0xb7f8f66d in PlasmaApp::qt_metacall (this=0x8056c88, 
    _c=QMetaObject::InvokeMetaMethod, _id=3, _a=0xbfbdf334)
    at /var/tmp/portage/kde-base/kdebase-9999.4/work/kdebase_build/workspace/plasma/plasma/plasmaapp.moc:72
#13 0xb742a1f4 in QMetaObject::activate (sender=0x8056c88, 
    from_signal_index=4, to_signal_index=4, argv=<value optimized out>)
    at kernel/qobject.cpp:3081
#14 0xb742ad94 in QMetaObject::activate (sender=0x8056c88, m=0xb74c98c4, 
    local_signal_index=0, argv=0x0) at kernel/qobject.cpp:3140
#15 0xb744ab13 in QCoreApplication::aboutToQuit (this=0x8056c88)
    at .moc/debug-shared/moc_qcoreapplication.cpp:119
#16 0xb79d169b in KApplication::xioErrhandler (this=0x8056c88, dpy=0x80556d0)
    at /var/tmp/portage/kde-base/kdelibs-9999.4/work/kdelibs-9999.4/kdeui/kernel/kapplication.cpp:416
#17 0xb79d16e6 in kde_xio_errhandler (dpy=0x80556d0)
    at /var/tmp/portage/kde-base/kdelibs-9999.4/work/kdelibs-9999.4/kdeui/kernel/kapplication.cpp:130
#18 0xb771acc6 in _XIOError (dpy=0x80556d0) at XlibInt.c:2940
#19 0xb771ccd0 in _XEventsQueued (dpy=0x80556d0, mode=2) at XlibInt.c:788
#20 0xb770eadc in XEventsQueued (dpy=0x80556d0, mode=2) at Pending.c:44
#21 0xb6b41d3c in QEventDispatcherX11::processEvents (this=0x8077b38, 
    flags=@0xbfbdfd84) at kernel/qeventdispatcher_x11.cpp:72
#22 0xb7416191 in QEventLoop::processEvents (this=0xbfbdfdf0, 
    flags=@0xbfbdfdb8) at kernel/qeventloop.cpp:140
#23 0xb741629a in QEventLoop::exec (this=0xbfbdfdf0, flags=@0xbfbdfdf8)
    at kernel/qeventloop.cpp:186
#24 0xb7418626 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:759
#25 0xb6ab7487 in QApplication::exec () at kernel/qapplication.cpp:3053
#26 0xb7f8ed54 in kdemain (argc=1, argv=0xbfbdfff4)
    at /var/tmp/portage/kde-base/kdebase-9999.4/work/kdebase-9999.4/workspace/plasma/plasma/main.cpp:54
#27 0x080487e2 in main (argc=)
    at /var/tmp/portage/kde-base/kdebase-9999.4/work/kdebase_build/workspace/plasma/plasma/plasma-qgv_dummy.cpp:3
#28 0xb6541fdc in __libc_start_main (main=0x80487c0 <main>, argc=1, 
    ubp_av=0xbfbdfff4, init=0x8048810 <__libc_csu_init>, 
    fini=0x8048800 <__libc_csu_fini>, rtld_fini=0xb7fa9100 <_dl_fini>, 
    stack_end=0xbfbdffec) at libc-start.c:229
#29 0x08048731 in _start ()
#0  0xffffe410 in __kernel_vsyscall ()


Second backtrace:
Application: Plasma Workspace (plasma), signal SIGABRT
Using host libthread_db library "/lib/libthread_db.so.1".
[Thread debugging using libthread_db enabled]
[New Thread 0xb623a6e0 (LWP 8758)]
[New Thread 0xb3fcdb90 (LWP 8810)]
[New Thread 0xb4addb90 (LWP 8761)]
[KCrash handler]
#6  0xffffe410 in __kernel_vsyscall ()
#7  0xb64e01f1 in *__GI_raise (sig=6)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#8  0xb64e19b8 in *__GI_abort () at abort.c:88
#9  0xb72cf265 in qt_message_output (msgType=QtFatalMsg, 
    buf=0xb3fcb18c "Oh, oh. We may earn a dif-by-zero here! width=0 height=0 ratio=0.125") at global/qglobal.cpp:2160
#10 0xb72cf32a in qFatal (
    msg=0x83ec538 "Oh, oh. We may earn a dif-by-zero here! width=0 height=0 ratio=0.125") at global/qglobal.cpp:2392
#11 0xb4d1d9b3 in RenderThread::run (this=0x83283fc)
    at /var/tmp/portage/kde-base/kdebase-9999.4/work/kdebase-9999.4/workspace/plasma/containments/desktop/renderthread.cpp:133
#12 0xb72d75de in QThreadPrivate::start (arg=0x83283fc)
    at thread/qthread_unix.cpp:179
#13 0xb728b18b in start_thread (arg=0xb3fcdb90) at pthread_create.c:296
#14 0xb657835e in clone () from /lib/libc.so.6

Thread 1 (Thread 0xb623a6e0 (LWP 8758)):
#0  0xffffe410 in __kernel_vsyscall ()
#1  0xb729202b in read () from /lib/libpthread.so.0
#2  0xb76adadd in _X11TransSocketRead (ciptr=0x8055c18, buf=0xbfea11ec "8", 
    size=32) at /usr/include/X11/Xtrans/Xtranssock.c:2151
#3  0xb76ad751 in _X11TransRead (ciptr=0x8055c18, buf=0xbfea11ec "8", size=32)
    at /usr/include/X11/Xtrans/Xtrans.c:893
#4  0xb76a69a7 in _XRead (dpy=0x80556d0, data=0xbfea11ec "8", size=32)
    at XlibInt.c:1089
#5  0xb76a71a3 in _XReply (dpy=0x80556d0, rep=0xbfea11ec, extra=0, discard=0)
    at XlibInt.c:1728
#6  0xb76905b5 in XGetWindowProperty (dpy=0x80556d0, w=27269619, property=35, 
    offset=0, length=9, delete=0, req_type=35, actual_type=0xbfea1268, 
    actual_format=0xbfea1264, nitems=0xbfea125c, bytesafter=0xbfea1260, 
    prop=0xbfea126c) at GetProp.c:64
#7  0xb768fa8e in XGetWMHints (dpy=0x80556d0, w=27269619) at GetHints.c:118
#8  0xb6abe5d9 in QWidgetPrivate::setWindowIcon_sys (this=0x83df8e0, 
    forceReset=false) at kernel/qwidget_x11.cpp:1138
#9  0xb6a9221f in QWidget::create (this=0x833f430, window=0, 
    initializeWindow=true, destroyOldWindow=true) at kernel/qwidget.cpp:1124
#10 0xb6a93d26 in QWidget::setVisible (this=0x833f430, visible=true)
    at kernel/qwidget.cpp:5552
#11 0xb6a7d19c in QToolTip::showText (pos=@0xbfea1934, text=@0x8334acc, 
    w=0x8324700, rect=@0xbfea1444)
    at ../../include/QtGui/../../src/gui/kernel/qwidget.h:448
#12 0xb6a7d22e in QToolTip::showText (pos=@0xbfea1934, text=@0x8334acc, 
    w=0x8324700) at kernel/qtooltip.cpp:404
#13 0xb6a9504f in QWidget::event (this=0x8324700, event=0xbfea1920)
    at kernel/qwidget.cpp:6440
#14 0xb6d8a4e3 in QAbstractButton::event (this=0x8324700, e=0xbfea11ec)
    at widgets/qabstractbutton.cpp:1063
#15 0xb6e31982 in QPushButton::event (this=0x8324700, e=0xbfea1920)
    at widgets/qpushbutton.cpp:665
#16 0xb6a42e8a in QApplicationPrivate::notify_helper (this=0x8074ad0, 
    receiver=0x8324700, e=0xbfea1920) at kernel/qapplication.cpp:3556
#17 0xb6a448a8 in QApplication::notify (this=0x8056c88, receiver=0x8324700, 
    e=0xbfea1920) at kernel/qapplication.cpp:3399
#18 0xb795dbe3 in KApplication::notify (this=0x8056c88, receiver=0x8324700, 
    event=0xbfea1920)
    at /var/tmp/portage/kde-base/kdelibs-9999.4/work/kdelibs-9999.4/kdeui/kernel/kapplication.cpp:311
#19 0xb73a1d7b in QCoreApplication::notifyInternal (this=0x8056c88, 
    receiver=0x8324700, event=0xbfea1920) at kernel/qcoreapplication.cpp:530
#20 0xb6a48ca2 in QApplication::event (this=0x8056c88, e=0xbfea1d18)
    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:200
#21 0xb6a42e8a in QApplicationPrivate::notify_helper (this=0x8074ad0, 
    receiver=0x8056c88, e=0xbfea1d18) at kernel/qapplication.cpp:3556
#22 0xb6a4477a in QApplication::notify (this=0x8056c88, receiver=0x8056c88, 
    e=0xbfea1d18) at kernel/qapplication.cpp:3115
#23 0xb795dbe3 in KApplication::notify (this=0x8056c88, receiver=0x8056c88, 
    event=0xbfea1d18)
    at /var/tmp/portage/kde-base/kdelibs-9999.4/work/kdelibs-9999.4/kdeui/kernel/kapplication.cpp:311
#24 0xb73a1d7b in QCoreApplication::notifyInternal (this=0x8056c88, 
    receiver=0x8056c88, event=0xbfea1d18) at kernel/qcoreapplication.cpp:530
#25 0xb73caefb in QTimerInfoList::activateTimers (this=0x807520c)
    at kernel/qcoreapplication.h:200
#26 0xb73cafd1 in QEventDispatcherUNIX::activateTimers (this=0x8073de8)
    at kernel/qeventdispatcher_unix.cpp:828
#27 0xb73cb9ab in QEventDispatcherUNIX::processEvents (this=0x8073de8, 
    flags=@0xbfea1e98) at kernel/qeventdispatcher_unix.cpp:890
#28 0xb6acccce in QEventDispatcherX11::processEvents (this=0x8073de8, 
    flags=@0xbfea1ec4) at kernel/qeventdispatcher_x11.cpp:145
#29 0xb73a1191 in QEventLoop::processEvents (this=0xbfea1f30, 
    flags=@0xbfea1ef8) at kernel/qeventloop.cpp:140
#30 0xb73a129a in QEventLoop::exec (this=0xbfea1f30, flags=@0xbfea1f38)
    at kernel/qeventloop.cpp:186
#31 0xb73a3626 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:759
#32 0xb6a42487 in QApplication::exec () at kernel/qapplication.cpp:3053
#33 0xb7f19d54 in kdemain (argc=1, argv=0xbfea2134)
    at /var/tmp/portage/kde-base/kdebase-9999.4/work/kdebase-9999.4/workspace/plasma/plasma/main.cpp:54
#34 0x080487e2 in main (argc=56, argv=0x83ed964)
    at /var/tmp/portage/kde-base/kdebase-9999.4/work/kdebase_build/workspace/plasma/plasma/plasma-qgv_dummy.cpp:3
#35 0xb64ccfdc in __libc_start_main (main=0x80487c0 <main>, argc=1, 
    ubp_av=0xbfea2134, init=0x8048810 <__libc_csu_init>, 
    fini=0x8048800 <__libc_csu_fini>, rtld_fini=0xb7f34100 <_dl_fini>, 
    stack_end=0xbfea212c) at libc-start.c:229
#36 0x08048731 in _start ()
#0  0xffffe410 in __kernel_vsyscall ()
Comment 1 Oliver Putz 2008-02-03 01:18:01 UTC
Created attachment 23408 [details]
Image that makes plasma crash is selected as background (bug #157133)
Comment 2 Riccardo Iaconelli 2008-02-03 17:24:56 UTC
The problem is in the image itself, anyway I'm committing a workaround to at least prevent crashes...
Comment 3 Oliver Putz 2008-02-03 17:50:53 UTC
Hm, are you sure that the problem is with the image itself? I ask because, if I create a 5*5px image in gimp the very same way I create the 3*3px image, plasma does not crash when I use the larger picture as a scaled background.
Comment 4 Riccardo Iaconelli 2008-02-03 17:57:31 UTC
SVN commit 770406 by ruphy:

Set the size to 1 instead of asserting and crashing.
Aaron, as this is controversial, I'll let you decide if this fix is ok. (read the bugreport to know more)

BUG: 157133


 M  +6 -2      renderthread.cpp  


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