[okular] [Bug 512946] New: okular doesn't start if mounted file / network is unreachable

bugzilla_noreply at kde.org bugzilla_noreply at kde.org
Thu Dec 4 16:17:07 GMT 2025


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

            Bug ID: 512946
           Summary: okular doesn't start if mounted file / network is
                    unreachable
    Classification: Applications
           Product: okular
      Version First 22.12.3
       Reported In:
          Platform: Debian stable
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: general
          Assignee: okular-devel at kde.org
          Reporter: best at univention.de
  Target Milestone: ---

okular doesn't start if a mounted NFS directory is not available e.g. due to a
network change.

mount:
example.org:/shares/media on /home/media type nfs4
(rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.156,local_lock=none,addr=192.168.1.22)

strace shows it tries to access a file which was recently opened. I guess for
the completion of the list of recent opened files.

STEPS TO REPRODUCE
1. remove network cable
2. open okular
3. wait forever

OBSERVED RESULT
hangs forever

EXPECTED RESULT
1. open the file / okular GUI immediately.
2. load the list of recent opened files with a timeout of 2 seconds.
3. load the list asynchronously in the background e.g. in a thread
4. log a warning message to stderr/elsewhere, if the files isn't accessible
5. ignore unreachable files (remove them from that list or grey them out)
6. maybe retry periodically (I don't care)
7. at least, always start fast!

ADDITIONAL INFORMATION
strace log:
```
…
access("/usr/share/icons/breeze/actions/symbolic/dialog-close.svg", F_OK) = -1
ENOENT (Datei oder Verzeichnis nicht gefunden)                                  
access("/usr/share/icons/breeze/devices/symbolic/dialog-close.svg", F_OK) = -1
ENOENT (Datei oder Verzeichnis nicht gefunden)                                  
access("/usr/share/icons/breeze/emblems/symbolic/dialog-close.svg", F_OK) = -1
ENOENT (Datei oder Verzeichnis nicht gefunden)                                  
access("/usr/share/icons/breeze/places/symbolic/dialog-close.svg", F_OK) = -1
ENOENT (Datei oder Verzeichnis nicht gefunden)                                  
access("/usr/share/icons/breeze/status/symbolic/dialog-close.svg", F_OK) = -1
ENOENT (Datei oder Verzeichnis nicht gefunden)                                  
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8                                     
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])    
writev(3,
[{iov_base="\22\0\10\0\f\0\200\1\10\1\0\0\3\1\0\0\10\0\0\0\6\0\0\0Okular\0\0",
iov_len=32}], 1) = 32
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3,
revents=POLLIN|POLLOUT}])                           
recvmsg(3, {msg_namelen=0}, 0)          = -1 EAGAIN (Die Ressource ist zur Zeit
nicht verfügbar)               
writev(3, [{iov_base="\22\0\6\0\f\0\200\1'\0\0\0\37\0\0\0\10\30\f\0\0\0\0\0",
iov_len=24}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 24     
futex(0x55a4c7ede25c, FUTEX_WAKE_PRIVATE, 1) = 1                                
futex(0x55a4c7ede208, FUTEX_WAKE_PRIVATE, 1) = 1                                
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])    
writev(3,
[{iov_base="\22\0\10\0\f\0\200\1\10\1\0\0\3\1\0\0\10\0\0\0\6\0\0\0Okular\0\0",
iov_len=32}], 1) = 32  
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])    
writev(3, [{iov_base="\22\0\6\0\f\0\200\1'\0\0\0\37\0\0\0\10\30\f\0\0\0\0\0",
iov_len=24}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 24     
futex(0x55a4c7ede258, FUTEX_WAKE_PRIVATE, 1) = 1                                
futex(0x55a4c7ede208, FUTEX_WAKE_PRIVATE, 1) = 1                                
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])    
writev(3,
[{iov_base="\22\0\6\0\f\0\200\1;\1\0\0\3\1\0\0\10\0\0\0\0\0\0\0\22\0\10\0\f\0\200\1"...,
iov_len=56}], 1) = 56                                                           
futex(0x55a4c7ede208, FUTEX_WAIT_PRIVATE, 2, NULL) = -1 EAGAIN (Die Ressource
ist zur Zeit nicht verfügbar)  
futex(0x55a4c7ede208, FUTEX_WAKE_PRIVATE, 1) = 0                                
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])    
writev(3, [{iov_base="\22\0\6\0\f\0\200\1'\0\0\0\37\0\0\0\10\30\f\0\0\0\0\0",
iov_len=24}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 24     
futex(0x55a4c7ede208, FUTEX_WAIT_PRIVATE, 2, NULL) = -1 EAGAIN (Die Ressource
ist zur Zeit nicht verfügbar)         
futex(0x55a4c7ede208, FUTEX_WAKE_PRIVATE, 1) = 0                                
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])    
writev(3,
[{iov_base="\22\0\10\0\f\0\200\1\10\1\0\0\3\1\0\0\10\0\0\0\6\0\0\0Okular\0\0",
iov_len=32}], 1) = 32         
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{iov_base="\22\0\6\0\f\0\200\1'\0\0\0\37\0\0\0\10\30\f\0\0\0\0\0",
iov_len=24}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 24     
futex(0x55a4c7ede25c, FUTEX_WAKE_PRIVATE, 1) = 1                                
futex(0x55a4c7ede208, FUTEX_WAKE_PRIVATE, 1) = 1                                
futex(0x55a4c7ede208, FUTEX_WAIT_PRIVATE, 2, NULL) = -1 EAGAIN (Die Ressource
ist zur Zeit nicht verfügbar)            
futex(0x55a4c7ede208, FUTEX_WAKE_PRIVATE, 1) = 0                                
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8                                     
getpid()                                = 1492466                               
write(10, "\1\0\0\0\0\0\0\0", 8)        = 8                                     
futex(0x55a4c83d68d0, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL,
FUTEX_BITSET_MATCH_ANY) = 0          
futex(0x55a4c83d6880, FUTEX_WAKE_PRIVATE, 1) = 0    
access("/home/media/foo.pdf", F_OK
```

→ hangs accessing file

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the Okular-devel mailing list