Unable to push a new release of balenablocks/balena-node-red to Raspberry Pi 1

Hi,

I am attempting to deploy node-red with with some additional packages to a Raspberry Pi 1. When I try to push a release to my fleet the build process crashes. This only seems to happen on my Raspberry Pi devices.

Can anyone help me track down what is going on or where I can look for more information?

What I have done so far:

  1. Used the “Deploy with balena” button on the balenablocks/balena-node-red repo to create my first fleet, and deploy the node-red service to a Raspberry Pi 1.
    This worked fine. I was able to see the service running on my device and also access the node-red webUI.
  2. Wanting to add an extra node-red package, I cloned the balenablocks/balena-node-red repo locally on my laptop and installed balena CLI. I added a single npm package dependency to the build step and tried to push the updated release to my fleet. The update was sent to the devices but whenever I tried to access the node-red webUI the service container would crash with a segmentation fault error.
/usr/src/app/start.sh: line 18:    21 Segmentation fault      (core dumped) node-red --settings /usr/src/app/settings.js
  1. I was unable to find a reason for this, so I undid my change to the docker template and tried to push out a release that would be the same as the original repo. This also resulted in the same segmentation fault error when accessing the node-red webUI.
  2. I started again from scratch with a fresh local clone of the balena-node-red repo, and a new fleet and pushed that release to the fleet and found it would not work either (same seg fault error).
  3. Enabled “local” mode on the device and tried to push the untouched, original clone of the balena-node-red repo to the Raspberry Pi 1 device and repeatedly had these errors:
[Build]   [node-red] Step 5/16 : RUN JOBS=MAX npm install -g --production --unsafe-perm       node-red       node-red-contrib-balena     && JOBS=MAX npm install --unsafe-perm --production && npm cache clean --force
[Build]   [node-red]  ---> Running in 5f248c41e737
[Build]   [node-red] Here are a few details about this Docker image (For more information please visit https://www.balena.io/docs/reference/base-images/base-images/):
[Build]   Architecture: ARM v6
[Build]   OS: Debian Stretch
[Build]   Variant: build variant
[Build]   Default variable(s): UDEV=off
[Build]   The following software stack is preinstalled:
[Build]   Node.js v12.18.3, Yarn v1.22.4
[Build]   Extra features:
[Build]   - Easy way to install packages with `install_packages <package-name>` command
[Build]   - Run anywhere with cross-build feature  (for ARM only)
[Build]   - Keep the container idling with `balena-idle` command
[Build]   - Show base image details with `balena-info` command
[Build]   [node-red] Segmentation fault (core dumped)
[Build]
[Build]   [node-red] Removing intermediate container 5f248c41e737
Some services failed to build:
        node-red: The command '/bin/sh -c JOBS=MAX npm install -g --production --unsafe-perm       node-red       node-red-contrib-balena     && JOBS=MAX npm install --unsafe-perm --production && npm cache clean --force' returned a non-zero code: 139


Error: Some services failed to build:
        node-red: The command '/bin/sh -c JOBS=MAX npm install -g --production --unsafe-perm       node-red       node-red-contrib-balena     && JOBS=MAX npm install --unsafe-perm --production && npm cache clean --force' returned a non-zero code: 139

    at Object.handleError (C:\Program Files\balena-cli\client\build\errors.js:166:17)
    at Object.run (C:\Program Files\balena-cli\client\build\app.js:110:73)
    at async run (C:\Program Files\balena-cli\client\bin\run:20:2)
  1. Concerned that I had an issue with my hardware, I used the information from No hardware? Use VirtualBox to simulate a device for balenaCloud! to build a VM to emulate an Intel NUC. I was able to push the project from the balena-node-red repo to this device (both in its original form and with my additional npm package dependency).

  2. Concerned that I had an issue with my Raspberry Pi hardware, I grabbed another known good Raspberry Pi 1, a known good Samsung Evo SD card from my phone, and a high current power supply. I created a new fleet, put the new device into local development mode and pushed a clean clone of the balena-node-red repo. Same error.

So I have hit a point where I don’t know how to proceed. I am unsure how to get better diagnostics of why the build process is failing on the Raspberry Pi 1 and I don’t have other hardware to test on.

Can anyone assist?

Thanks in advance.

1 Like

Hi,

Any feedback on how I might be able to further troubleshoot this issue?

Hello @dandantheflyingman welcome to the balena community!

Could you please confirm the device type of your fleet on balenaCloud? Do you have another Raspberry Pi to test? I can try to give it a go with my Pi Zero this week.

Hi,

The device type on my fleet is set to the same as my device, Raspberry Pi 1.

As mentioned in the first post, i have repeated the deployment to a completely separate Raspberry Pi 1 device, SD card, with a separate power supply and had the same result.

Hi @dandantheflyingman ,

I took a quick look at the error which you are receiving, ExitCode 139:
It looks like it could be a Docker container exit code. This code indicates that there is a segmentation fault with the container. This happens when a program attempts to access a memory location that it is not allowed to access, or it attempts to access a memory location in a way that it is not allowed. This can be an issue with the application code or sometimes an issue with the base images used by the container (imo I think the latter might be the case). More info here: https://betterprogramming.pub/understanding-docker-container-exit-codes-5ee79a1d58f6

I found this github issue which might be pertinent to you: Does not work with Raspberry pi 1 · Issue #9 · ct-Open-Source/ct-Smart-Home · GitHub . It seems like nodered might be for amd64 and not for arm. Based off this issue, it seems like it may be incompatible with Raspberry Pi 1?

Kind regards,

Julia

Thanks for the information. If there is an error with the Docker container when running on Raspberry Pi 1, then how best should I raise this error to the Balena team as this is a BelanaBlocks Docker container?

It looks like for the information there is on the block, that the node-RED version is not compatible with Raspberry Pi 1 or Raspberry Pi Zero devices (armv6).

Do you have another Pi (2, 3 or 4) to try?

Good to see the Balena Hub page has been updated to state that now. That wasn’t the case in February.

If the Raspberry Pi 1 is no longer supported then its an idea to update the repository and remove the dockerfile template that relates to the Raspberry Pi 1:
balena-node-red/Dockerfile.raspberry-pi at master · balenablocks/balena-node-red (github.com)

and update the balena.yml to remove the Raspberry Pi 1 from the list of supported devices:
balena-node-red/balena.yml at master · balenablocks/balena-node-red (github.com)

I don’t have other hardware, so can consider this issue closed.

I will try to test myself with a pi zero @dandantheflyingman the only problem is that i think the latest version of node-RED does not support node 12. Let me see …