Node-Red crash after GRPC node call

I am using brik2k’s Node-red flow for retrieving GPS coordinates from Starlink (GitHub - brik2k/VictronStarlinkGPS). It works perfectly on 3.55 on CerboGX, but after upgrading to 3.60, NodeRed repeatedly restarts. I’ve traced it down to the restarts occurs after the GRPC node is injected (i.e. initiating the GRPC call) and before a message is sent out by the node. I don’t know much about GPRC proto syntax, so I’ve not modified it, but the flow works perfectly again after reverting to 3.55.

Did you use dbus-mqtt-devices V0.9.0 or above with Venus OS v3.60?

“ If you have upgraded to Venus OS 3.60, please upgrade to dbus-mqtt-devices V0.9.0 or above asap!”

1 Like

Yes, I used 0.9.0.

Ok. Not a Venus OS issue. Work for the developers to fix this.

Hi, is this an issue I should post somewhere else? I have enabled GRPC trace and get the following in the node red log file:
This indicates that the crash is happing during the GRPC communication with a bus error. Any advice on how to further debug would be appreciated.

27 Jun 19:03:27 - [info] Starting flows

27 Jun 19:03:29 - [info] BooleanLogicUltimate: Will create 7 dummy (false) values

27 Jun 19:03:30 - [info] BooleanLogicUltimate: Will create 4 dummy (false) values

27 Jun 19:03:30 - [info] Started flows

Connected to D-Bus.

Polling is disabled. This is the recommended configuration.

Polling is disabled. All roots have been requested once successfully.

27 Jun 19:03:32 - [info] [mqtt-broker:Cerbo MQTT] Connected to broker: mqtt://localhost:1883

27 Jun 19:04:33 - [info] Stopping flows

27 Jun 19:04:33 - [warn] [function:Check Status] stop detected, disconnecting device

27 Jun 19:04:33 - [info] [mqtt-broker:Cerbo MQTT] Disconnected from broker: mqtt://localhost:1883

27 Jun 19:04:33 - [info] Stopped flows

27 Jun 19:04:33 - [info] Updated flows

27 Jun 19:04:33 - [info] Starting flows

27 Jun 19:04:34 - [info] BooleanLogicUltimate: Will create 7 dummy (false) values

27 Jun 19:04:34 - [info] BooleanLogicUltimate: Will create 4 dummy (false) values

27 Jun 19:04:34 - [info] Started flows

27 Jun 19:04:34 - [info] [mqtt-broker:Cerbo MQTT] Connected to broker: mqtt://localhost:1883

D 2025-06-27T19:04:39.007Z | v1.13.4 21420 | resolving_load_balancer | dns:dishy.starlink.com:9200 IDLE → IDLE

D 2025-06-27T19:04:39.012Z | v1.13.4 21420 | connectivity_state | (1) dns:dishy.starlink.com:9200 IDLE → IDLE

D 2025-06-27T19:04:39.019Z | v1.13.4 21420 | dns_resolver | Resolver constructed for target dns:dishy.starlink.com:9200

D 2025-06-27T19:04:39.025Z | v1.13.4 21420 | backoff | {0} constructed initialDelay=1000 multiplier=1.6 jitter=0.2 maxDelay=120000

D 2025-06-27T19:04:39.028Z | v1.13.4 21420 | backoff | {1} constructed initialDelay=1000 multiplier=1.6 jitter=0.2 maxDelay=120000

D 2025-06-27T19:04:39.032Z | v1.13.4 21420 | channel | (1) dns:dishy.starlink.com:9200 Channel constructed with options {}

D 2025-06-27T19:04:39.036Z | v1.13.4 21420 | channel_stacktrace | (1) Channel constructed

at new InternalChannel (/data/home/nodered/.node-red/node_modules/@grpc/grpc-js/build/src/internal-channel.js:297:23)

at new ChannelImplementation (/data/home/nodered/.node-red/node_modules/@grpc/grpc-js/build/src/channel.js:35:32)

at new Client (/data/home/nodered/.node-red/node_modules/@grpc/grpc-js/build/src/client.js:66:36)

at new ServiceClientImpl (/data/home/nodered/.node-red/node_modules/@grpc/grpc-js/build/src/make-client.js:59:5)

at gRpcCallNode._inputCallback (/data/home/nodered/.node-red/node_modules/node-red-contrib-grpc/grpc/grpc-call.js:58:39)

at /usr/lib/node_modules/node-red/node_modules/@node-red/runtime/lib/nodes/Node.js:214:26

at Object.trigger (/usr/lib/node_modules/node-red/node_modules/@node-red/util/lib/hooks.js:166:13)

at Node._emitInput (/usr/lib/node_modules/node-red/node_modules/@node-red/runtime/lib/nodes/Node.js:206:11)

at Node.emit (/usr/lib/node_modules/node-red/node_modules/@node-red/runtime/lib/nodes/Node.js:190:25)

at Node.receive (/usr/lib/node_modules/node-red/node_modules/@node-red/runtime/lib/nodes/Node.js:499:10)

D 2025-06-27T19:04:39.060Z | v1.13.4 21420 | channel | (1) dns:dishy.starlink.com:9200 createResolvingCall [0] method=“/SpaceX.API.Device.Device/Handle”, deadline=Infinity

D 2025-06-27T19:04:39.067Z | v1.13.4 21420 | resolving_call | [0] Created

D 2025-06-27T19:04:39.070Z | v1.13.4 21420 | resolving_call | [0] Deadline: Infinity

D 2025-06-27T19:04:39.078Z | v1.13.4 21420 | resolving_call | [0] start called

D 2025-06-27T19:04:39.084Z | v1.13.4 21420 | backoff | {0} runOnce()

D 2025-06-27T19:04:39.087Z | v1.13.4 21420 | backoff | {0} runTimer(delay=1000)

D 2025-06-27T19:04:39.093Z | v1.13.4 21420 | dns_resolver | Looking up DNS hostname dishy.starlink.com

D 2025-06-27T19:04:39.104Z | v1.13.4 21420 | resolving_load_balancer | dns:dishy.starlink.com:9200 IDLE → CONNECTING

D 2025-06-27T19:04:39.105Z | v1.13.4 21420 | connectivity_state | (1) dns:dishy.starlink.com:9200 IDLE → CONNECTING

D 2025-06-27T19:04:39.107Z | v1.13.4 21420 | backoff | {1} runOnce()

D 2025-06-27T19:04:39.108Z | v1.13.4 21420 | backoff | {1} runTimer(delay=1000)

D 2025-06-27T19:04:39.114Z | v1.13.4 21420 | resolving_call | [0] startRead called

D 2025-06-27T19:04:39.144Z | v1.13.4 21420 | resolving_call | [0] write() called with message of length 3

D 2025-06-27T19:04:39.146Z | v1.13.4 21420 | resolving_call | [0] halfClose called

D 2025-06-27T19:04:39.185Z | v1.13.4 21420 | backoff | {0} reset() running=true

D 2025-06-27T19:04:39.186Z | v1.13.4 21420 | backoff | {0} runTimer(delay=1899)

D 2025-06-27T19:04:39.188Z | v1.13.4 21420 | backoff | {0} stop()

D 2025-06-27T19:04:39.191Z | v1.13.4 21420 | dns_resolver | Resolved addresses for target dns:dishy.starlink.com:9200: [192.168.100.1:9200]

D 2025-06-27T19:04:39.194Z | v1.13.4 21420 | backoff | {1} stop()

D 2025-06-27T19:04:39.195Z | v1.13.4 21420 | backoff | {1} reset() running=false

D 2025-06-27T19:04:39.205Z | v1.13.4 21420 | pick_first | updateAddressList([192.168.100.1:9200])

D 2025-06-27T19:04:39.210Z | v1.13.4 21420 | pick_first | connectToAddressList([192.168.100.1:9200])

D 2025-06-27T19:04:39.220Z | v1.13.4 21420 | backoff | {2} constructed initialDelay=1000 multiplier=1.6 jitter=0.2 maxDelay=120000

D 2025-06-27T19:04:39.228Z | v1.13.4 21420 | subchannel | (1) 192.168.100.1:9200 Subchannel constructed with options {}

D 2025-06-27T19:04:39.234Z | v1.13.4 21420 | subchannel_refcount | (1) 192.168.100.1:9200 refcount 0 → 1

D 2025-06-27T19:04:39.242Z | v1.13.4 21420 | subchannel_refcount | (1) 192.168.100.1:9200 refcount 1 → 2

D 2025-06-27T19:04:39.258Z | v1.13.4 21420 | pick_first | Start connecting to subchannel with address 192.168.100.1:9200

D 2025-06-27T19:04:39.262Z | v1.13.4 21420 | pick_first | IDLE → CONNECTING

D 2025-06-27T19:04:39.266Z | v1.13.4 21420 | resolving_load_balancer | dns:dishy.starlink.com:9200 CONNECTING → CONNECTING

D 2025-06-27T19:04:39.267Z | v1.13.4 21420 | connectivity_state | (1) dns:dishy.starlink.com:9200 CONNECTING → CONNECTING

D 2025-06-27T19:04:39.274Z | v1.13.4 21420 | channel | (1) dns:dishy.starlink.com:9200 callRefTimer.unref | configSelectionQueue.length=0 pickQueue.length=0

D 2025-06-27T19:04:39.287Z | v1.13.4 21420 | subchannel | (1) 192.168.100.1:9200 IDLE → CONNECTING

D 2025-06-27T19:04:39.288Z | v1.13.4 21420 | backoff | {2} runOnce()

D 2025-06-27T19:04:39.289Z | v1.13.4 21420 | backoff | {2} runTimer(delay=1000)

D 2025-06-27T19:04:39.294Z | v1.13.4 21420 | transport | dns:dishy.starlink.com:9200 192.168.100.1:9200 Waiting for secureConnector to be ready

D 2025-06-27T19:04:39.302Z | v1.13.4 21420 | transport | dns:dishy.starlink.com:9200 192.168.100.1:9200 secureConnector is ready

D 2025-06-27T19:04:39.307Z | v1.13.4 21420 | channel | (1) dns:dishy.starlink.com:9200 createRetryingCall [1] method=“/SpaceX.API.Device.Device/Handle”

D 2025-06-27T19:04:39.310Z | v1.13.4 21420 | resolving_call | [0] Created child [1]

D 2025-06-27T19:04:39.313Z | v1.13.4 21420 | retrying_call | [1] start called

D 2025-06-27T19:04:39.316Z | v1.13.4 21420 | channel | (1) dns:dishy.starlink.com:9200 createLoadBalancingCall [2] method=“/SpaceX.API.Device.Device/Handle”

D 2025-06-27T19:04:39.319Z | v1.13.4 21420 | retrying_call | [1] Created child call [2] for attempt 1

D 2025-06-27T19:04:39.322Z | v1.13.4 21420 | load_balancing_call | [2] start called

D 2025-06-27T19:04:39.326Z | v1.13.4 21420 | load_balancing_call | [2] Pick called

D 2025-06-27T19:04:39.329Z | v1.13.4 21420 | load_balancing_call | [2] Pick result: QUEUE subchannel: null status: undefined undefined

D 2025-06-27T19:04:39.330Z | v1.13.4 21420 | channel | (1) dns:dishy.starlink.com:9200 callRefTimer.ref | configSelectionQueue.length=0 pickQueue.length=1

D 2025-06-27T19:04:39.335Z | v1.13.4 21420 | retrying_call | [1] startRead called

D 2025-06-27T19:04:39.337Z | v1.13.4 21420 | load_balancing_call | [2] startRead called

D 2025-06-27T19:04:39.347Z | v1.13.4 21420 | retrying_call | [1] write() called with message of length 8

D 2025-06-27T19:04:39.350Z | v1.13.4 21420 | load_balancing_call | [2] write() called with message of length 8

D 2025-06-27T19:04:39.352Z | v1.13.4 21420 | retrying_call | [1] halfClose called

D 2025-06-27T19:04:39.363Z | v1.13.4 21420 | transport | dns:dishy.starlink.com:9200 192.168.100.1:9200 Established TCP connection

D 2025-06-27T19:04:39.365Z | v1.13.4 21420 | transport | dns:dishy.starlink.com:9200 192.168.100.1:9200 Established secure connection

Bus error