uutils
coreutils
BlogDocsChangelog

fix(mv): prevent hang when moving directories containing FIFO files

#9665
Comparing
naoNao89:fix/mv-fifo-hang-9656
(
68a35de
) with
main
(
1fca829
)
CodSpeed Performance Gauge
0%
Untouched
127
Skipped
6

Benchmarks

Skipped (6)

Passed

tsort_input_parsing_heavy[5000]
src/uu/tsort/benches/tsort_bench.rs
CodSpeed Performance Gauge
+1%
82.8 ms82 ms
du_deep_tree[(100, 3)]
src/uu/du/benches/du_bench.rs
CodSpeed Performance Gauge
+1%
1.2 ms1.2 ms
cksum_crc32b
src/uu/cksum/benches/cksum_bench.rs
CodSpeed Performance Gauge
+1%
13.8 ms13.7 ms
cksum_default
src/uu/cksum/benches/cksum_bench.rs
CodSpeed Performance Gauge
0%
17.4 ms17.4 ms
cksum_multiple_files
src/uu/cksum/benches/cksum_bench.rs
CodSpeed Performance Gauge
0%
26.2 ms26.1 ms
cksum_raw_output
src/uu/cksum/benches/cksum_bench.rs
CodSpeed Performance Gauge
0%
17.5 ms17.4 ms
cksum_crc
src/uu/cksum/benches/cksum_bench.rs
CodSpeed Performance Gauge
0%
17.5 ms17.4 ms
du_summarize_balanced_tree[(5, 4, 10)]
src/uu/du/benches/du_bench.rs
CodSpeed Performance Gauge
0%
8.5 ms8.5 ms
cp_archive_balanced_tree[(5, 4, 10)]
src/uu/cp/benches/cp_bench.rs
CodSpeed Performance Gauge
0%
77.7 ms77.7 ms
cp_preserve_metadata[(5, 4, 10)]
src/uu/cp/benches/cp_bench.rs
CodSpeed Performance Gauge
0%
74.8 ms74.8 ms
cp_recursive_deep_tree[(120, 4)]
src/uu/cp/benches/cp_bench.rs
CodSpeed Performance Gauge
0%
13.6 ms13.6 ms
b64_decode_ignore_garbage_synthetic
src/uu/base64/benches/base64_bench.rs
CodSpeed Performance Gauge
0%
164.6 µs164.5 µs
sort_dictionary_order[500000]
src/uu/sort/benches/sort_bench.rs
CodSpeed Performance Gauge
0%
1.1 s1.1 s
split_bytes
src/uu/split/benches/split_bench.rs
CodSpeed Performance Gauge
0%
508.7 µs508.6 µs
mv_force_overwrite
src/uu/mv/benches/mv_bench.rs
CodSpeed Performance Gauge
0%
137.9 ms137.8 ms
tsort_wide_dag[100000]
src/uu/tsort/benches/tsort_bench.rs
CodSpeed Performance Gauge
0%
133.6 ms133.5 ms
rm_single_file
src/uu/rm/benches/rm_bench.rs
CodSpeed Performance Gauge
0%
119.3 ms119.2 ms
b64_encode_synthetic
src/uu/base64/benches/base64_bench.rs
CodSpeed Performance Gauge
0%
162.1 µs162 µs
cksum_blake3
src/uu/cksum/benches/cksum_bench.rs
CodSpeed Performance Gauge
0%
206.3 µs206.2 µs
mv_single_file
src/uu/mv/benches/mv_bench.rs
CodSpeed Performance Gauge
0%
135.4 ms135.4 ms
split_numeric_suffix
src/uu/split/benches/split_bench.rs
CodSpeed Performance Gauge
0%
5.9 ms5.9 ms
ls_recursive_deep_tree[(200, 2)]
src/uu/ls/benches/ls_bench.rs
CodSpeed Performance Gauge
0%
2.2 ms2.2 ms
b64_decode_synthetic
src/uu/base64/benches/base64_bench.rs
CodSpeed Performance Gauge
0%
164.6 µs164.6 µs
tsort_complex_dag[50000]
src/uu/tsort/benches/tsort_bench.rs
CodSpeed Performance Gauge
0%
84.1 ms84.1 ms
factor_multiple_u64s[2]
src/uu/factor/benches/factor_bench.rs
CodSpeed Performance Gauge
0%
213 ms213 ms
sort_case_insensitive[500000]
src/uu/sort/benches/sort_bench.rs
CodSpeed Performance Gauge
0%
277.1 ms277.1 ms
tsort_linear_chain[1000000]
src/uu/tsort/benches/tsort_bench.rs
CodSpeed Performance Gauge
0%
1.5 s1.5 s
ls_recursive_mixed_tree
src/uu/ls/benches/ls_bench.rs
CodSpeed Performance Gauge
0%
1.5 ms1.5 ms
uniq_case_insensitive[10000]
src/uu/uniq/benches/uniq_bench.rs
CodSpeed Performance Gauge
0%
1.8 ms1.8 ms
cksum_blake2b
src/uu/cksum/benches/cksum_bench.rs
CodSpeed Performance Gauge
0%
192.7 ms192.7 ms
cksum_sha3
src/uu/cksum/benches/cksum_bench.rs
CodSpeed Performance Gauge
0%
1.8 s1.8 s
hashsum_sha512
src/uu/hashsum/benches/hashsum_bench.rs
CodSpeed Performance Gauge
0%
110.8 ms110.8 ms
cksum_sha512
src/uu/cksum/benches/cksum_bench.rs
CodSpeed Performance Gauge
0%
1.1 s1.1 s
cksum_sha384
src/uu/cksum/benches/cksum_bench.rs
CodSpeed Performance Gauge
0%
1.1 s1.1 s
uniq_with_count[10000]
src/uu/uniq/benches/uniq_bench.rs
CodSpeed Performance Gauge
0%
1.9 ms1.9 ms
ls_recursive_long_all_mixed_tree
src/uu/ls/benches/ls_bench.rs
CodSpeed Performance Gauge
0%
2.9 ms2.9 ms
cksum_sha224
src/uu/cksum/benches/cksum_bench.rs
CodSpeed Performance Gauge
0%
1.7 s1.7 s
cksum_sha2
src/uu/cksum/benches/cksum_bench.rs
CodSpeed Performance Gauge
0%
1.7 s1.7 s
cksum_sha256
src/uu/cksum/benches/cksum_bench.rs
CodSpeed Performance Gauge
0%
1.7 s1.7 s
sort_mixed_data[500000]
src/uu/sort/benches/sort_bench.rs
CodSpeed Performance Gauge
0%
327.9 ms327.9 ms
wc_bytes_synthetic[500]
src/uu/wc/benches/wc_bench.rs
CodSpeed Performance Gauge
0%
180 µs180 µs
rm_multiple_files
src/uu/rm/benches/rm_bench.rs
CodSpeed Performance Gauge
0%
2.2 ms2.2 ms
sort_ascii_c_locale
src/uu/sort/benches/sort_locale_bench.rs
CodSpeed Performance Gauge
0%
22.6 ms22.6 ms
mv_directory
src/uu/mv/benches/mv_bench.rs
CodSpeed Performance Gauge
0%
3.5 ms3.5 ms
uniq_heavy_duplicates[10000]
src/uu/uniq/benches/uniq_bench.rs
CodSpeed Performance Gauge
0%
2 ms2 ms
rm_force_files
src/uu/rm/benches/rm_bench.rs
CodSpeed Performance Gauge
0%
2 ms2 ms
sort_ascii_utf8_locale
src/uu/sort/benches/sort_locale_bench.rs
CodSpeed Performance Gauge
0%
43.3 ms43.3 ms
sort_key_field[500000]
src/uu/sort/benches/sort_bench.rs
CodSpeed Performance Gauge
0%
704.3 ms704.3 ms
sort_numeric
src/uu/sort/benches/sort_locale_bench.rs
CodSpeed Performance Gauge
0%
23.5 ms23.5 ms
sort_reverse_mixed
src/uu/sort/benches/sort_locale_bench.rs
CodSpeed Performance Gauge
0%
38.9 ms38.9 ms
numfmt_to_si[10000]
src/uu/numfmt/benches/numfmt_bench.rs
CodSpeed Performance Gauge
0%
33.8 ms33.8 ms
numfmt_to_iec[10000]
src/uu/numfmt/benches/numfmt_bench.rs
CodSpeed Performance Gauge
0%
33.8 ms33.8 ms
numfmt_to_si_precision[10000]
src/uu/numfmt/benches/numfmt_bench.rs
CodSpeed Performance Gauge
0%
35.3 ms35.3 ms
numfmt_round_modes[("towards-zero", 10000)]
src/uu/numfmt/benches/numfmt_bench.rs
CodSpeed Performance Gauge
0%
34.3 ms34.3 ms
numfmt_round_modes[("up", 10000)]
src/uu/numfmt/benches/numfmt_bench.rs
CodSpeed Performance Gauge
0%
34.3 ms34.3 ms
hashsum_md5_check
src/uu/hashsum/benches/hashsum_bench.rs
CodSpeed Performance Gauge
0%
32 ms32 ms
numfmt_round_modes[("down", 10000)]
src/uu/numfmt/benches/numfmt_bench.rs
CodSpeed Performance Gauge
0%
34.3 ms34.3 ms
shuf_lines[100000]
src/uu/shuf/benches/shuf_bench.rs
CodSpeed Performance Gauge
0%
26.9 ms26.9 ms
fold_custom_width[50000]
src/uu/fold/benches/fold_bench.rs
CodSpeed Performance Gauge
0%
33 ms33 ms
numfmt_from_si[10000]
src/uu/numfmt/benches/numfmt_bench.rs
CodSpeed Performance Gauge
0%
32.7 ms32.7 ms
hashsum_md5
src/uu/hashsum/benches/hashsum_bench.rs
CodSpeed Performance Gauge
0%
32 ms32 ms
fold_many_lines[100000]
src/uu/fold/benches/fold_bench.rs
CodSpeed Performance Gauge
0%
80.4 ms80.4 ms
hashsum_sha1
src/uu/hashsum/benches/hashsum_bench.rs
CodSpeed Performance Gauge
0%
72.6 ms72.6 ms
cksum_bsd
src/uu/cksum/benches/cksum_bench.rs
CodSpeed Performance Gauge
0%
128.3 ms128.3 ms
cut_fields_custom_delim
src/uu/cut/benches/cut_bench.rs
CodSpeed Performance Gauge
0%
40.8 ms40.8 ms
cksum_sysv
src/uu/cksum/benches/cksum_bench.rs
CodSpeed Performance Gauge
0%
48.2 ms48.2 ms
numfmt_large_numbers_si[10000]
src/uu/numfmt/benches/numfmt_bench.rs
CodSpeed Performance Gauge
0%
32.5 ms32.5 ms
hashsum_sha256_check
src/uu/hashsum/benches/hashsum_bench.rs
CodSpeed Performance Gauge
0%
173 ms173 ms
expand_many_lines[100000]
src/uu/expand/benches/expand_bench.rs
CodSpeed Performance Gauge
0%
148.6 ms148.6 ms
expand_custom_tabstops[50000]
src/uu/expand/benches/expand_bench.rs
CodSpeed Performance Gauge
0%
36.8 ms36.8 ms
cksum_md5
src/uu/cksum/benches/cksum_bench.rs
CodSpeed Performance Gauge
0%
317.9 ms317.9 ms
wc_bytes_lines_synthetic[2000]
src/uu/wc/benches/wc_bench.rs
CodSpeed Performance Gauge
0%
120.2 ms120.2 ms
unexpand_many_lines[100000]
src/uu/unexpand/benches/unexpand_bench.rs
CodSpeed Performance Gauge
0%
268.4 ms268.4 ms
cksum_sha1
src/uu/cksum/benches/cksum_bench.rs
CodSpeed Performance Gauge
0%
723 ms723 ms
wc_default_large_line_count[100000]
src/uu/wc/benches/wc_bench.rs
CodSpeed Performance Gauge
0%
50.4 ms50.4 ms
cksum_sm3
src/uu/cksum/benches/cksum_bench.rs
CodSpeed Performance Gauge
0%
1.6 s1.6 s
wc_words_large_line_count[100000]
src/uu/wc/benches/wc_bench.rs
CodSpeed Performance Gauge
0%
48 ms48 ms
cksum_shake128
src/uu/cksum/benches/cksum_bench.rs
CodSpeed Performance Gauge
0%
1.5 s1.5 s
cksum_shake256
src/uu/cksum/benches/cksum_bench.rs
CodSpeed Performance Gauge
0%
1.9 s1.9 s
wc_words_synthetic[2000]
src/uu/wc/benches/wc_bench.rs
CodSpeed Performance Gauge
0%
11.4 s11.4 s
unexpand_large_file[10]
src/uu/unexpand/benches/unexpand_bench.rs
CodSpeed Performance Gauge
0%
562.8 ms562.8 ms
sort_reverse_locale[500000]
src/uu/sort/benches/sort_bench.rs
CodSpeed Performance Gauge
0%
362.1 ms362.1 ms
wc_lines_large_line_count[500000]
src/uu/wc/benches/wc_bench.rs
CodSpeed Performance Gauge
0%
2.9 ms2.9 ms
cut_fields_tab
src/uu/cut/benches/cut_bench.rs
CodSpeed Performance Gauge
0%
34.1 ms34.1 ms
sort_ascii_only[500000]
src/uu/sort/benches/sort_bench.rs
CodSpeed Performance Gauge
0%
354.3 ms354.3 ms
numfmt_padding[(10000, 50)]
src/uu/numfmt/benches/numfmt_bench.rs
CodSpeed Performance Gauge
0%
48 ms48 ms
seq_formatted
src/uu/seq/benches/seq_bench.rs
CodSpeed Performance Gauge
0%
96.1 ms96.1 ms
nl_large_file[10]
src/uu/nl/benches/nl_bench.rs
CodSpeed Performance Gauge
0%
57.1 ms57.1 ms
nl_many_lines[100000]
src/uu/nl/benches/nl_bench.rs
CodSpeed Performance Gauge
0%
44.9 ms44.9 ms
sort_german_c_locale
src/uu/sort/benches/sort_locale_bench.rs
CodSpeed Performance Gauge
0%
38.5 ms38.5 ms
seq_custom_separator
src/uu/seq/benches/seq_bench.rs
CodSpeed Performance Gauge
0%
28.7 ms28.7 ms
seq_integers
src/uu/seq/benches/seq_bench.rs
CodSpeed Performance Gauge
0%
26.1 ms26.1 ms
cut_bytes
src/uu/cut/benches/cut_bench.rs
CodSpeed Performance Gauge
0%
8.4 ms8.4 ms
ls_recursive_long_all_deep_tree[(100, 4)]
src/uu/ls/benches/ls_bench.rs
CodSpeed Performance Gauge
0%
3.3 ms3.3 ms
ls_recursive_wide_tree[(10000, 1000)]
src/uu/ls/benches/ls_bench.rs
CodSpeed Performance Gauge
0%
52.9 ms52.9 ms
sort_unique_locale[500000]
src/uu/sort/benches/sort_bench.rs
CodSpeed Performance Gauge
0%
494.4 ms494.4 ms
seq_with_step
src/uu/seq/benches/seq_bench.rs
CodSpeed Performance Gauge
0%
13.3 ms13.3 ms
cut_characters
src/uu/cut/benches/cut_bench.rs
CodSpeed Performance Gauge
0%
7.4 ms7.4 ms
ls_recursive_long_all_balanced_tree[(6, 4, 15)]
src/uu/ls/benches/ls_bench.rs
CodSpeed Performance Gauge
0%
134.3 ms134.3 ms
split_lines
src/uu/split/benches/split_bench.rs
CodSpeed Performance Gauge
0%
5.7 ms5.7 ms
shuf_input_range[1000000]
src/uu/shuf/benches/shuf_bench.rs
CodSpeed Performance Gauge
0%
229.1 ms229.1 ms
wc_lines_variable_length[(50, 500)]
src/uu/wc/benches/wc_bench.rs
CodSpeed Performance Gauge
0%
3.4 ms3.4 ms
hashsum_sha256
src/uu/hashsum/benches/hashsum_bench.rs
CodSpeed Performance Gauge
0%
173 ms173 ms
ls_recursive_long_all_wide_tree[(15000, 1500)]
src/uu/ls/benches/ls_bench.rs
CodSpeed Performance Gauge
0%
143.2 ms143.2 ms
seq_large_integers
src/uu/seq/benches/seq_bench.rs
CodSpeed Performance Gauge
0%
2.2 ms2.2 ms
wc_lines_extreme_line_lengths[(100000, 200)]
src/uu/wc/benches/wc_bench.rs
CodSpeed Performance Gauge
0%
1.6 ms1.6 ms
wc_chars_large_line_count[100000]
src/uu/wc/benches/wc_bench.rs
CodSpeed Performance Gauge
0%
1 ms1 ms
ls_recursive_balanced_tree[(6, 4, 15)]
src/uu/ls/benches/ls_bench.rs
CodSpeed Performance Gauge
0%
56 ms56 ms
mv_multiple_to_dir
src/uu/mv/benches/mv_bench.rs
CodSpeed Performance Gauge
0%
12.9 ms12.9 ms
shuf_repeat_sampling[50000]
src/uu/shuf/benches/shuf_bench.rs
CodSpeed Performance Gauge
0%
4.6 ms4.6 ms
tsort_tree_dag[(10, 3)]
src/uu/tsort/benches/tsort_bench.rs
CodSpeed Performance Gauge
0%
34.1 ms34.1 ms
sort_unique_mixed
src/uu/sort/benches/sort_locale_bench.rs
CodSpeed Performance Gauge
0%
39.3 ms39.3 ms
sort_mixed_c_locale
src/uu/sort/benches/sort_locale_bench.rs
CodSpeed Performance Gauge
0%
38.3 ms38.3 ms
split_number_chunks
src/uu/split/benches/split_bench.rs
CodSpeed Performance Gauge
0%
286 µs286.1 µs
cp_recursive_balanced_tree[(5, 4, 10)]
src/uu/cp/benches/cp_bench.rs
CodSpeed Performance Gauge
0%
72.2 ms72.2 ms
sort_long_line[160000]
src/uu/sort/benches/sort_bench.rs
CodSpeed Performance Gauge
0%
1.7 ms1.7 ms
sort_german_locale
src/uu/sort/benches/sort_locale_bench.rs
CodSpeed Performance Gauge
0%
39.1 ms39.1 ms
cp_recursive_wide_tree[(6000, 800)]
src/uu/cp/benches/cp_bench.rs
CodSpeed Performance Gauge
0%
189.2 ms189.3 ms
sort_case_sensitive[500000]
src/uu/sort/benches/sort_bench.rs
CodSpeed Performance Gauge
0%
174.3 ms174.4 ms
sort_mixed_utf8_locale
src/uu/sort/benches/sort_locale_bench.rs
CodSpeed Performance Gauge
0%
38.9 ms38.9 ms
rm_recursive_tree
src/uu/rm/benches/rm_bench.rs
CodSpeed Performance Gauge
0%
13.5 ms13.6 ms
sort_numeric[500000]
src/uu/sort/benches/sort_bench.rs
CodSpeed Performance Gauge
0%
1.2 s1.2 s
du_max_depth_balanced_tree[(6, 4, 10)]
src/uu/du/benches/du_bench.rs
CodSpeed Performance Gauge
0%
33 ms33.1 ms
du_all_wide_tree[(5000, 500)]
src/uu/du/benches/du_bench.rs
CodSpeed Performance Gauge
0%
18.1 ms18.2 ms
sort_accented_data[500000]
src/uu/sort/benches/sort_bench.rs
CodSpeed Performance Gauge
0%
363.1 ms364.2 ms
du_wide_tree[(5000, 500)]
src/uu/du/benches/du_bench.rs
CodSpeed Performance Gauge
0%
11.3 ms11.3 ms
cp_large_file[16]
src/uu/cp/benches/cp_bench.rs
CodSpeed Performance Gauge
-1%
356.7 µs358.8 µs

Commits

Click on a commit to change the comparison range
Base
main
1fca829
+3.18%
fix(mv): prevent hang when moving directories containing FIFO files Fixes #9656 When moving a directory containing FIFO files, copy_dir_contents_recursive() would call fs::copy() on the FIFO, causing an indefinite hang. This fix adds FIFO detection before the copy operation and uses make_fifo() instead, matching the behavior of rename_fifo_fallback(). - Add FIFO detection in copy_dir_contents_recursive() - Create new FIFO at destination using make_fifo() - Add test with timeout protection to prevent future regressions
1e5bf34
10 days ago
by naoNao89
-3.16%
test: add cross-platform mount infrastructure and refactor mv FIFO test - Add macOS mount_temp_fs() implementation using hdiutil ramdisk - Refactor test_mv_dir_containing_fifo to use TestScenario infrastructure - Replace platform-specific /dev/shm dependency with portable mount_temp_fs() - Consolidate separate cross-fs and same-fs tests into single test - Add root privilege requirement check - Implement automatic cleanup via Drop trait on all platforms This completes cross-platform test infrastructure: - Linux/FreeBSD/Android: tmpfs mounting (already existed) - macOS: ramdisk creation + HFS+ format + mount (new) Both implementations provide mount_temp_fs()/umount_temp_fs() for cross-device testing without relying on system-specific paths.
68a35de
4 days ago
by naoNao89
© 2025 CodSpeed Technology
Home Terms Privacy Docs