Nodejs forked child process exits immediately from status code 8
I start the child process and for some odd reason every time the child exits with a status code of 8 . I've done a bunch of googling trying to figure out what status code 8 is and what might be causing this strange behavior in Ubuntu, but no luck. I found out that Node.js doesn't even use exit status code 8, so I'm pretty sure it's not V8. I tried running the same code on a different but identical Ubuntu server and it worked fine. Just to note that I am using load balancing on this server. I'm not sure what might be causing this problem.
Here are the specs:
- Node: v0.10.25
- Distributor ID: Ubuntu
- Description: Ubuntu 14.04
- LTS Release: 14.04
This is a forked child process (as I said, its minimum level)
process.on ('message', function (data) { console.log ('TEST BOT SAYS HELLO' + process.pid) var fs = require ('fs') fs.writeFile ('message.txt', 'abc', function (err, data) { if (err) { return console.log (err); } console.log (data); }); });
Edit: There is no other error in the stack trace. Any hints to figure this out will help!
This is how the child process starts:
function testChildProcess () { console.log ('testing child process') var testBot = childProcess.fork (require.resolve ("./../../ bots / testBot")); testBot.send ({ data: 'hello' }); testBot.on ('exit', function (code, other) { console.log ('Child process exited with exit code' + code + 'other'); }); testBot.on ('error', function (code) { console.log ('Child process ERRED with exit code' + code); return nextTracker (); }); } testChildProcess ()
Addendum: The app is launched using https://github.com/yyx990803/pod which uses pm2 in the background
https://github.com/Unitech/pm2 to run your app as a daemon.
I've tested the spawning child process and the spawning child process works fine ...
child.js
var test = function () { console.log ('TEST BOT SAYS HELLO' + process.pid) var fs = require ('fs') fs.writeFile ('./ message.txt', 'abc', function (err, data) { if (err) { return console.log (err); } console.log (data); }); } test ();
parent.js
function testChildProcess () { console.log (process.cwd ()); var ls = childProcess.exec ('node' + process.cwd () + '/ bots / testBot', function (error, stdout, stderr) { if (error) { console.log (error.stack); console.log ('Error code:' + error.code); console.log ('Signal received:' + error.signal); } console.log ('stdout:' + stdout); console.log ('stderr:' + stderr); }); ls.on ('exit', function (code) { console.log ('Child process exited with exit code' + code); }); }
SOLUTION: If someone else gets this problem. I managed to get by by establishing silence.
var testBot = childProcess.fork (require.resolve ("./../../ bots / testBot"), [], {silent: true});
source to share