From kde-active Mon Apr 30 20:15:03 2012 From: Marius Cirsta Date: Mon, 30 Apr 2012 20:15:03 +0000 To: kde-active Subject: problems with shadows in initPixmap("shadow-top") lead to krunner crashing Message-Id: X-MARC-Message: https://marc.info/?l=kde-active&m=133581704506944 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--e89a8fb1fd92ff8be804beeb1ba1" --e89a8fb1fd92ff8be804beeb1ba1 Content-Type: text/plain; charset=ISO-8859-1 Hi First of all sorry for posting here, not sure if it's the right list to post to but seems like there's dev activity here. I'm a maintainer for Qt and KDE for less known distro, Frugalware. Ever since the latest upgrade to glibc 2.15 we've had krunner crashing on start with bad_alloc. I've managed to track the problem down after a some debugging and the gdb backtrace is attached. Here's a description of what goes wrong. It's trying to use this function to get all those shadows: QPixmap SvgPrivate::findInCache(const QString &elementId, const QSizeF &s) it gets to : if (elementId.isEmpty() || (multipleImages && s.isValid())) { size = s.toSize(); } else { size = elementRect(actualElementId).size().toSize(); } takes the else branch and size is returned as 0 from here: QRectF SvgPrivate::findAndCacheElementRect(const QString &elementId) { ........ QRectF elementRect = renderer->elementExists(elementId) ? renderer->matrixForElement(elementId).map(renderer->boundsOnElement(elementId)).boundingRect() : QRectF(); where it just builds a new QRectF with sizes set to 0 ( width and height ) it then all comes back here: void PanelShadows::Private::initPixmap(const QString &element) { #ifdef Q_WS_X11 QPixmap pix = q->pixmap(element); if (pix.handle() == 0) { volatile Pixmap xPix = XCreatePixmap(QX11Info::display(), QX11Info::appRootWindow(), pix.width(), pix.height(), 32); QPixmap tempPix = QPixmap::fromX11Pixmap(xPix, QPixmap::ExplicitlyShared); tempPix.fill(Qt::transparent); QPainter p(&tempPix); p.drawPixmap(QPoint(0, 0), pix); m_shadowPixmaps << tempPix; pix will have 0 width and 0 height so X will error out resulting in an invalid xPix. Then tempPix will have really weird values for width and height, things like -123232 or 32555 , invalid ones for sure. When it gets to m_shadowPixmaps << tempPix qt will throws that bad_alloc. I've gotten this far but I'm still not sure what the cause of it is or how to properly fix it. My hunch is that all these pixmaps that fail , all these shadows: initPixmap("shadow-top"); initPixmap("shadow-topright"); initPixmap("shadow-right"); initPixmap("shadow-bottomright"); initPixmap("shadow-bottom"); initPixmap("shadow-bottomleft"); initPixmap("shadow-left"); initPixmap("shadow-topleft"); should have been created by the renderer from the theme but somehow this fails. SVGs are not present , can't be rendered ? Didn't check this yet. Anyway I think there should be a better way for KDE to handle this even if there is a problem with the theme. There's also a bug open for Arch users having a problem like this and my guess is that it's the same one: https://bugs.kde.org/show_bug.cgi?id=298131 Thanks for reading this. --e89a8fb1fd92ff8be804beeb1ba1 Content-Type: text/plain; charset=US-ASCII; name="kdestrace.txt" Content-Disposition: attachment; filename="kdestrace.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h1o4u5vy0 IzAgIDB4MDAwMDdmZmZmM2JlZWE3NyBpbiBfX2N4YV90aHJvdyAoKSBmcm9tIC91c3IvbGliL2xp YnN0ZGMrKy5zby42CiMxICAweDAwMDA3ZmZmZjQxNmNjNDIgaW4gcUJhZEFsbG9jICgpIGF0IGds b2JhbC9xZ2xvYmFsLmNwcDoxOTkxCiMyICAweDAwMDA3ZmZmZjRkOTQwOTUgaW4gUVgxMVBpeG1h cERhdGE6OnRvSW1hZ2UgKHRoaXM9MHg4MjVmNjAsIHJlY3Q9Li4uKSBhdCBpbWFnZS9xcGl4bWFw X3gxMS5jcHA6MTU1NQojMyAgMHgwMDAwN2ZmZmY0ZDkwM2VhIGluIFFYMTFQaXhtYXBEYXRhOjp0 b0ltYWdlICh0aGlzPTxvcHRpbWl6ZWQgb3V0PikgYXQgaW1hZ2UvcXBpeG1hcF94MTEuY3BwOjE1 ODQKIzQgIDB4MDAwMDdmZmZmNGQ5MDcwZCBpbiBRWDExUGl4bWFwRGF0YTo6Y29weSAodGhpcz0w eDgyNjcxMCwgZGF0YT0weDgyNWY2MCwgcmVjdD0uLi4pIGF0IGltYWdlL3FwaXhtYXBfeDExLmNw cDoyMjY5CiM1ICAweDAwMDA3ZmZmZjRkN2RhNmEgaW4gUVBpeG1hcDo6Y29weSAodGhpcz10aGlz QGVudHJ5PTB4N2ZmZmZmZmZjYTEwLCByZWN0PS4uLikgYXQgaW1hZ2UvcXBpeG1hcC5jcHA6Mzkw CiM2ICAweDAwMDA3ZmZmZjRkN2VkZjcgaW4gUVBpeG1hcDo6UVBpeG1hcCAodGhpcz0weDdkZTRi MCwgcGl4bWFwPS4uLikgYXQgaW1hZ2UvcXBpeG1hcC5jcHA6MzAzCiM3ICAweDAwMDA3ZmZmZjcz NGFiYmEgaW4gbm9kZV9jb25zdHJ1Y3QgKHQ9Li4uLCBuPTB4YWFlZTk4LCB0aGlzPTxvcHRpbWl6 ZWQgb3V0PikgYXQgL3Vzci9pbmNsdWRlL1F0Q29yZS9xbGlzdC5oOjM3MgojOCAgUUxpc3Q8UVBp eG1hcD46OmFwcGVuZCAodGhpcz10aGlzQGVudHJ5PTB4ODIxOTU4LCB0PS4uLikgYXQgL3Vzci9p bmNsdWRlL1F0Q29yZS9xbGlzdC5oOjUxMgojOSAgMHgwMDAwN2ZmZmY3MzQ5YTMzIGluIG9wZXJh dG9yPDwgKHQ9Li4uLCB0aGlzPTB4ODIxOTU4KSBhdCAvdXNyL2luY2x1ZGUvUXRDb3JlL3FsaXN0 Lmg6MzM0CiMxMCBQYW5lbFNoYWRvd3M6OlByaXZhdGU6OmluaXRQaXhtYXAgKHRoaXM9dGhpc0Bl bnRyeT0weDgyMTk1MCwgZWxlbWVudD0uLi4pIGF0IC9tbnQvYXV4L3BhY2thZ2VzL2tkZWJhc2Ut d29ya3NwYWNlL3NyYy9rZGUtd29ya3NwYWNlLTQuOC4yL2xpYnMvcGxhc21hZ2VuZXJpY3NoZWxs L3BhbmVsc2hhZG93cy5jcHA6MTMxCiMxMSAweDAwMDA3ZmZmZjczNDljZmEgaW4gUGFuZWxTaGFk b3dzOjpQcml2YXRlOjpzZXR1cFBpeG1hcHMgKHRoaXM9dGhpc0BlbnRyeT0weDgyMTk1MCkgYXQg L21udC9hdXgvcGFja2FnZXMva2RlYmFzZS13b3Jrc3BhY2Uvc3JjL2tkZS13b3Jrc3BhY2UtNC44 LjIvbGlicy9wbGFzbWFnZW5lcmljc2hlbGwvcGFuZWxzaGFkb3dzLmNwcDoxNDIKIzEyIDB4MDAw MDdmZmZmNzM0YTY1ZCBpbiBQYW5lbFNoYWRvd3M6OlByaXZhdGU6OnVwZGF0ZVNoYWRvd3MgKHRo aXM9MHg4MjE5NTApIGF0IC9tbnQvYXV4L3BhY2thZ2VzL2tkZWJhc2Utd29ya3NwYWNlL3NyYy9r ZGUtd29ya3NwYWNlLTQuOC4yL2xpYnMvcGxhc21hZ2VuZXJpY3NoZWxsL3BhbmVsc2hhZG93cy5j cHA6MTE1CiMxMyAweDAwMDA3ZmZmZjQyOTYxNWYgaW4gUU1ldGFPYmplY3Q6OmFjdGl2YXRlIChz ZW5kZXI9MHg4MmI0YzAsIG09PG9wdGltaXplZCBvdXQ+LCBsb2NhbF9zaWduYWxfaW5kZXg9PG9w dGltaXplZCBvdXQ+LCBhcmd2PTB4MCkgYXQga2VybmVsL3FvYmplY3QuY3BwOjM1NDcKIzE0IDB4 MDAwMDdmZmZmNmUyMTEyZiBpbiBQbGFzbWE6OlN2Z1ByaXZhdGU6OnRoZW1lQ2hhbmdlZCgpICgp IGZyb20gL3Vzci9saWIvbGlicGxhc21hLnNvLjMKIzE1IDB4MDAwMDdmZmZmNmUyMTM4OSBpbiBQ bGFzbWE6OlN2Zzo6cXRfc3RhdGljX21ldGFjYWxsKFFPYmplY3QqLCBRTWV0YU9iamVjdDo6Q2Fs bCwgaW50LCB2b2lkKiopICgpIGZyb20gL3Vzci9saWIvbGlicGxhc21hLnNvLjMKIzE2IDB4MDAw MDdmZmZmNDI5NjE1ZiBpbiBRTWV0YU9iamVjdDo6YWN0aXZhdGUgKHNlbmRlcj0weDgyODM3MCwg bT08b3B0aW1pemVkIG91dD4sIGxvY2FsX3NpZ25hbF9pbmRleD08b3B0aW1pemVkIG91dD4sIGFy Z3Y9MHgwKSBhdCBrZXJuZWwvcW9iamVjdC5jcHA6MzU0NwojMTcgMHgwMDAwN2ZmZmY2ZTI5ZThi IGluIFBsYXNtYTo6VGhlbWVQcml2YXRlOjpub3RpZnlPZkNoYW5nZWQoKSAoKSBmcm9tIC91c3Iv bGliL2xpYnBsYXNtYS5zby4zCiMxOCAweDAwMDA3ZmZmZjZlMmEwNjkgaW4gUGxhc21hOjpUaGVt ZTo6cXRfc3RhdGljX21ldGFjYWxsKFFPYmplY3QqLCBRTWV0YU9iamVjdDo6Q2FsbCwgaW50LCB2 b2lkKiopICgpIGZyb20gL3Vzci9saWIvbGlicGxhc21hLnNvLjMKIzE5IDB4MDAwMDdmZmZmNDI5 NjE1ZiBpbiBRTWV0YU9iamVjdDo6YWN0aXZhdGUgKHNlbmRlcj0weDgzNTczMCwgbT08b3B0aW1p emVkIG91dD4sIGxvY2FsX3NpZ25hbF9pbmRleD08b3B0aW1pemVkIG91dD4sIGFyZ3Y9MHgwKSBh dCBrZXJuZWwvcW9iamVjdC5jcHA6MzU0NwojMjAgMHgwMDAwN2ZmZmY0Mjk1NTNjIGluIFFPYmpl Y3Q6OmV2ZW50ICh0aGlzPTB4ODM1NzMwLCBlPTxvcHRpbWl6ZWQgb3V0PikgYXQga2VybmVsL3Fv YmplY3QuY3BwOjExNTcKIzIxIDB4MDAwMDdmZmZmNGM5ZDM0MSBpbiBRQXBwbGljYXRpb25Qcml2 YXRlOjpub3RpZnlfaGVscGVyICh0aGlzPXRoaXNAZW50cnk9MHg2NjAwNzAsIHJlY2VpdmVyPXJl Y2VpdmVyQGVudHJ5PTB4ODM1NzMwLCBlPWVAZW50cnk9MHg3ZmZmZmZmZmQ2OTApIGF0IGtlcm5l bC9xYXBwbGljYXRpb24uY3BwOjQ1NTQKIzIyIDB4MDAwMDdmZmZmNGNhMjRjOSBpbiBRQXBwbGlj YXRpb246Om5vdGlmeSAodGhpcz0weDY1NGUzMCwgcmVjZWl2ZXI9MHg4MzU3MzAsIGU9MHg3ZmZm ZmZmZmQ2OTApIGF0IGtlcm5lbC9xYXBwbGljYXRpb24uY3BwOjQ0MTUKIzIzIDB4MDAwMDdmZmZm Njg1OWQyNiBpbiBLQXBwbGljYXRpb246Om5vdGlmeShRT2JqZWN0KiwgUUV2ZW50KikgKCkgZnJv bSAvdXNyL2xpYi9saWJrZGV1aS5zby41CiMyNCAweDAwMDA3ZmZmZjQyN2ViZmUgaW4gUUNvcmVB cHBsaWNhdGlvbjo6bm90aWZ5SW50ZXJuYWwgKHRoaXM9MHg2NTRlMzAsIHJlY2VpdmVyPTB4ODM1 NzMwLCBldmVudD0weDdmZmZmZmZmZDY5MCkgYXQga2VybmVsL3Fjb3JlYXBwbGljYXRpb24uY3Bw Ojg3NgojMjUgMHgwMDAwN2ZmZmY0MmIyZWUyIGluIHNlbmRFdmVudCAoZXZlbnQ9MHg3ZmZmZmZm ZmQ2OTAsIHJlY2VpdmVyPTxvcHRpbWl6ZWQgb3V0PikgYXQgLi4vLi4vaW5jbHVkZS9RdENvcmUv Li4vLi4vc3JjL2NvcmVsaWIva2VybmVsL3Fjb3JlYXBwbGljYXRpb24uaDoyMzEKIzI2IFFUaW1l ckluZm9MaXN0OjphY3RpdmF0ZVRpbWVycyAodGhpcz0weDY2MGI2MCkgYXQga2VybmVsL3FldmVu dGRpc3BhdGNoZXJfdW5peC5jcHA6NjExCiMyNyAweDAwMDA3ZmZmZjQyYWY4MDQgaW4gdGltZXJT b3VyY2VEaXNwYXRjaCAoc291cmNlPTxvcHRpbWl6ZWQgb3V0PikgYXQga2VybmVsL3FldmVudGRp c3BhdGNoZXJfZ2xpYi5jcHA6MTg2CiMyOCB0aW1lclNvdXJjZURpc3BhdGNoIChzb3VyY2U9c291 cmNlQGVudHJ5PTB4NjYwYjAwKSBhdCBrZXJuZWwvcWV2ZW50ZGlzcGF0Y2hlcl9nbGliLmNwcDox ODAKIzI5IDB4MDAwMDdmZmZlYzQ5NmM2YyBpbiBnX21haW5fZGlzcGF0Y2ggKGNvbnRleHQ9MHg2 NjA5MjApIGF0IGdtYWluLmM6MjUxNQojMzAgZ19tYWluX2NvbnRleHRfZGlzcGF0Y2ggKGNvbnRl eHQ9Y29udGV4dEBlbnRyeT0weDY2MDkyMCkgYXQgZ21haW4uYzozMDUyCiMzMSAweDAwMDA3ZmZm ZWM0OTcwODggaW4gZ19tYWluX2NvbnRleHRfaXRlcmF0ZSAoY29udGV4dD1jb250ZXh0QGVudHJ5 PTB4NjYwOTIwLCBibG9jaz1ibG9ja0BlbnRyeT0xLCBkaXNwYXRjaD1kaXNwYXRjaEBlbnRyeT0x LCBzZWxmPTxlcnJvciByZWFkaW5nIHZhcmlhYmxlOiBVbmhhbmRsZWQgZHdhcmYgZXhwcmVzc2lv biBvcGNvZGUgMHhmYT4pIGF0IGdtYWluLmM6MzEyMwojMzIgMHgwMDAwN2ZmZmVjNDk3MTQ0IGlu IGdfbWFpbl9jb250ZXh0X2l0ZXJhdGlvbiAoY29udGV4dD0weDY2MDkyMCwgbWF5X2Jsb2NrPTEp IGF0IGdtYWluLmM6MzE4NAojMzMgMHgwMDAwN2ZmZmY0MmFmZmY2IGluIFFFdmVudERpc3BhdGNo ZXJHbGliOjpwcm9jZXNzRXZlbnRzICh0aGlzPTB4NjAyYWQwLCBmbGFncz0uLi4pIGF0IGtlcm5l bC9xZXZlbnRkaXNwYXRjaGVyX2dsaWIuY3BwOjQyNAojMzQgMHgwMDAwN2ZmZmY0ZDRhNzBlIGlu IFFHdWlFdmVudERpc3BhdGNoZXJHbGliOjpwcm9jZXNzRXZlbnRzICh0aGlzPTxvcHRpbWl6ZWQg b3V0PiwgZmxhZ3M9Li4uKSBhdCBrZXJuZWwvcWd1aWV2ZW50ZGlzcGF0Y2hlcl9nbGliLmNwcDoy MDQKIzM1IDB4MDAwMDdmZmZmNDI3ZDQwZiBpbiBRRXZlbnRMb29wOjpwcm9jZXNzRXZlbnRzICh0 aGlzPXRoaXNAZW50cnk9MHg3ZmZmZmZmZmQ5MDAsIGZsYWdzPS4uLikgYXQga2VybmVsL3FldmVu dGxvb3AuY3BwOjE0OQojMzYgMHgwMDAwN2ZmZmY0MjdkNjY4IGluIFFFdmVudExvb3A6OmV4ZWMg KHRoaXM9MHg3ZmZmZmZmZmQ5MDAsIGZsYWdzPS4uLikgYXQga2VybmVsL3FldmVudGxvb3AuY3Bw OjIwNAojMzcgMHgwMDAwN2ZmZmY0MjgyOWE4IGluIFFDb3JlQXBwbGljYXRpb246OmV4ZWMgKCkg YXQga2VybmVsL3Fjb3JlYXBwbGljYXRpb24uY3BwOjExNDgKIzM4IDB4MDAwMDdmZmZmN2JhNjg3 NiBpbiBrZGVtYWluIChhcmdjPTIsIGFyZ3Y9MHg3ZmZmZmZmZmRiNTgpIGF0IC9tbnQvYXV4L3Bh Y2thZ2VzL2tkZWJhc2Utd29ya3NwYWNlL3NyYy9rZGUtd29ya3NwYWNlLTQuOC4yL2tydW5uZXIv bWFpbi5jcHA6NjYKIzM5IDB4MDAwMDdmZmZmNzdmNzQyNSBpbiBfX2xpYmNfc3RhcnRfbWFpbiAo KSBmcm9tIC9saWIvbGliYy5zby42CiM0MCAweDAwMDAwMDAwMDA0MDA3MTEgaW4gX3N0YXJ0ICgp Cg== --e89a8fb1fd92ff8be804beeb1ba1 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Active mailing list Active@kde.org https://mail.kde.org/mailman/listinfo/active --e89a8fb1fd92ff8be804beeb1ba1--