You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When recursively traversing a large directory and hitting a FIFO, one thread of rg gets stuck on the FIFO (suboptimal, but okay. Perhaps FIFO should not be opened with -r? ugrep seems to skip over fifo, GNU grep has the option of using -D skip).
After the whole tree is traversed, the remaining threads start to busy loop in ignore::walk::Worker::get_work. On a system with a bunch of CPU, this results in quite heavy syscall load across the system.
I'd at least expect the other threads to block, requiring no CPU time.
Please tick this box to confirm you have reviewed the above.
What version of ripgrep are you using?
ripgrep 14.1.0
features:-simd-accel,+pcre2
simd(compile):+SSE2,-SSSE3,-AVX2
simd(runtime):+SSE2,+SSSE3,+AVX2
PCRE2 10.42 is available (JIT is available)
How did you install ripgrep?
Distribution packages of Void Linux
What operating system are you using ripgrep on?
Void Linux x86_64 glibc
Describe your bug.
When recursively traversing a large directory and hitting a FIFO, one thread of rg gets stuck on the FIFO (suboptimal, but okay. Perhaps FIFO should not be opened with -r? ugrep seems to skip over fifo, GNU grep has the option of using
-D skip
).After the whole tree is traversed, the remaining threads start to busy loop in
ignore::walk::Worker::get_work
. On a system with a bunch of CPU, this results in quite heavy syscall load across the system.I'd at least expect the other threads to block, requiring no CPU time.
What are the steps to reproduce the behavior?
Notice how the threads spin on
clock_nanosleep
What is the actual behavior?
The process keeps looping in clock_nanosleep.
I also attached a backtrace of the threads.
bt.log
What is the expected behavior?
ripgrep should just stall on the
openat
call for the FIFO, and not do busy looping in the other threads.The text was updated successfully, but these errors were encountered: