https://bugs.kde.org/show_bug.cgi?id=465357

            Bug ID: 465357
           Summary: Dolphin's UI freezes when stat() is slow
    Classification: Applications
           Product: dolphin
           Version: 22.12.2
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: general
          Assignee: dolphin-bugs-n...@kde.org
          Reporter: accounts+...@chiller3.com
                CC: kfm-de...@kde.org
  Target Milestone: ---

Created attachment 155992
  --> https://bugs.kde.org/attachment.cgi?id=155992&action=edit
A patch to skip directory counts when KFileItem::isSlow

SUMMARY

When stat() does not complete quickly, Dolphin's UI freezes until it returns.

This seems to be the root cause for the freezes I'm encountering. Specifically,
when I try to access a `cifs` mount point, Dolphin kicks off
`KDirectoryContentsCounter.scanDirectory()` for all the subdirectories visible
on screen. The opendir/readdir calls are enough to slow down the server to the
point where each stat takes a couple of seconds. Once stat starts slowing down,
the Dolphin's UI stops responding.

I've been working around the problem by making Dolphin skip
`KDirectoryContentsCounter.scanDirectory()` if `KFileItem::isSlow()` is true
(patch attached). Even though this hides the issue, I wonder if it may be good
to have anyway since it matches the behavior of kio smb://, where directory
counts don't happen.

STEPS TO REPRODUCE

To avoid the need to connect to a slow server, I've attached an LD_PRELOAD'able
library to help reproduce this. It slows down all stat calls to paths under
/home/, except for paths containing "/." so that Dolphin's startup isn't slowed
down when reading configs.

1. $ g++ -shared -fPIC slow_stat.cpp -o slow_stat.so
2. $ LD_PRELOAD=$(pwd)/slow_stat.so dolphin
3. Navigate to somewhere under /home/
4. Try to perform UI actions, like hovering over items, selecting, right
clicking, opening menus, etc.

OBSERVED RESULT

Dolphin's UI freezes until stat returns

EXPECTED RESULT

Dolphin should ideally remain responsive while stat occurs

SOFTWARE/OS VERSIONS

Windows: n/a
macOS: n/a
Linux/KDE Plasma: Fedora 37
KDE Plasma Version: 5.26.5
KDE Frameworks Version: 5.102.0
Qt Version: 5.15.8

ADDITIONAL INFORMATION

(Patch for my workaround is attached)

I've also tried compiling the latest commit in dolphin
(580f3bf0d5c8735cf230208fd6e4b288a3e55722) and there's no change in behavior.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to