ahmadsamir added a comment.

  In D23875#529442 <https://phabricator.kde.org/D23875#529442>, @dhaumann wrote:
  
  > Since this crash is in KCoreDirLister, I wonder whether we can find a unit 
test that reproduces this without the KFileWidget.
  
  
  I think the main issue here is kdirlister inserting items into 
pendingUpdates, then trying to use an invalid, end(), iterator in 
DirItem::reinsert(); so it's about the pace things happen:
  
  - with KFileWidget, the successive creating and entering of multiple nested 
folders puts things in pending updates; creating the nested folders in one go 
a/b/c/d (which is possible), doesn't cause the crash
  - "Theoretically" with dolphin or gwenview, copying folders to a pen drive 
where presumably the latter is slow, so kdirlister is inserting items in 
pendingUpdates, the same with ripping an audio cd (these are slow by design it 
seems) and lastly copying files to a smart phone via kde-connect.
  
  In D23875#529446 <https://phabricator.kde.org/D23875#529446>, @dhaumann wrote:
  
  > A different patch was proposed with D21197 
<https://phabricator.kde.org/D21197> in May 2019.
  
  
  I didn't know about D21197 <https://phabricator.kde.org/D21197>, technically 
it's the same patch; from the other patch, I could be wrong but:
  
    (*it).url() == oldUrl
  
  will always be true, so it's redundant.
  
  A couple of stuff I found while I was stuck^Wworking on this issue, (sharing 
them here because better minds than mine could have a better fix):
  
  - It happens in slotResult() when the jobUrl is a //child// of an item dir in 
pendingUpdates
  - The parentDir in reinsert() has DirItem->lstItems.size() == 0
  
  When creating a new folder in the "save as" dialog, I see this sequence:
  slotFilesAdded() -> itemsAddedInDirectory() -> updateDirectory(), in the 
latter checkUpdate(dir) is always false.
  
  Using dolphin to create a new folder, then enter it, then create a new folder 
inside... etc, it's the same sequence but checkUpdate(dir) is usually always 
true. That confirms my idea that it's about pace, things happening too fast, or 
too slow in the case of the pen drive / audio cd / smart phone, and kdirlister 
is guarding against being flooded by FAM events.

REPOSITORY
  R241 KIO

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

To: ahmadsamir, #frameworks, dfaure, chinmoyr
Cc: dhaumann, kde-frameworks-devel, LeGast00n, GB_2, michaelh, ngraham, bruns

Reply via email to