diff --git a/imports/startup/server/index.js b/imports/startup/server/index.js index 0d50cb8..cb0d461 100644 --- a/imports/startup/server/index.js +++ b/imports/startup/server/index.js @@ -15,3 +15,4 @@ import './prerender'; import './feedback'; import './cron'; import './isMaster'; +import './segfaults'; diff --git a/imports/startup/server/segfaults.js b/imports/startup/server/segfaults.js new file mode 100644 index 0000000..bb1b798 --- /dev/null +++ b/imports/startup/server/segfaults.js @@ -0,0 +1,22 @@ +import SegfaultHandler from 'segfault-handler'; +import moment from 'moment'; +// import ravenLogger from './ravenLogger'; + +// https://github.com/ddopson/node-segfault-handler + +const dateFileFormat = moment().format('YYYYMMDD_HH:mm:ss'); + +SegfaultHandler.registerHandler(`/var/tmp/tcef-stacktrace-${dateFileFormat}.log`); + + +// This callaback does not work: +// https://github.com/ddopson/node-segfault-handler/issues/49 + +/* SegfaultHandler.registerHandler('/var/tmp/tcef-crash.log', (signal, address, stack) => { + * // Do what you want with the signal, address, or stack (array) + * // This callback will execute before the signal is forwarded on. + * ravenLogger.log(stack, signal); + * }); */ + +// Only uncomment for segv tests +// SegfaultHandler.causeSegfault(); diff --git a/package-lock.json b/package-lock.json index d6c8d27..a510ac4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2177,6 +2177,11 @@ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.26.tgz", "integrity": "sha1-OvFnL6Ytry1eyvrPblqg0l4Cwcg=" }, + "bindings": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz", + "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==" + }, "block-stream": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", @@ -11301,6 +11306,15 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, + "segfault-handler": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/segfault-handler/-/segfault-handler-1.0.0.tgz", + "integrity": "sha1-neUrxMtUFpNQ8PQpV3L8JFKI8ZM=", + "requires": { + "bindings": "1.3.0", + "nan": "2.6.2" + } + }, "semver": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", diff --git a/package.json b/package.json index 11e372d..11f49b5 100644 --- a/package.json +++ b/package.json @@ -76,6 +76,7 @@ "react-router-hash-link": "^1.1.1", "react-share": "^2.0.0", "reactstrap": "^5.0.0-alpha.3", + "segfault-handler": "^1.0.0", "simpl-schema": "^0.3.2", "simple-line-icons": "^2.4.1", "store": "^2.0.12",