To Reproduce
Use ghc::filesystem::recursive_directory_iterator in disk mounted by CIFS
Expected behavior
Retry syscall if errno is EINTR (in my case ::opendir)
Additional context
std::filesystem in gcc 9.4 (Ubuntu 20.04) has same problem.
terminate called after throwing an instance of 'std::filesystem::__cxx11::filesystem_error'
what(): filesystem error: cannot increment recursive directory iterator: Interrupted system call
boost::filesystem 1.71.0 has same problem.
terminate called after throwing an instance of 'boost::filesystem::filesystem_error'
what(): filesystem::recursive_directory_iterator directory error: Interrupted system call
Describe the bug Throw unexpected filesystemerror (errno EINTR) in CIFS mounted disk.
strace shows:
To Reproduce Use ghc::filesystem::recursive_directory_iterator in disk mounted by CIFS
Expected behavior Retry syscall if errno is EINTR (in my case
::opendir
)Additional context std::filesystem in gcc 9.4 (Ubuntu 20.04) has same problem.
boost::filesystem 1.71.0 has same problem.
boost::filesystem >= 1.74.0 seems fix this problem by retry syscall in EINTR ? https://www.boost.org/doc/libs/1_74_0/libs/filesystem/src/operations.cpp