Troubleshooting
This page covers common issues you may encounter when running nf-core pipelines.
Troubleshooting basics
Examine log files
When a pipeline fails, always check .nextflow.log for error messages. The work directory for each process contains additional diagnostic files:
command.sh: The command that was executedcommand.out: Standard output from the toolcommand.err: Standard error from the toolcommand.log: Combined output and errorexitcode: The exit code when the job endedcommand.trace: Resource usage logs
Categorize the error
The timing of a failure helps narrow down its cause:
- Before the first process: Often caused by an outdated version of Nextflow. An example is the error
Unknown config attribute: projectDir. - During the first process: Typically a software dependency issue or missing command in
$PATH. - During pipeline execution: Check the process log files in the work directory.
- While generating outputs: Look for a
Missing output filemessage followed by tool-specific errors.
Input and output
Sample sheet path errors
If the pipeline fails to find input files, verify that all file paths in your sample sheet are correct. A common mistake is trailing spaces at the end of file paths.
Local iGenomes path overridden
If you are using a local copy of iGenomes but the pipeline defaults to the S3 locations, specify the path directly on the command line:
nextflow run nf-core/<pipeline> --igenomes_base /path/to/igenomesThe params.igenomes_base setting in custom config files can be overridden by the load order of configuration files. Using the command-line flag or a -params-file ensures the correct path is used.
Glob pattern not matching files
If only one file is processed when you expect multiple, the shell may be expanding your glob pattern before passing it to Nextflow. Enclose glob patterns in single quotes to prevent shell expansion:
nextflow run nf-core/<pipeline> --input 'my_*_{R1,R2}.fastq.gz'Pipeline crashes
Tool not found at startup
If the pipeline fails immediately with a command not found error, you likely have not specified a container or environment profile. Without -profile, Nextflow searches for tools in your system $PATH. Add a profile to your command:
nextflow run nf-core/<pipeline> -profile dockerUse docker, singularity, podman, or conda depending on what is available on your system.
Stuck on revision
If Nextflow warns that Project nf-core/<pipeline> is currently stuck on revision, multiple versions are installed locally and Nextflow cannot determine which one to run. Specify the version explicitly with -r:
nextflow run nf-core/<pipeline> -r 2.1.0 --input ...Out of memory errors
Exit codes 104, 134, 137, 139, 143, and 247 typically indicate out-of-memory errors. nf-core pipelines automatically retry failed processes with increased resources (default: 3 retries). If retries are exhausted, create a configuration file that adjusts the resource limits for your system and resume:
nextflow run nf-core/<pipeline> -c custom.config -resumeSteps not executed
If an expected step is skipped, check for typos in optional parameter names. If an upstream process was disabled, it may not have produced the input files required by the skipped step.
Pipeline updates
Update not applying
If pulling the latest version of a pipeline does not apply expected fixes, Nextflow may believe you already have the corrected version. Clear the local cache and re-pull:
rm -r ~/.nextflow/assets/nf-core/<pipeline>
nextflow pull nf-core/<pipeline> -latestSession errors
Unable to acquire lock
If you see Unable to acquire lock on session with ID ..., a previous Nextflow run in the same directory did not terminate cleanly. Remove the work directory to clear the lock:
rm -rf workTo avoid this issue, use ctrl + c (not ctrl + z) to stop a Nextflow run. ctrl + z suspends the process without allowing Nextflow to shut down cleanly.
Docker errors
Permission errors when writing to home directory
If a specific process fails with permission errors while writing to $HOME, the issue is caused by the -u $(id -u):$(id -g) option in the Docker profile. This option emulates your user inside the container but provides no home directory. Rather than disabling this globally, override containerOptions for the affected process in your modules.config:
process {
withName: TOOL_NAME {
containerOptions = ''
}
}Note: containerOptions is not supported by Kubernetes or Google Life Sciences executors.
Network errors
IPv6 connectivity issues
If you see WARN: Cannot read project manifest -- Cause: Network is unreachable (connect failed) on a machine using IPv6, Nextflow and Java default to IPv4. Configure Java to prefer IPv6 by setting this environment variable before running:
export NXF_OPTS="-Djava.net.preferIPv4Stack=false -Djava.net.preferIPv6Addresses=true"Add this line to ~/.bashrc or ~/.zshrc for a permanent fix.
Docker network isolation on IPv6 machines
If processes inside Docker containers fail to fetch data on IPv6 machines, enable host network mode for the affected process in a custom config file:
process {
withName: YOUR_MODULE {
containerOptions = '--network host'
}
}Then run with:
nextflow run nf-core/<pipeline> -profile docker -c custom.config