Skip to main content
This page covers common troubleshooting steps when encountering errors while building and running Firedancer. If these don’t resolve your issue, seek help in the #firedancer-operators channel on the Solana Tech Discord or file an issue on GitHub.

Building Issues

General Recommendations

1

Clean build from scratch

Do a fresh clone of the repository following the Getting Started guide. Verify you’re using a supported compiler.
git clone --recurse-submodules https://github.com/firedancer-io/firedancer.git
cd firedancer
git checkout __FD_LATEST_VERSION__
2

Install dependencies

Always run the dependency script after cloning:
./deps.sh
3

Update existing repositories correctly

If updating an existing clone, update the solana submodule after pulling:
git fetch
git checkout __FD_LATEST_VERSION__
git submodule update

Missing cargo Binary

Error:
error: the 'cargo' binary, normally provided by the 'cargo' component, 
is not applicable to the '1.75.0-x86_64-unknown-linux-gnu' toolchain
+ exec cargo +1.75.0 build --profile=release-with-debug --lib -p agave-validator
make: *** [src/app/fdctl/Local.mk:107: cargo-validator] Error 1
Solution: This typically happens due to a race condition during Rust toolchain installation. Reinstall the toolchain (replace 1.75.0 with your version):
rustup toolchain uninstall 1.75.0-x86_64-unknown-linux-gnu
rustup toolchain install 1.75.0-x86_64-unknown-linux-gnu

Out of Memory During Build

Symptom: Build fails with various errors when compiling Agave components. Solution: You need around 32GiB of available memory to build Firedancer. If you run out of memory, make can return various errors. Consider:
  • Closing other applications
  • Reducing parallel jobs: make -j4 fdctl solana (instead of -j)
  • Adding swap space temporarily
  • Building on a machine with more RAM

Compiler Version Issues

Solution: Firedancer requires GCC 8.5 or higher. Only GCC versions 11, 12, and 13 are officially supported and tested. Check your GCC version:
gcc --version
If your version is unsupported, install a supported version through your package manager.

Configuration Issues

General Recommendations

If fdctl configure init all fails, try removing all existing configuration first:
sudo fdctl configure fini all --config ~/config.toml
sudo fdctl configure init all --config ~/config.toml
You can also re-run a specific stage:
sudo fdctl configure init hugetlbfs --config ~/config.toml
Ensure the same config.toml is used for all commands:
# Check configuration
fdctl configure check all --config ~/config.toml

# Initialize with SAME file
sudo fdctl configure init all --config ~/config.toml

# Run with SAME file
sudo fdctl run --config ~/config.toml
Ensure your configuration file is valid TOML. Common issues:
  • Missing quotes around strings
  • Incorrect array syntax
  • Duplicate keys
  • Invalid section headers
You can validate TOML syntax using online validators or command-line tools.
fdctl often prints helpful suggestions in error messages. Look for:
  • Specific capability requirements
  • Permission issues
  • Missing system resources
  • Configuration conflicts

Hugetlbfs Allocation Failures

Error: Cannot allocate huge pages Solutions:
Run hugetlbfs configuration immediately after system boot. Memory fragmentation later prevents allocating large contiguous blocks.
  • Reboot and run fdctl configure init hugetlbfs before other applications start
  • Check available memory: cat /proc/meminfo | grep Huge
  • Verify no other applications are holding huge pages

Network Device Configuration Errors

Error: ethtool commands fail Solutions:
  • Verify the network interface name in your config matches the actual interface:
    ip link show
    
  • Check if the interface supports required features:
    ethtool -k <interface>
    
  • Ensure you’re running with root privileges (not just capabilities)

Sysctl Parameter Conflicts

Error: Cannot set sysctl values Solutions:
  • Check current values:
    sysctl -a | grep <parameter>
    
  • Verify you have CAP_SYS_ADMIN or root privileges
  • Check for conflicting sysctl configurations in /etc/sysctl.conf or /etc/sysctl.d/

Runtime Issues

General Recommendations

Ensure the same config.toml is used for both configure and run commands.

Validator Fails to Start

Checklist:
1

Verify configuration

fdctl configure check all --config ~/config.toml
All stages should pass. If not, run init:
sudo fdctl configure init all --config ~/config.toml
2

Check permissions

  • Verify you’re running as root: whoami
  • Verify the user in config.toml exists: id <username>
  • Ensure the user has access to keypair files
3

Verify keypairs exist

ls -l /path/to/validator-keypair.json
ls -l /path/to/vote-keypair.json
4

Check ledger directory

Ensure the ledger directory is accessible and has sufficient space:
df -h /path/to/ledger

XDP/AF_XDP Errors

Error: Cannot attach XDP program Solutions:
  • Verify kernel version (minimum 4.18 required):
    uname -r
    
  • Check if another XDP program is attached:
    ip link show <interface>
    
    Look for “xdp” in the output.
  • Verify network driver supports XDP:
    ethtool -i <interface>
    
    Well-tested drivers: ixgbe, i40e, ice

Network Connectivity Issues

Symptom: Validator cannot connect to cluster Solutions:
  • Verify gossip entrypoints are correct for your cluster
  • Check firewall rules allow required ports
  • Ensure network interface is up:
    ip link show <interface>
    
  • Test basic connectivity:
    ping -c 3 entrypoint.testnet.solana.com
    

Tile Crashes or Hangs

Symptom: One or more tiles stop responding Solutions:
  • Check if hyperthreaded pairs are conflicting (see initialization guide)
  • Verify CPU affinity settings don’t overlap
  • Monitor system resources:
    htop
    
  • Check for out-of-memory conditions:
    dmesg | grep -i "out of memory"
    

RPC Not Responding

Symptom: Cannot connect to RPC endpoint Solutions:
  • Verify RPC is enabled in config:
    [rpc]
        port = 8899
        full_api = true
    
  • Check if port is listening:
    netstat -tlnp | grep 8899
    
  • Verify firewall allows connections to RPC port
  • Test RPC endpoint:
    curl -X POST -H "Content-Type: application/json" -d '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getHealth"
    }' http://localhost:8899
    

Performance Issues

High CPU Usage on Non-Tile Processes

Symptom: ksoftirqd or other kernel processes consuming CPU Solutions:
  • Verify IRQ affinity configuration
  • Check if network interrupts are properly configured
  • Ensure tiles are pinned to correct CPU cores

Poor Network Performance

Solutions:
  • Verify ethtool configuration is correct:
    ethtool -k <interface> | grep xdp
    
  • Check network device statistics:
    ethtool -S <interface>
    
  • Ensure sufficient network queues for net tiles
  • Consider using dedicated mode for ethtool-channels

Slow Block Processing

Solutions:
  • Increase tile counts in configuration if CPU cores are available
  • Monitor tile backpressure with fdctl monitor
  • Verify disk I/O is not bottlenecked:
    iostat -x 1
    

Getting Help

If these troubleshooting steps don’t resolve your issue:
  1. Gather diagnostic information:
    • Firedancer version: git describe --tags
    • Kernel version: uname -r
    • GCC version: gcc --version
    • Network driver: ethtool -i <interface>
    • Error messages and logs
  2. Check existing issues:
  3. Ask for help:
    • Solana Tech Discord: #firedancer-operators channel
    • File a GitHub issue with diagnostic information
When reporting issues, include your configuration file (with sensitive data like keypairs removed) and relevant error messages.

Build docs developers (and LLMs) love