alnikiforov created this revision.
alnikiforov added reviewers: ngraham, davidedmundson, mart.
Herald added a project: Plasma.
Herald added a subscriber: plasma-devel.
alnikiforov requested review of this revision.

REVISION SUMMARY
  Using these pointer types incorrectly leads to premature destruction
  of AppletsLayout object and crash
  
  AppletsLayout m_layout is set only in function ItemContainer::setLayout.
  This function takes a plain pointer and wraps it into weak shared pointer.
  Eventually weak shared pointer's internal counter reaches zero and object 
instance m_layout points to is destroyed,
  although it was created via qml in plasma-desktop. This object destruction 
leads to a lot of issues, including eventual crash.
  
  BUG: 417603

TEST PLAN
  1. Unlock widgets via command: qdbus org.kde.plasmashell /PlasmaShell 
evaluateScript "lockCorona(false)"
  2. On desktop push right mouse button and select menu item 'Add Widgets...'
  3. Add various widgets to desktop using drag'n'drop on desktop. I've added at 
least following widgets on same desktop screen: Audio Volume, Battery and 
Brightness, Binary Clock, Clipboard, Color Picker, Grouping Plasmoid, Quick Chat
  4. Remove just added widgets in random order
  5. If necessary, repeat steps 3 and 4 a few times If widgets aren't appearing 
on desktop despite adding them via drag'n'drop, it's bugged and ready to crash. 
But it's not a requirement for crash.
  6. lock widgets via command: qdbus org.kde.plasmashell /PlasmaShell 
evaluateScript "lockCorona(true)"
  7. repeat steps 1-6 multiple times
  8. plasmashell shouldn't crash

REPOSITORY
  R120 Plasma Workspace

REVISION DETAIL
  https://phabricator.kde.org/D27650

AFFECTED FILES
  components/containmentlayoutmanager/itemcontainer.h

To: alnikiforov, ngraham, davidedmundson, mart
Cc: plasma-devel, Orage, LeGast00n, The-Feren-OS-Dev, cblack, jraleigh, zachus, 
fbampaloukas, GB_2, ragreen, ZrenBot, ngraham, himcesjf, lesliezhai, 
ali-mohamed, jensreuterberg, abetts, sebas, apol, ahiemstra, mart

Reply via email to