Read the statement by Michael Teeuw here.
stopping MM via pm2 does not close electron - at restart I get EADDRINUSE
-
Hey there,
always after restarting I get an error
EADDRINUSE
. To investigate I looked at `netstat -lptn’ to see which program uses what port.
At startup I see only one line coresponding to MM which is this:tcp 1 0 0.0.0.0:8088 0.0.0.0:* LISTEN 1019/electron.js
But when I use `pm2 stop mm’ I still see this line. I also tried to change the port for each restart with the result of having multiple instances of electron listening on the coresponding ports.
When starting it manually without pm2 in the console it opens and closes correctly after quitting.
Has anyone a guess how to solve this? -
some additional information: when running fine, pm2 seems to be the parent process:
612 ? Ssl 0:34 PM2 v3.1.3: God Daemon (/home/pi/.pm2) 797 ? Ss 0:00 \_ bash /home/pi/MagicMirror/installers/mm.sh 799 ? Sl 0:04 \_ npm 946 ? S 0:00 \_ sh -c sh run-start.sh 947 ? S 0:00 \_ sh run-start.sh 949 ? Sl 0:01 \_ node /home/pi/MagicMirror/node_modules/.bin/electron js/electron.js 958 ? Sl 8:43 \_ /home/pi/MagicMirror/node_modules/electron/dist/electron js/electron.js 960 ? S 0:00 \_ /home/pi/MagicMirror/node_modules/electron/dist/electron --type=zygote --no-sandbox 1088 ? Sl 4:50 | \_ /home/pi/MagicMirror/node_modules/electron/dist/electron --type=renderer --no-sandbox --service-pipe-token=756DBD94487A30A46611ABEDF5588C31 -- 1087 ? Sl 0:05 \_ /home/pi/MagicMirror/node_modules/electron/dist/electron --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=9
but as soon as I stop MM in pm2 I see 2 different parent processes:
612 ? Ssl 0:34 PM2 v3.1.3: God Daemon (/home/pi/.pm2) 958 ? Sl 8:45 /home/pi/MagicMirror/node_modules/electron/dist/electron js/electron.js 960 ? S 0:00 \_ /home/pi/MagicMirror/node_modules/electron/dist/electron --type=zygote --no-sandbox 1088 ? Sl 4:51 | \_ /home/pi/MagicMirror/node_modules/electron/dist/electron --type=renderer --no-sandbox --service-pipe-token=756DBD94487A30A46611ABEDF5588C31 --lang=de --app-path=/home 1087 ? Sl 0:05 \_ /home/pi/MagicMirror/node_modules/electron/dist/electron --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=9,27,84 --disable-gl-exte
so pm2 is still running, but left the electron browser also running now without a parent.
-
It sounds like something on your Pi is attempting to start the Magic Mirror process twice. If you used a cron job to start MM as well as PM2, then this can happen. Likewise, if your script that PM2 calls to start the process has the command twice, this can happen.
EADDRINUSE usually means that two processes are trying to serve up web pages on the same port. If that happens on reboot, then most likely two commands are trying to start MM.
My recommendation is to remove PM2’s attempts to start MM, reboot and see if the mirror process starts. If so, find out how it’s being called and remove that, then reset pm2 to do it. If MM doesn’t start after the reboot, run your
netstat -lptn
again and find out what’s listening on that port.