Skip to content

monerod crashes with segmentation fault when MemoryDenyWriteExecute=yes is enabled in systemd unit (ARM/Raspberry Pi) #10180

@jtrinh27

Description

@jtrinh27

Version: Monero 'Fluorine Fermi' (v0.18.4.3-release)

When running monerod on Raspberry Pi 5 (ARM64) with a hardened systemd unit, enabling MemoryDenyWriteExecute=yes causes the daemon to crash immediately after startup. Disabling this directive allows monerod to run normally.

journalctl log excerpt:

systemd[1]: Started Monero Daemon.
monerod[1234]: 2025-10-27 12:34:57.123        I SYNCHRONIZATION started
systemd[1]: monerod.service: Main process exited, code=killed, status=11/SEGV
systemd[1]: monerod.service: Failed with result 'signal'.
systemd[1]: monerod.service: Scheduled restart job, restart counter is at 3.
systemd[1]: Started Monero Daemon.

Minimal monerod.service file to reproduce:

[Unit]
Description=Monero Daemon
After=network-online.target

[Service]
User=monerod
Group=monerod
ExecStart=/usr/local/bin/monerod --non-interactive --config-file=/etc/monerod.conf
Restart=on-failure
RestartSec=5s
WorkingDirectory=/srv/monero-data
MemoryDenyWriteExecute=yes

[Install]
WantedBy=multi-user.target

I'm not sure why MemoryDenyWriteExecute=yes causes monerod to crash, but I'd appreciate clarification. Is this related to JIT, cryptographic operations, or another technical requirement? I understand this directive is intended for security hardening, but would like to know why Monero needs executable memory mappings.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions