Summary: | Dolphin crashed after closing window | ||
---|---|---|---|
Product: | [Plasma] Oxygen | Reporter: | Franja Lovric <wind_wizard_franja> |
Component: | style | Assignee: | Hugo Pereira Da Costa <hugo.pereira.da.costa> |
Status: | RESOLVED UPSTREAM | ||
Severity: | crash | CC: | gm_tnd, hugo.pereira.da.costa, jcurlnews, kretz, m.brummer, peter.penz19, upscope |
Priority: | NOR | ||
Version: | 4.0 | ||
Target Milestone: | --- | ||
Platform: | Ubuntu | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Franja Lovric
2011-11-15 02:22:04 UTC
the crash is all in the deletion chain of QStyle triggered by closing dolphin. Most likely X or Qt issue. Nothing I can do about it. Sorry :( *** Bug 277308 has been marked as a duplicate of this bug. *** I just experienced this crash when closing Kontact. From reading through the stack trace it looks to me like a double free. I.e. something inside Oxygen keeps a pointer/reference to an object that was already freed, which leads to a second cleanup through the now dangling pointer/reference. (e.g. delete QVector<QPixmap>::data() would lead to a double free of the QPixmap.) I can't see a reason from the stack trace why it would be a bug in X or Qt. Might be, but I believe this must be debugged in Oxygen. Additional info that might be related: Before I closed Kontact, I changed the font hinting (should not make a difference) and the global application fonts (which surely triggers a lot inside Oxygen). I could not reproduce the crash, that way, though. I suggest to change the status of the bug to unconfirmed or verified. BTW: KDE 4.8 RC1 (Kubuntu Packages) here I humbly disagree, notably because oxygen does not explicitly free the incriminated objects (pixmaps, here, which are explicitly shared). Hence my comment. so that I won't reopen the report. But feel free to double check the code. I checked the code. I'm now even more convinced that this can't be an X issue. Qt issue may be (no idea how that could go unnoticed, though), but I'd rather expect it an incorrect usage of Qt instead. Of course, I didn't spot the error inside Oxygen either. If I get the crash again I can try to dig deeper with gdb. Sounds good. Thanks for helping. Some clues about why I believe it is not an oxygen bug: 1/ there is no way to double-free QPixmap inside oxygen, because there is no explicit "new QPixmap" call anywhere. 2/ there are quite some "new Tileset" calls everywhere, but they are never freed by oxygen directly. They are handled by Qt, inside QCache, who has ownership (and there is no way to avoid this, if you want to use QCache); 3/ you could imagine deleting StyleHelper multiple times, but I checked that there is only one of this guy, created and freed, inside Oxygen::Style. 4/ Also, StyleHelper being a pointer member of Oxygen::Style, well, there it could in principle get wrongly assigned to multiple instances of the Style, and deleted twice (which would indeed create a double-free). Except that Style, which derive from QStyle, can't get copied either, as cannot any QObject inside Qt. Last (and not least), I have run oxygen multiple times on some extensive test application inside valgrind, which did not detect any double free, invalid read, or invalid write, nor memory leak. Thats all I can think of to try to convince you. Yeah, the code looked safe to me. And I believe those points. The only other thing I could think of is some memory corruption in a completely unrelated part of the application/libs. This would be hard to find, especially as we don't know how to reproduce the crash. *** Bug 294060 has been marked as a duplicate of this bug. *** *** Bug 306894 has been marked as a duplicate of this bug. *** *** Bug 308883 has been marked as a duplicate of this bug. *** |