Zombie Meteor process eating a whole core (>100% CPU)

Hi community. This started happening (again) after upgrading Meteor from 2.2 to 2.7.3 on an Ubuntu laptop.

Steps to reproduce are as simple as running meteor in the project, and then killing it.
While running everything is ok. I see several .meteor processes eating some CPU. ok. [0]

After killing it in the console where I was running (by hiitting ctrl+C) one process gets zombied and berserked, raising its CPU usage to +100% and remaining that way until manually killing it. [1]

As I suggested before, its worth mentioning this happened to me in a previuos version of meteor (don’t remember exactly which, but suppose < 2.0) and then got magically solved with 2.2. So, it may have to do with my particular project or environment and not with meteor per-se.

Has anyone experienced any similar issue? How should I go about debugging this out?

Any help will be most appreciated.

Best regards

[0]

[1]

can you give him some help here @grubba? Thx

1 Like

If those are supposed to be 2 different screen shots, I think they look the same to me.

Sorry about that. Updated.

Any help will be most appreciated. The problem persists quite annoyingly. Best regards!

Looks like this is because you are running meteor in development mode. I’ve not experienced similar on my distributions you may want to try doing a full OS update of all packages and also the kernal modules to ensure you are running the latest and greatest.

To begin debugging you first need to determine what started the process and then you will be able to delve deeper into it. It is not normal behaviour.

Hey! I’ve tried doing it in my environment (macOS) it did not happen :confused:
Does it happen in newly created projects? I tried Svelte and React with TypeScript projects

Can you provide the full console commands to reproduce (meteor create, meteor add etc.). Do you add certain meteor packages or npm packages, too?

Hi folks. Thanks for your interest and questions. Here go some answers

@grubba @jkuester
This is not happening in newly created projects.
Unfortunately, I’m not able to provide specific steps to recreate from scratch. It may have to do with my particular setup somehow. I’ll leave my meteor packages & versions & package.json in a reply to this message in case it reveals any information that I’m unable to see. But any idea on how to debug this behavior may be key to unravel the problem.

@truedon I’ve updated all possible meteor packages, the meteor tool itself, and a full OS update. Not sure I’ve done anything to the kernel if it’s not handled by the OS upgrade itself. I understand this is not normal behavior. I’ll try to downgrade to meteor 2.2 and see if the problem goes away (as I stated in my first message, this happened to me before and was solved by upgraded to meteor 2.2). Thanks for the insights!

Meteor packages

meteor-base@1.5.1             # Packages every Meteor app needs to have
mobile-experience@1.1.0       # Packages for a great mobile UX
mongo@1.15.0                   # The database Meteor supports right now
reactive-var@1.0.11            # Reactive variable for tracker
tracker@1.2.0                 # Meteor's client-side reactive programming library

standard-minifier-css@1.8.1   # CSS minifier run for production mode
standard-minifier-js@2.8.0    # JS minifier run for production mode
es5-shim@4.8.0                # ECMAScript 5 compatibility for older browsers
ecmascript@0.16.2              # Enable ECMAScript2015+ syntax in app code
shell-server@0.5.0            # Server-side component of the `meteor shell` command

accounts-password@2.3.1
aldeed:simple-schema
tmeasday:publish-counts
email@2.2.1
reywood:publish-composite
underscore@1.0.10
alanning:roles
session@1.2.0
static-html@1.3.2
react-meteor-data@2.3.1

Meteor versions

accounts-base@2.2.4
accounts-password@2.3.1
alanning:roles@3.4.0
aldeed:simple-schema@1.5.4
allow-deny@1.1.1
autoupdate@1.8.0
babel-compiler@7.9.2
babel-runtime@1.5.1
base64@1.0.12
binary-heap@1.0.11
blaze-tools@1.1.3
boilerplate-generator@1.7.1
caching-compiler@1.2.2
caching-html-compiler@1.2.1
callback-hook@1.4.0
check@1.3.1
ddp@1.4.0
ddp-client@2.5.0
ddp-common@1.4.0
ddp-rate-limiter@1.1.0
ddp-server@2.5.0
diff-sequence@1.1.1
dynamic-import@0.7.2
ecmascript@0.16.2
ecmascript-runtime@0.8.0
ecmascript-runtime-client@0.12.1
ecmascript-runtime-server@0.11.0
ejson@1.1.2
email@2.2.1
es5-shim@4.8.0
fetch@0.1.1
geojson-utils@1.0.10
hot-code-push@1.0.4
html-tools@1.1.3
htmljs@1.1.1
id-map@1.1.1
inter-process-messaging@0.1.1
launch-screen@1.3.0
localstorage@1.2.0
logging@1.3.1
mdg:validation-error@0.5.1
meteor@1.10.0
meteor-base@1.5.1
minifier-css@1.6.0
minifier-js@2.7.4
minimongo@1.8.0
mobile-experience@1.1.0
mobile-status-bar@1.1.0
modern-browsers@0.1.8
modules@0.18.0
modules-runtime@0.13.0
mongo@1.15.0
mongo-decimal@0.1.3
mongo-dev-server@1.1.0
mongo-id@1.0.8
npm-mongo@4.3.1
ordered-dict@1.1.0
promise@0.12.0
random@1.2.0
rate-limit@1.0.9
react-fast-refresh@0.2.3
react-meteor-data@2.3.1
reactive-dict@1.3.0
reactive-var@1.0.11
reload@1.3.1
retry@1.1.0
reywood:publish-composite@1.7.3
routepolicy@1.1.1
service-configuration@1.3.0
session@1.2.0
sha@1.0.9
shell-server@0.5.0
socket-stream-client@0.5.0
spacebars-compiler@1.3.1
standard-minifier-css@1.8.1
standard-minifier-js@2.8.0
static-html@1.3.2
templating-tools@1.2.2
tmeasday:publish-counts@0.8.0
tracker@1.2.0
typescript@4.5.4
underscore@1.0.10
url@1.3.2
webapp@1.13.1
webapp-hashing@1.1.0

package.json

{
  "name": "masefercrm",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "init": "nodejs index.js",
    "start": "meteor run",
    "build-app": "meteor build --directory ./build --architecture os.linux.x86_64",
    "docker-build": "docker build -t masefer-clone .",
    "docker-run": "docker run -e PORT='3000' -p 3000:3000 eni_app",
    "test:unit": "TEST_BROWSER_DRIVER=chrome meteor test --driver-package meteortesting:mocha",
    "cypress": "cypress open",
    "cypress-run": "cypress run"
  },
  "eslintConfig": {
    "extends": "@meteorjs/eslint-config-meteor",
    "rules": {
      "react/prefer-stateless-function": false
    }
  },
  "dependencies": {
    "@babel/core": "^7.18.6",
    "@babel/helpers": "^7.18.6",
    "@babel/runtime": "^7.18.6",
    "@devexpress/dx-react-core": "^2.7.6",
    "@devexpress/dx-react-grid": "^2.7.6",
    "@devexpress/dx-react-grid-material-ui": "^2.7.6",
    "@fullcalendar/bootstrap": "^5.11.0",
    "@fullcalendar/core": "^5.11.0",
    "@fullcalendar/daygrid": "^5.11.0",
    "@fullcalendar/interaction": "^5.11.0",
    "@fullcalendar/react": "^5.11.1",
    "@fullcalendar/resource-timeline": "^5.11.0",
    "@fullcalendar/timegrid": "^5.11.0",
    "@material-ui/core": "^4.12.4",
    "@material-ui/icons": "^4.11.3",
    "@material-ui/lab": "^4.0.0-alpha.61",
    "@material-ui/styles": "^4.11.5",
    "@remotelock/react-week-scheduler": "^3.5.8",
    "@zxing/library": "^0.17.1",
    "acorn": "^6.4.2",
    "basic-auth-connect": "^1.0.0",
    "bcrypt": "^5.0.1",
    "body-parser": "^1.20.0",
    "chart.js": "^2.9.4",
    "combined-stream2": "^1.1.2",
    "compression": "^1.7.4",
    "connect": "^3.7.0",
    "cookie-parser": "^1.4.6",
    "core-js": "^2.6.12",
    "cross-blob": "^2.0.0",
    "csv-parse": "^4.16.3",
    "csvtojson": "^2.0.10",
    "currency.js": "^2.0.4",
    "date-fns": "^2.28.0",
    "date-fns-tz": "^1.3.6",
    "decimal.js": "^10.3.1",
    "dropbox": "^4.0.30",
    "emoji-picker-react": "^3.5.1",
    "emoji-regex": "^10.1.0",
    "fibers": "^5.0.1",
    "form-data": "^4.0.0",
    "forwarded-http": "^0.3.0",
    "google-maps": "^4.3.3",
    "heap-js": "^2.2.0",
    "howler": "^2.2.3",
    "indexof": "0.0.1",
    "isomorphic-fetch": "^3.0.0",
    "json-bigint": "^1.0.0",
    "material-table": "^1.69.3",
    "material-ui-nested-menu-item": "^1.0.2",
    "material-ui-phone-number": "^2.2.6",
    "mdi-material-ui": "^6.26.0",
    "meteor-node-stubs": "^1.2.3",
    "moment": "^2.29.4",
    "moment-timezone": "^0.5.34",
    "node-fetch": "^2.6.7",
    "npm-formatter": "^0.1.0",
    "onesignal-node": "^3.4.0",
    "oracledb": "github:oracle/node-oracledb#v4.2.0",
    "parseurl": "^1.3.3",
    "prop-types": "^15.8.1",
    "quill-image-resize-module-react": "^3.0.0",
    "randomstring": "^1.2.2",
    "re2": "^1.17.7",
    "react": "^16.14.0",
    "react-barcode": "^1.4.1",
    "react-beautiful-dnd": "^11.0.5",
    "react-circular-progressbar": "^2.1.0",
    "react-color": "^2.19.3",
    "react-datepicker": "^2.16.0",
    "react-dom": "^16.14.0",
    "react-image-gallery": "^1.2.8",
    "react-material-ui-carousel": "^2.3.11",
    "react-number-format": "^4.9.3",
    "react-phone-input": "^1.2.1",
    "react-process-string": "^1.2.0",
    "react-quill": "^1.3.5",
    "react-router-dom": "^5.3.3",
    "react-social-login-buttons": "^3.6.0",
    "react-table": "^6.11.5",
    "reify": "^0.20.12",
    "request": "^2.88.2",
    "resize-observer-polyfill": "^1.5.1",
    "send": "^0.17.2",
    "sql-formatter": "^4.0.2",
    "typeface-roboto": "0.0.54",
    "url-regex-safe": "^3.0.0",
    "useragent": "^2.3.0",
    "vcard-parser": "^1.0.0",
    "winston": "^3.8.1",
    "winston-slack-hook": "^0.3.0"
  },
  "devDependencies": {
    "@meteorjs/eslint-config-meteor": "^1.0.5",
    "babel-eslint": "^8.2.6",
    "eslint": "^8.19.0",
    "eslint-config-airbnb": "^19.0.4",
    "eslint-import-resolver-meteor": "^0.4.0",
    "eslint-plugin-import": "^2.26.0",
    "eslint-plugin-jsx-a11y": "^6.6.0",
    "eslint-plugin-meteor": "^7.3.0",
    "eslint-plugin-react": "^7.30.1",
    "eslint-plugin-react-hooks": "^4.6.0",
    "prettier": "2.7.1"
  }
}

You might try using strace linux command to see what this “zombie” process is doing… that might give you some clues on how to solve this.

1 Like

I tried to reproduce but already got a ton of deprecated message on all the npm packages. Are you sure this is not from some old npm package?