IPFS Vs. RPi3B+

The Raspberry Pi 3B+ I use for my home server seems to really dislike IPFS. Or, rather, there’s something between Debian, ARM64 architecture, IPFS, and process killing that terrifies my Pi to the point where it needs to forget about everything and reboot immediately.

It only happens when I have the IPFS daemon running, and it always happens when I have IPFS daemon running: 3 to 7 days in my Pi would reboot all of a sudden. For no apparent reason, either. I mean, I even enabled persistent logs to see what was going on just before reboot. Nothing unusual, some cron job would kick in (like email backup or something), and bang! — a reboot.

I suspected the MicroSD card, naturally. The rule of thumb for debugging any Pi problems: never trust the MicroSD card. I moved the IPFS working directory off to a USB drive. I changed the card itself. Twice. It didn’t help: start the IPFS daemon, wait for several days — a reboot.

I started suspecting there was something wrong with the memory, or, rather, that somehow the Pi would get overwhelmed in some way or the other and reboot itself when it starts swapping significantly. After all, IPFS does leak memory, that’s not a secret, is it? So I restricted the amount of memory available to the IPFS daemon by means of systemd. The effect was prominent, but not exactly what I hoped for: the Pi would now last at most 30 hours before the imminent reboot.

There’s definitely something wrong with the way OOM killer behaves; it’s supposed to kill the process, not reboot the whole system, isn’t it? I should definitely file a bug somewhere. Trouble is, I don’t really have a good idea where to start debugging and what part of the software to debug.

And those reboots get really annoying when you’re in the process of RAID reshaping, or even simply in the middle of a rsnapshot job. I resorted to not running an IPFS daemon for now, but I can not live this way forever, can I?

The question is: can I resist buying myself a Pi 4 for long enough to find time to dig in and debug this?