Description
Jonathan Thomas
2009-01-26 21:54:38 UTC
A crash with the same backtrace has been reported downstream. This time it was triggered by restoring Kopete from the system tray. (https://launchpad.net/bugs/323345) SVN commit 974349 by mpyne: Remove usage of pointer aliasing from KPixmapCache. Fixes bug 182026, will be in KDE 4.3. CCBUG:182026 M +13 -13 kpixmapcache.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=974349 This bugfix could possibly be important enough to sneak into 4.2.4 -> marking as blocker, will email Release Team to let them add or not as desired. SVN commit 974498 by mpyne: Backport invalid aliasing crash for for KPixmapCache to 4.2 branch. This may possibly make it to 4.2.4 but that's up to release team as it's past tagging date. BUG:182026 M +13 -13 kpixmapcache.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=974498 We are getting reports of this crash in KDE 4.3.0. We are now getting duplicates of this most every day, even with KDE 4.3.2. :( First off, I hate our current cache. Second, are these duplicates with this same backtrace or is it yet another crash bug? The most common report is that this occurred while toggling desktop effects. They seem to all have virtually the same backtrace. You can take a look for yourself; maybe I'm missing something: . Thread 1 (process 1504): #0 0x00f5d96f in KPixmapCache::Private::mmapFile (this=0x8a55c90, filename=@0x8a55ca0, info=0x8a55cc0, newsize=33656832) at ../../kdeui/util/kpixmapcache.cpp:482 __PRETTY_FUNCTION__ = "bool KPixmapCache::Private::mmapFile(const QString&, KPixmapCache::Private::MmapInfo*, int)" indexMem = <value optimized out> #1 0x00f60b23 in KPixmapCache::Private::mmapFiles (this=0x8a55c90) at ../../kdeui/util/kpixmapcache.cpp:410 cacheLimit = <value optimized out> #2 0x00f606be in KPixmapCache::Private::init (this=0x8a55c90) at ../../kdeui/util/kpixmapcache.cpp:1046 __PRETTY_FUNCTION__ = "void KPixmapCache::Private::init()" #3 0x00f60e92 in KPixmapCache::discard (this=0x8b96f78) at ../../kdeui/util/kpixmapcache.cpp:1269 indexFile = {static null = {<No data fields>}, static shared_null = { ref = {_q_value = 5778}, alloc = 0, size = 0, data = 0x80532ca, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 75}, alloc = 0, size = 0, data = 0x3c046e, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = { 0}}, d = 0x8cbb2b0, static codecForCStrings = 0x0} dataFile = {static null = {<No data fields>}, static shared_null = { ref = {_q_value = 5778}, alloc = 0, size = 0, data = 0x80532ca, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 75}, alloc = 0, size = 0, data = 0x3c046e, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = { 0}}, d = 0x8cd49d0, static codecForCStrings = 0x0} #4 0x00f61575 in KPixmapCache::deleteCache (name=@0xbfb38fac) at ../../kdeui/util/kpixmapcache.cpp:1247 d = (KPixmapCache::Private *) 0x8a55c90 _container_ = {c = {{p = {static shared_null = {ref = { _q_value = 11493}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x89b1880}, d = 0x89b1880}}, brk = 0, i = { i = 0x89b1898}, e = {i = 0x89b189c}} #5 0x0148bb9b in Plasma::ThemePrivate::discardCache (this=0x8a310a8, recreateElementsCache=true) at ../../plasma/theme.cpp:221 svgElementsFile = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 5778}, alloc = 0, size = 0, data = 0x80532ca, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 75}, alloc = 0, size = 0, data = 0x3c046e, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0xf76f90, static codecForCStrings = 0x0} #6 0x0148c013 in Plasma::ThemePrivate::compositingChanged (this=0x8a310a8) at ../../plasma/theme.cpp:213 No locals. #7 0x0149143e in Plasma::Theme::qt_metacall (this=0x8a092f0, _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0xbfb39128) at ./theme.moc:102 No locals. #8 0x002e3263 in QMetaObject::activate (sender=0x89cced0, from_signal_index=4, to_signal_index=4, argv=0xbfb39128) at kernel/qobject.cpp:3113 c = <value optimized out> method = 6 currentSender = {sender = 0x89cced0, signal = 4, ref = 1} previousSender = (QObjectPrivate::Sender *) 0x0 i = 0 count = 1 signal = 4 empty_argv = {0x0} locker = {{mtx = 0x88ffe7c, val = 143654524}} currentThreadData = <value optimized out> connectionLists = (QObjectConnectionListVector *) 0x8a43d80 #9 0x002e3ec2 in QMetaObject::activate (sender=0x89cced0, m=0x108abe0, local_signal_index=0, argv=0xbfb39128) at kernel/qobject.cpp:3187 signal_index = 145396856 #10 0x00f4e7a3 in KSelectionWatcher::newOwner (this=0x89cced0, _t1=18973765) at ./kmanagerselection.moc:140 _a = {0x0, 0xbfb39144} #11 0x00f4eaa1 in KSelectionWatcher::owner (this=0x89cced0) at ../../kdeui/util/kmanagerselection.cpp:451 dpy = (Display * const) 0x89881d0 handler = {user_handler1 = 0, user_handler2 = 0, old_handler = 0xed9a00 <kde_x_errhandler>, static handlers = 0x8a56ca8, static pos = 1, static size = 16, d = 0x8d2e3f0} current_owner = 18973765 #12 0x00f4eb38 in KSelectionWatcher::filterEvent (this=0x89cced0, ev_P=0xbfb3a6fc) at ../../kdeui/util/kmanagerselection.cpp:468 No locals. #13 0x00f50077 in KSelectionWatcher::Private::x11Event (this=0x8a31928, ev_P=0xbfb3a6fc) at ../../kdeui/util/kmanagerselection.cpp:395 No locals. #14 0x00ed8f46 in KApplication::x11EventFilter (this=0x8976798, _event=0xbfb3a6fc) at ../../kdeui/kernel/kapplication.cpp:911 _container_ = {c = {{p = {static shared_null = {ref = { _q_value = 11493}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x8a0dff8}, d = 0x8a0dff8}}, brk = 0, i = { i = 0x8a0e014}, e = {i = 0x8a0e01c}} #15 0x05b7fd70 in qt_x11EventFilter (ev=0xbfb3a6fc) at kernel/qapplication_x11.cpp:375 unused = 0 #16 0x05b91375 in QApplication::x11ProcessEvent (this=0x8976798, event=0xbfb3a6fc) at kernel/qapplication_x11.cpp:3271 userTime = <value optimized out> widget = (struct QETWidget *) 0x89b3268 keywidget = (struct QETWidget *) 0x0 grabbed = false d = (class QApplicationPrivate * const) 0x8976970 time = <value optimized out> #17 0x05bbf502 in x11EventSourceDispatch (s=0x8979700, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146 event = {type = 33, xany = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, window = 252}, xkey = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, window = 252, root = 516, subwindow = 32, time = 5017574, x = 373, y = 18973765, x_root = 0, y_root = 0, state = 0, keycode = 2, same_screen = 1}, xbutton = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, window = 252, root = 516, subwindow = 32, time = 5017574, x = 373, y = 18973765, x_root = 0, y_root = 0, state = 0, button = 2, same_screen = 1}, xmotion = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, window = 252, root = 516, subwindow = 32, time = 5017574, x = 373, y = 18973765, x_root = 0, y_root = 0, state = 0, is_hint = 2 '\002', same_screen = 1}, xcrossing = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, window = 252, root = 516, subwindow = 32, time = 5017574, x = 373, y = 18973765, x_root = 0, y_root = 0, mode = 0, detail = 2, same_screen = 1, focus = 0, state = 0}, xfocus = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, window = 252, mode = 516, detail = 32}, xexpose = { type = 33, serial = 188050, send_event = 1, display = 0x89881d0, window = 252, x = 516, y = 32, width = 5017574, height = 373, count = 18973765}, xgraphicsexpose = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, drawable = 252, x = 516, y = 32, width = 5017574, height = 373, count = 18973765, major_code = 0, minor_code = 0}, xnoexpose = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, drawable = 252, major_code = 516, minor_code = 32}, xvisibility = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, window = 252, state = 516}, xcreatewindow = { type = 33, serial = 188050, send_event = 1, display = 0x89881d0, parent = 252, window = 516, x = 32, y = 5017574, width = 373, height = 18973765, border_width = 0, override_redirect = 0}, xdestroywindow = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, event = 252, window = 516}, xunmap = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, event = 252, window = 516, from_configure = 32}, xmap = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, event = 252, window = 516, override_redirect = 32}, xmaprequest = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, parent = 252, window = 516}, xreparent = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, event = 252, window = 516, parent = 32, x = 5017574, y = 373, override_redirect = 18973765}, xconfigure = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, event = 252, window = 516, x = 32, y = 5017574, width = 373, height = 18973765, border_width = 0, above = 0, override_redirect = 0}, xgravity = { type = 33, serial = 188050, send_event = 1, display = 0x89881d0, event = 252, window = 516, x = 32, y = 5017574}, xresizerequest = { type = 33, serial = 188050, send_event = 1, display = 0x89881d0, window = 252, width = 516, height = 32}, xconfigurerequest = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, parent = 252, window = 516, x = 32, y = 5017574, width = 373, height = 18973765, border_width = 0, above = 0, detail = 0, value_mask = 2}, xcirculate = { type = 33, serial = 188050, send_event = 1, display = 0x89881d0, event = 252, window = 516, place = 32}, xcirculaterequest = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, parent = 252, window = 516, place = 32}, xproperty = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, window = 252, atom = 516, time = 32, state = 5017574}, xselectionclear = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, window = 252, selection = 516, time = 32}, xselectionrequest = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, owner = 252, requestor = 516, selection = 32, target = 5017574, property = 373, time = 18973765}, xselection = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, requestor = 252, selection = 516, target = 32, property = 5017574, time = 373}, xcolormap = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, window = 252, colormap = 516, c_new = 32, state = 5017574}, xclient = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, window = 252, message_type = 516, format = 32, data = { b = "æ\217L\000u\001\000\000E\204!\001\000\000\000\000\000\000\000", s = {-28698, 76, 373, 0, -31675, 289, 0, 0, 0, 0}, l = {5017574, 373, 18973765, 0, 0}}}, xmapping = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, window = 252, request = 516, first_keycode = 32, count = 5017574}, xerror = {type = 33, display = 0x2de92, resourceid = 1, serial = 144212432, error_code = 252 'ü', request_code = 0 '\0', minor_code = 0 '\0'}, xkeymap = {type = 33, serial = 188050, send_event = 1, display = 0x89881d0, window = 252, key_vector = "\004\002\000\000 \000\000\000æ\217L\000u\001\000\000E\204!\001", '\0' <repeats 11 times>}, pad = {33, 188050, 1, 144212432, 252, 516, 32, 5017574, 373, 18973765, 0, 0, 0, 2, 1, 0, 0, 1667327602, 101, 32, 3, 0, 41, 144910008}} marker = 188240 #18 0x0061be78 in g_main_context_dispatch () from /lib/libglib-2.0.so.0 No symbol table info available. #19 0x0061f720 in ?? () from /lib/libglib-2.0.so.0 No symbol table info available. #20 0x0061f853 in g_main_context_iteration () from /lib/libglib-2.0.so.0 No symbol table info available. #21 0x002f802c in QEventDispatcherGlib::processEvents (this=0x8901a58, flags= {i = 36}) at kernel/qeventdispatcher_glib.cpp:327 d = (QEventDispatcherGlibPrivate * const) 0x8978a90 canWait = true result = <value optimized out> #22 0x05bbebe5 in QGuiEventDispatcherGlib::processEvents (this=0x8901a58, flags={i = 36}) at kernel/qguieventdispatcher_glib.cpp:202 d = (QGuiEventDispatcherGlibPrivate * const) 0x8901a68 returnValue = true #23 0x002cbc79 in QEventLoop::processEvents (this=0xbfb3a9f4, flags=DWARF-2 expression error: DW_OP_reg operations must be used either alone or in conjuction with DW_OP_piece. ) at kernel/qeventloop.cpp:149 d = (QEventLoopPrivate * const) 0x8bfc280 #24 0x002cc0ca in QEventLoop::exec (this=0xbfb3a9f4, flags={i = 0}) at kernel/qeventloop.cpp:201 d = (QEventLoopPrivate * const) 0x8bfc280 app = <value optimized out> #25 0x002ce53f in QCoreApplication::exec () at kernel/qcoreapplication.cpp:888 threadData = (QThreadData *) 0x88ffe48 eventLoop = {<QObject> = {_vptr.QObject = 0x3bf7a8, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x366ba0 "QObject", data = 0x366c40, extradata = 0x3bb1b8}}, d_ptr = 0x8bfc280, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x370380 "Qt", data = 0x373700, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x3bb1a8, stringdata = 0x3787a0 "QEventLoop", data = 0x3787c0, extradata = 0x0}}} returnCode = -1 #26 0x05b1ddd7 in QApplication::exec () at kernel/qapplication.cpp:3525 No locals. #27 0x0694029e in ?? () No symbol table info available. #28 0x0804dde1 in launch (argc=<value optimized out>, _name=<value optimized out>, args=<value optimized out>, cwd=0x0, envc=0, envs=0x8914d89 "", reset_env=false, tty=0x0, avoid_loops=false, startup_id_str=0x80511a5 "0") at ../../kinit/kinit.cpp:677 l = {<QObject> = {_vptr.QObject = 0x3bf3c8, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x366ba0 "QObject", data = 0x366c40, extradata = 0x3bb1b8}}, d_ptr = 0x893ada0, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x370380 "Qt", data = 0x373700, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x3bb1a8, stringdata = 0x378020 "QLibrary", data = 0x3780a0, extradata = 0x0}}, d = 0x893b6d0, did_load = true} sym = <value optimized out> exec = <value optimized out> lib = {static null = {<No data fields>}, static shared_null = {ref = { _q_value = 5778}, alloc = 0, size = 0, data = 0x80532ca, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 75}, alloc = 0, size = 0, data = 0x3c046e, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = { 0}}, d = 0x892ef20, static codecForCStrings = 0x0} execpath = {static shared_null = {ref = {_q_value = 2125}, alloc = 0, size = 0, data = 0x80532dc "", array = ""}, static shared_empty = {ref = { _q_value = 18}, alloc = 0, size = 0, data = 0x3c0398 "", array = ""}, d = 0x892ed00} name = {static shared_null = {ref = {_q_value = 2125}, alloc = 0, size = 0, data = 0x80532dc "", array = ""}, static shared_empty = {ref = { _q_value = 18}, alloc = 0, size = 0, data = 0x3c0398 "", array = ""}, d = 0x892fb20} exec = {static shared_null = {ref = {_q_value = 2125}, alloc = 0, size = 0, data = 0x80532dc "", array = ""}, static shared_empty = {ref = { _q_value = 18}, alloc = 0, size = 0, data = 0x3c0398 "", array = ""}, d = 0x892ed00} libpath = {static null = {<No data fields>}, static shared_null = { ref = {_q_value = 5778}, alloc = 0, size = 0, data = 0x80532ca, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 75}, alloc = 0, size = 0, data = 0x3c046e, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = { 0}}, d = 0x892f030, static codecForCStrings = 0x0} startup_id = {d = 0x892fad0} #29 0x0804ea35 in handle_launcher_request (sock=<value optimized out>, who=<value optimized out>) at ../../kinit/kinit.cpp:1169 tty = 0x0 avoid_loops = 0 arg_n = <value optimized out> args = 0x8914d85 "" pid = <value optimized out> response_header = {cmd = 4, arg_length = 4} envc = <value optimized out> envs = 0x8914d89 "" kdedisplay = {static shared_null = {ref = {_q_value = 2125}, alloc = 0, size = 0, data = 0x80532dc "", array = ""}, static shared_empty = {ref = {_q_value = 18}, alloc = 0, size = 0, data = 0x3c0398 "", array = ""}, d = 0x80532cc} response_data = <value optimized out> l = <value optimized out> name = 0x8914d74 "/usr/bin/krunner" cwd = 0x0 startup_id_str = 0x80511a5 "0" olddisplay = {static shared_null = {ref = {_q_value = 2125}, alloc = 0, size = 0, data = 0x80532dc "", array = ""}, static shared_empty = {ref = {_q_value = 18}, alloc = 0, size = 0, data = 0x3c0398 "", array = ""}, d = 0x8938480} request_header = {cmd = 12, arg_length = 29} request_data = 0x8914d70 "\001" result = <value optimized out> #30 0x0804eeac in handle_requests (waitForPid=<value optimized out>) at ../../kinit/kinit.cpp:1362 wr_set = {fds_bits = {0 <repeats 32 times>}} exit_pid = <value optimized out> exit_status = 0 c = 0 '\0' rd_set = {fds_bits = {128, 0 <repeats 31 times>}} e_set = {fds_bits = {0 <repeats 32 times>}} result = <value optimized out> max_sock = <value optimized out> #31 0x0804fbaf in main (argc=2, argv=0xbfb3b244, envp=0xbfb3b250) at ../../kinit/kinit.cpp:1793 pid = <value optimized out> do_fork = true launch_klauncher = 1 launch_kded = 1 keep_running = 1 Well in that case my working theory is that KPixmapCache::deleteCache() should not call KPixmapCache::discard() for every cache, but only once. It would be easier for me to fix if I can reproduce though :-/ *** Bug 203794 has been marked as a duplicate of this bug. *** *** Bug 218560 has been marked as a duplicate of this bug. *** Assuming that this is duplicate bug - can OR change the version of 4.3? *** Bug 188951 has been marked as a duplicate of this bug. *** *** Bug 223784 has been marked as a duplicate of this bug. *** Reporter from bug 225191 seems to be able to reproduce this crash a lot of times (on 4.4RC3) when changing Plasma Theme Yeah, anything that causes a fair amount of activity with the pixmap cache is prone to cause this crash. @Michael Pyne from comment #9 The last time we both had both fun with the KPixmapCache I remember to have added a comment stating that the reason may, at least for some of the crashers, that access happens unsynchronized. Looking at the backtraces it seems this can be the reason for the latest crashes, no? I mean that the mmap'd file is deleted while other processes may still read and write into the file. There is no synchronization that makes sure different processes play well together. QPixmapCache does not have that problem cause the cache is not shared between processes. Since KPixmapCache does shared the cache-file between processes, synchronization is needed in the same way it would be needed if QPixmapCache would be used in different threads. Or what do I miss here? The synchronization is definitely wrong. I'm currently working on simplifying the usage/locking of the KPixmapCache but unfortunately I only get to work on it about 2 days a week at this point. I would have committed a kludge to hold over for now but I haven't been able to find something that still works in all cases either. *** Bug 228371 has been marked as a duplicate of this bug. *** Created attachment 41086 [details]
Kludge to at least try to more sanely discard the cache
This patch tries to make the cache discarding/deletion less error-prone by:
1) Holding the lock while the cache is deleted (although I still see lots of messages complaining of being unable to either obtain or remove the lock -- this still needs lots of love.
2) Not actually deleting anything if discarding the cache. Instead the index is just updated to have the root entry point to nothing. Cache still seems to work in my testing but I have a fairly fast system, so please double-check
3) Using KSaveFile when performing the "recreate cache files" step instead of overwriting the disk files directly. This should lead to processes that do not know that the cache got swiped still working, since they (if I'm understanding this right) will be operating on the inode of the old file which was unlinked but not truncated or overwritten.
PLEASE PLEASE PLEASE keep in mind that simply because I love you all, this code is written at a time when I really need to be sleeping instead (instead I'm not even on caffeine) so perhaps let's not test this on the precious family photos?
My testing procedure has been changing the icon theme and changing the Plasma theme. Changing the Plasma theme only works once for me but I didn't test prior to my change so I'm not sure if that's my fault or Plasma's. Feel free to let me know if it works or doesn't, but I won't be able to check the progress for about another 21 hours or so, which means I won't even get a chance to work on it tomorrow.
*** Bug 225191 has been marked as a duplicate of this bug. *** Quick question: could this cause spontaneous Plasma and KWin quits/crashes when changing the Plasma theme ? (the pixmap cache is discarded and reloaded); like in bug 228495 (and bug 225191) ... Regards @Dario from comment #22 Yes, that can happen. Usually a backtrace will then show that it crashes in KPixmapCache. We got some reports (and I experienced some of them too) about applications closing without crashing (both Plasma and KWin). At least, DrKonqi didn't appeared. Could that be possible ? @Michael Payne from comment #20 void KPixmapCache::deleteCache(const QString& name) { - foreach (KPixmapCache::Private *d, Private::mCaches) { - if (d->mName == name && d->mInited) { - d->q->discard(); - } - } + QString indexFile = KGlobal::dirs()->locateLocal("cache", "kpc/" + name + ".index"); + QString dataFile = KGlobal::dirs()->locateLocal("cache", "kpc/" + name + ".data"); + + QFile::remove(indexFile); + QFile::remove(dataFile); } Isn't that exactly what we don't want? I mean what we do now is to just delete the cache file, without synchronization, without closing the mmap'd files, ... and backtraces like the one from bug #225191 do show that KPixmapCache::deleteCache is also called to refresh the cache if for example the theme changed. Or was that only a testcase? :) @Dario Andres from comment #24 iirc Plasma explicit disables DrKonqi to be able to auto-restart on crash and I would not wonder if KWin does the same. So, that would explain why DrKonqi does not show up. iirc there was a way to disable that behavior but I don't remember how :-/ There can be a lot of reasons for the crashes. Maybe this bug, maybe another... *** Bug 228495 has been marked as a duplicate of this bug. *** Sebastian, my understanding is that merely unlinking a file is safe, even if it's mapped (and even if not, it's at least no worse than what we're doing now :-/). A problem does occur if you truncate the file first, which I try to avoid here. Directly overwriting a file is also bad (especially when it's unlocked) which is why I switched elsewhere to using KSaveFile. Has *anyone* tested the patch who was able to reproduce before? Unfortunately I've not personally found a way to reproduce this reliably enough to test the patch... If any K/Ubuntu user subscribed can, I'll gladly provide packages with this patch in my PPA for testing. I will note that even if you can't reproduce the crash, testing the patch will help ensure no unexpected performance regressions and that no other crashes are introduced. ;) I will test your patch, Jonathan. Just put it up in the ppa. *** Bug 229256 has been marked as a duplicate of this bug. *** Created attachment 41304 [details]
New crash information added by DrKonqi
I got after launching wine application (HOMAM V) and disabled compositing. I do not know what had been affected by this but had to submit the bug rep.
Created attachment 41306 [details]
New crash information added by DrKonqi
It crashed after I launched systemsettings. I am running Kubuntu 10.04 32-bit.
krunner has became quite unstable these days. It crashes at least 2-3 times a day randomly while opening any application. *** Bug 229191 has been marked as a duplicate of this bug. *** *** Bug 229372 has been marked as a duplicate of this bug. *** *** Bug 229354 has been marked as a duplicate of this bug. *** *** Bug 229639 has been marked as a duplicate of this bug. *** *** Bug 229650 has been marked as a duplicate of this bug. *** *** Bug 229782 has been marked as a duplicate of this bug. *** *** Bug 229868 has been marked as a duplicate of this bug. *** *** Bug 229943 has been marked as a duplicate of this bug. *** Created attachment 41468 [details]
New crash information added by DrKonqi
Booted up
enabled nvidia twinview dual screen
and kmix crashed
*** Bug 229914 has been marked as a duplicate of this bug. *** *** Bug 230103 has been marked as a duplicate of this bug. *** *** Bug 230119 has been marked as a duplicate of this bug. *** *** Bug 230073 has been marked as a duplicate of this bug. *** *** Bug 230081 has been marked as a duplicate of this bug. *** Reminder that there was a patch attached on 25 February that possibly works around this bug. I *will not* commit that patch with just myself being the tester though, so if you can test (even if you can't reproduce) please do so and report back. *** Bug 230169 has been marked as a duplicate of this bug. *** As noted in bug 230174 and other reports, this also happen when changing composition/effects state (which triggers a Plasma theme/cache reload) From bug 230174: I'm on lucid, Since fglrx is not available, X is using the open ati driver. (I guess). After installing newest X and rebooting the system, I tried to enable the desktop effects. Just when I hit the OK Button on the confirmation screen, I got the crash notification. No desktop effects are enabled now. *** Bug 230174 has been marked as a duplicate of this bug. *** Bug 230170 has a similar backtrace, is it also related? *** Bug 230216 has been marked as a duplicate of this bug. *** *** Bug 230170 has been marked as a duplicate of this bug. *** *** Bug 229726 has been marked as a duplicate of this bug. *** I wonder if there's a way for devs to search for "most dups" so that bugs like this will rise to the top of the heap. But then again, for all I know, there could be countless other bugs with more dups than this one. *** Bug 229655 has been marked as a duplicate of this bug. *** *** Bug 230280 has been marked as a duplicate of this bug. *** *** Bug 230281 has been marked as a duplicate of this bug. *** *** Bug 230221 has been marked as a duplicate of this bug. *** Created attachment 41535 [details]
New crash information added by DrKonqi
Switching the Workspace theme from Silicon (which also results in strange effects on widgets like the network traffic widget) to Slim Glow and kaboom.
Created attachment 41536 [details]
New crash information added by DrKonqi
plasma-desktop crashed when changing theme, and it appeared to take kwin and kdeinit4 with it.
*** Bug 230347 has been marked as a duplicate of this bug. *** *** Bug 230338 has been marked as a duplicate of this bug. *** *** Bug 230368 has been marked as a duplicate of this bug. *** Created attachment 41554 [details]
New crash information added by DrKonqi
Plasma crashes when changing style
Created attachment 41579 [details]
New crash information added by DrKonqi
After changin the Fullscreen resolution in ManaWorld plasma crashed
Created attachment 41585 [details]
New crash information added by DrKonqi
After I typed the password for the screensaver and it was unlocked, Plasma crashed.
*** Bug 230584 has been marked as a duplicate of this bug. *** *** Bug 230528 has been marked as a duplicate of this bug. *** *** Bug 230545 has been marked as a duplicate of this bug. *** *** Bug 230731 has been marked as a duplicate of this bug. *** Created attachment 41626 [details]
New crash information added by DrKonqi
I was changing the theme to glowglass. it always happen to some themes.
should "get new workspace" filter them ? by kde version?
*** Bug 230743 has been marked as a duplicate of this bug. *** *** Bug 230345 has been marked as a duplicate of this bug. *** *** Bug 230643 has been marked as a duplicate of this bug. *** *** Bug 230809 has been marked as a duplicate of this bug. *** Created attachment 41670 [details]
New crash information added by DrKonqi
Plasma crashes after changing plasma theme in appearence->theme or changing part of it in advanced->plasma theme details. In second case it crashes regularly after second change.
*** Bug 230883 has been marked as a duplicate of this bug. *** *** Bug 230875 has been marked as a duplicate of this bug. *** *** Bug 230923 has been marked as a duplicate of this bug. *** *** Bug 230904 has been marked as a duplicate of this bug. *** *** Bug 230449 has been marked as a duplicate of this bug. *** *** Bug 229948 has been marked as a duplicate of this bug. *** *** Bug 229536 has been marked as a duplicate of this bug. *** *** Bug 230973 has been marked as a duplicate of this bug. *** *** Bug 231013 has been marked as a duplicate of this bug. *** *** Bug 227483 has been marked as a duplicate of this bug. *** *** Bug 227165 has been marked as a duplicate of this bug. *** SVN commit 1104231 by mpyne: Commit possible stopgap fix for bug 182026 (the oh-so-famous KPixmapCache-hates-me bug) to trunk to rather more proactively encourage testing. It shouldn't resemble a Monday kdelibs patch, but I can't make guarantees since I can't really reproduce this one at will anyways. CCBUG:182026 M +56 -28 kpixmapcache.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1104231 *** Bug 231085 has been marked as a duplicate of this bug. *** *** Bug 231069 has been marked as a duplicate of this bug. *** *** Bug 231103 has been marked as a duplicate of this bug. *** Created attachment 41715 [details]
New crash information added by DrKonqi
Crash while switching off compositing.
*** Bug 231059 has been marked as a duplicate of this bug. *** Just tested Michael Pynes patch against kdelibs-4.4.1 and it seems to work so far. I was able to reproduce this issue by changing Plasma desktop theme. Seems this patch fixed it and at least - did not introduce any visible regressions (for now). We prepared testing packages for Fedora (see bug rhbz#568389) to collect more feedback. Thanks! *** Bug 231160 has been marked as a duplicate of this bug. *** *** Bug 231158 has been marked as a duplicate of this bug. *** *** Bug 231134 has been marked as a duplicate of this bug. *** *** Bug 231169 has been marked as a duplicate of this bug. *** *** Bug 231189 has been marked as a duplicate of this bug. *** Created attachment 41736 [details]
New crash information added by DrKonqi
Plasma crashed when switching themes from blend to glassified. Nothing special, just a but that needs fixing.
*** Bug 231248 has been marked as a duplicate of this bug. *** *** Bug 231249 has been marked as a duplicate of this bug. *** Created attachment 41753 [details]
New crash information added by DrKonqi
Something strange I noted before the crash is that, when desktop compositing is disabled, I have weird colors in the panel on the secondary monitor. In particular half of it has inverted colours.
Turning on desktop effects results in:
a) desktop effects are fine;
b) crash of Kwin after 1 second;
c) disabling of desktop effects;
d) the colors in the panel are fine both for the second of desktop effects activated, and for the non composited desktop AFTER trying to enable effects (and getting KWin crash).
Going to attach a screenshot showing the problem in the panel.
Created attachment 41754 [details]
Multi monitor desktop showing panel colours corruption
No modification to standard Plasma Air theme.
If you need full resolution detail of the panel just ask me.
By the way: enabling desktop effects AFTER the first time works fine. I think this is because the panel corruption goes away after the first crash. Panel corruption reapppears if you turn off desktop effects and reboot (not sure about logout and login but I think it should be the same). Created attachment 41756 [details]
My multi monitor configuration.
In case it's relevant, this is my monitor configuration.
I've been using the trunk patch against KDE 4.4.1 for a few days and have found no regressions. I even found an excuse to play a few kdegames. ;-) Created attachment 41776 [details]
New crash information added by DrKonqi
I'm experiencing the same bug in kde 4.4.1 (from Fedora 12 x86_64 repositories). I was disavling desktop effects from system settings and kmix crashed.
*** Bug 231412 has been marked as a duplicate of this bug. *** *** Bug 231414 has been marked as a duplicate of this bug. *** *** Bug 231198 has been marked as a duplicate of this bug. *** *** Bug 231471 has been marked as a duplicate of this bug. *** Created attachment 41797 [details]
New crash information added by DrKonqi
PCLinuxOS 2010
The problem appeared after attempt of changing Desktop Theme in Advanced Settings in kcontrol. The new settings were not applied.
*** Bug 231520 has been marked as a duplicate of this bug. *** *** Bug 231515 has been marked as a duplicate of this bug. *** *** Bug 231529 has been marked as a duplicate of this bug. *** *** Bug 231494 has been marked as a duplicate of this bug. *** *** Bug 231568 has been marked as a duplicate of this bug. *** SVN commit 1106080 by mpyne: Backport bugfix for 182026 (KRunner/Plasma crashes due to KPixmapCache::discard) to KDE 4.4.2. This has had several days to brew in trunk and the reaction from testers is quite favorable. If you continue to receive crashes in KPixmapCache that don't start from KPixmapCache::discard, it's a different bug which may already be reported. If merely loading a cached icon causes a crash (e.g. a crash in QPixmap) you may have a corrupted cache -- try removing /var/tmp/kdecache-$USER/kpc/*.{index,data} and restarting KDE. BUG:182026 M +56 -28 kpixmapcache.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1106080 *** Bug 231579 has been marked as a duplicate of this bug. *** Created attachment 41818 [details]
New crash information added by DrKonqi
This crash occured after I invoked krandr through system tray icon. KDE crashed and restarted, but krandr was running. At the time, I worked with 2 monitors set to "clone". It was the second time I invoked krandr in that KDE session.
The crash repeated when I clicked krandr tray icon another time. Again, krandr was running after KDE reset.
My configuration:
Intel945GM, Fedora12, KDE 4.1.1
2 Monitors: Notebook 1024x768, External 1920x1080
*** Bug 231590 has been marked as a duplicate of this bug. *** *** Bug 231605 has been marked as a duplicate of this bug. *** *** Bug 231604 has been marked as a duplicate of this bug. *** *** Bug 231614 has been marked as a duplicate of this bug. *** *** Bug 231757 has been marked as a duplicate of this bug. *** *** Bug 231806 has been marked as a duplicate of this bug. *** *** Bug 231825 has been marked as a duplicate of this bug. *** *** Bug 229968 has been marked as a duplicate of this bug. *** *** Bug 231987 has been marked as a duplicate of this bug. *** *** Bug 231980 has been marked as a duplicate of this bug. *** *** Bug 231964 has been marked as a duplicate of this bug. *** SVN commit 1107208 by mpyne: Make the pixmap cache actually work after my ::discard crash fix. (In trunk) Thanks to Parker Coates for being the only one to notice. ;) CCBUG:182026 M +2 -0 kpixmapcache.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1107208 SVN commit 1107210 by mpyne: Backport fix for a regression introduced in 4.4 branch to 4.4.2. (This bug was not in 4.4.1) The issue is that my recent crash fix for the KPixmapCache Bug of Legend made the cache stop working. It was caught by Parker Coates though so 4.4.2 should have the best of both worlds. CCBUG:182026 M +2 -0 kpixmapcache.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1107210 *** Bug 232077 has been marked as a duplicate of this bug. *** *** Bug 232075 has been marked as a duplicate of this bug. *** *** Bug 232006 has been marked as a duplicate of this bug. *** *** Bug 232119 has been marked as a duplicate of this bug. *** *** Bug 232147 has been marked as a duplicate of this bug. *** *** Bug 230759 has been marked as a duplicate of this bug. *** *** Bug 232168 has been marked as a duplicate of this bug. *** *** Bug 232258 has been marked as a duplicate of this bug. *** *** Bug 232251 has been marked as a duplicate of this bug. *** *** Bug 232393 has been marked as a duplicate of this bug. *** *** Bug 232350 has been marked as a duplicate of this bug. *** *** Bug 232410 has been marked as a duplicate of this bug. *** Created attachment 42306 [details]
New crash information added by DrKonqi
System Settings crash after enabling desktop effects. This crash occurred after installin the latest ATI driver -10.3.
*** Bug 232459 has been marked as a duplicate of this bug. *** como instalo esos drivers¡?? > From: marokanski.kazak@gmail.com > To: wildwild_2@hotmail.com > Subject: [Bug 182026] [Fixed in KDE SC 4.4.2 and 4.5] KRunner crashes / Plasma crashes when changing Theme (in KPixmapCache::Private::mmapFile()) [..., KPixmapCache::Private::init, KPixmapCache::discard, KPixmapCache::deleteCache, Plasma::ThemePrivate::discardCache] > Date: Sun, 28 Mar 2010 10:31:39 +0200 > > https://bugs.kde.org/show_bug.cgi?id=182026 > > > > > > --- Comment #152 from Petar Petrov <marokanski kazak gmail com> 2010-03-28 10:31:10 --- > Created an attachment (id=42306) > --> (http://bugs.kde.org/attachment.cgi?id=42306) > New crash information added by DrKonqi > > System Settings crash after enabling desktop effects. This crash occurred after > installin the latest ATI driver -10.3. > > -- > Configure bugmail: https://bugs.kde.org/userprefs.cgi?tab=email > ------- You are receiving this mail because: ------- > You are on the CC list for the bug. _________________________________________________________________ Discover the new Windows Vista http://search.msn.com/results.aspx?q=windows+vista&mkt=en-US&form=QBRE *** Bug 232501 has been marked as a duplicate of this bug. *** Created attachment 42334 [details]
New crash information added by DrKonqi
Crash was burn when i changing plasma workspace theme on "Air for Netbooks" or "Blackglass". Effects kwin not using.
*** Bug 232611 has been marked as a duplicate of this bug. *** *** Bug 232707 has been marked as a duplicate of this bug. *** *** Bug 233127 has been marked as a duplicate of this bug. *** |