uutils/coreutils · error · uucore::error::Error

Reading cyclic directory

Error message

Reading cyclic directory

What it means

Error "Reading cyclic directory" thrown in uutils/coreutils.

Solutions

  1. Remove the directory cycle (symlink loop or bind mount loop) before recursing.
  2. Use options that do not follow symbolic links, e.g. chcon without -L/-H dereferencing.

When it happens

Trigger: Occurs when chcon recursion detects a directory cycle, e.g. via bind mounts or symlinks.

Common situations: Recursing with -R through directory structures containing loops.


AI-assisted analysis of uutils/coreutils@0b77ced485 (2026-08-19). Data as JSON: /api/errors/442d36e677262c4b. Report an issue: GitHub.

Appendix: source

Thrown at src/uu/chcon/src/chcon.rs:593

                // this file, tell fts_read to stat it "again".
                if entry.level() == 0 && entry.number() == 0 {
                    entry.set_number(1);
                    let _ignored = fts.set(fts_sys::FTS_AGAIN);
                    return Ok(());
                }

                result = fts_err(translate!("chcon-op-accessing"));
            }

            fts_sys::FTS_ERR => result = fts_err(translate!("chcon-op-accessing")),

            fts_sys::FTS_DNR => result = fts_err(translate!("chcon-op-reading-directory")),

            fts_sys::FTS_DC
                if cycle_warning_required(options.recursive_mode.fts_open_options(), &entry) =>
            {
                emit_cycle_warning(&file_full_name);
                return Err(err(
                    translate!("chcon-op-reading-cyclic-directory"),
                    io::ErrorKind::InvalidData,
                ));
            }

            _ => {}
        }

        if entry.flags() == fts_sys::FTS_DP
            && result.is_ok()
            && root_dev_ino_check(root_dev_ino, file_dev_ino)
        {
            root_dev_ino_warn(&file_full_name);
            result = Err(err(
                translate!("chcon-op-modifying-root-path"),
                io::ErrorKind::PermissionDenied,
            ));
        }

View on GitHub (pinned to 0b77ced485)