Closed BjoernRave closed 1 year ago
We are going to need more information about your setup, code, etc. in order to help.
Operating System: Debian GNU/Linux 11 (bullseye)
Kernel: Linux 5.15.32-v8+
Architecture: arm64
I am running this file:
index.ts
import Graceful from '@ladjs/graceful'
import Bree from 'bree'
import * as path from 'node:path'
const SegfaultHandler = require('segfault-handler')
SegfaultHandler.registerHandler('crash.log')
Bree.extend(require('@breejs/ts-worker'))
const standardInterval = 'every 40 seconds'
const bree = new Bree({
/**
* Always set the root option when doing any type of
* compiling with bree. This just makes it clearer where
* bree should resolve the jobs folder from. By default it
* resolves to the jobs folder relative to where the program
* is executed.
*/
root: path.join(__dirname, 'jobs'),
/**
* We only need the default extension to be "ts"
* when we are running the app with ts-node - otherwise
* the compiled-to-js code still needs to use JS
*/
defaultExtension: 'ts',
jobs: [
// {
// name: 'temperature',
// interval: standardInterval,
// },
// {
// name: 'pi-stats',
// interval: standardInterval,
// },
{
name: 'fans',
interval: standardInterval,
},
],
})
const graceful = new Graceful({ brees: [bree] })
graceful.listen()
;(async () => {
await bree.start()
console.log('Bree started')
})()
and this job:
jobs/fans.ts
import GPIOFlat from 'rpi-gpio'
import { sleep } from '../../utils'
const GPIO = GPIOFlat.promise
const relais1 = 7
;(async () => {
try {
await GPIO.setup(relais1, GPIO.DIR_OUT)
await GPIO.write(relais1, true)
await sleep(5)
await GPIO.write(relais1, false)
await GPIO.destroy()
} catch (error) {
console.log('error', error)
}
})()
with ts-node index.ts
Edit: I just commented out everything rpi-gpio
related and the error disappears, so it's somewhat related to that. If I run the jobs/fans.ts
file on its own it works fine though
the segmentation fault would make me think that it is running out of memory. I don't know if the rpi-gpio bundle is too large for the system or if there is something else causing the memory to run out.
I have seen the segmentation fault when compiling a typescript project in a docker container that has too little RAM before.
This is not a problem with Bree. It would be a problem with Node.js worker threads, CPU or memory limitations, or some other dependency. Please check https://github.com/nodejs/node for similar issues.
I am trying to run bree on my raspberry with the 64-bit version of raspberry-pi os.
However after one job finishes I get a "segementation fault" error.
With the help of
segfault-handler
I was able to get this error log: