Title: node does not abort at the right time when using --abort-on-uncaught-exception · Issue #3035 · nodejs/node · GitHub
Open Graph Title: node does not abort at the right time when using --abort-on-uncaught-exception · Issue #3035 · nodejs/node
X Title: node does not abort at the right time when using --abort-on-uncaught-exception · Issue #3035 · nodejs/node
Description: nodejs/master's head does not abort at the right time when using --abort-on-uncaught-exception. Here's a reproduction of the problem on SmartOS: $ git rev-parse --short HEAD 02448c6 [root@dev ~/node-1]# make make -C out BUILDTYPE=Release...
Open Graph Description: nodejs/master's head does not abort at the right time when using --abort-on-uncaught-exception. Here's a reproduction of the problem on SmartOS: $ git rev-parse --short HEAD 02448c6 [root@dev ~/nod...
X Description: nodejs/master's head does not abort at the right time when using --abort-on-uncaught-exception. Here's a reproduction of the problem on SmartOS: $ git rev-parse --short HEAD 02448c6 [root@d...
Opengraph URL: https://github.com/nodejs/node/issues/3035
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"node does not abort at the right time when using --abort-on-uncaught-exception","articleBody":"nodejs/master's head does not abort at the right time when using `--abort-on-uncaught-exception`. Here's a reproduction of the problem on SmartOS:\n\n```\n$ git rev-parse --short HEAD\n02448c6\n[root@dev ~/node-1]# make\nmake -C out BUILDTYPE=Release V=1\nmake[1]: Entering directory '/root/node-1/out'\nmake[1]: Nothing to be done for 'all'.\nmake[1]: Leaving directory '/root/node-1/out'\nln -fs out/Release/node node\n$ ln -sf `pwd`/out/Release/node /opt/local/bin/node\n[root@dev ~/node-1]# node --version\nv5.0.0-pre\n$ node --abort-on-uncaught-exception -e 'setTimeout(function () { function boom() { throw new Error(\"foo\") } boom(); }, 10);'\n[eval]:1\nsetTimeout(function () { function boom() { throw new Error(\"foo\") } boom(); }, 10);\n ^\n\nError: foo\n at boom ([eval]:1:50)\n at null._onTimeout ([eval]:1:69)\n at Timer.listOnTimeout (timers.js:89:15)\nAbort (core dumped)\n$ mdb /var/cores/core.node.8212 \nLoading modules: [ libumem.so.1 libc.so.1 ld.so.1 ]\n\u003e ::load /root/mdb_v8/build/amd64/mdb_v8.so\nmdb_v8 version: 1.0.0 (dev)\nV8 version: 4.5.103.33\nAutoconfigured V8 support from target\nC++ symbol demangling enabled\n\u003e ::jsstack\nnative: libc.so.1`_lwp_kill+0xa\nnative: libc.so.1`raise+0x20\nnative: libc.so.1`abort+0x98\nnative: node::FatalException+0xd7\nnative: v8::internal::MessageHandler::ReportMessage+0x1ee\nnative: v8::internal::Isolate::ReportPendingMessages+0x234\nnative: v8::internal::Execution::Call+0x4a3\nnative: v8::Function::Call+0xff\nnative: v8::Function::Call+0x41\nnative: node::AsyncWrap::MakeCallback+0x23a\nnative: node::TimerWrap::OnTimeout+0x96\nnative: uv__run_timers+0x7d\nnative: uv_run+0x35a\nnative: node::Start+0x538\nnative: _start+0x6c\n\u003e\n```\n\nNote that the call stack doesn't contain any JavaScript frame, and indicates that node aborted in `node::FatalException`, not when the error was thrown.\n\nThis is a problem because users of post-mortem debuggers and `--abort-on-uncaught-exception` need to have core dumps that are generated when the exception is thrown, and the core dumps need to have the frame that throws the error in the call stack. Otherwise, it becomes much more difficult, if not impossible to determine the root cause of the problem.\n\nIn the example above, there's no way to know that the error was thrown by the function named `foo`, we just know that one timer's callback threw.\n\nThis regression was introduced by https://github.com/nodejs/node/pull/922, which made V8 ignore `--abort-on-uncaught-exception`. An attempt at fixing that regression was made with https://github.com/nodejs/node/pull/2776, but instead of letting V8 abort in `Isolate::Throw` (when it actually throws the error and when all the relevant frames are active on the stack), it throws in `node::FatalException` as shown above.\n\nI will submit two different PRs that fix this issue in two different ways so that we can discuss the pros and cons of the two different approaches I came up with.\n\n/cc @nodejs/post-mortem\n","author":{"url":"https://github.com/misterdjules","@type":"Person","name":"misterdjules"},"datePublished":"2015-09-24T01:21:27.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":10},"url":"https://github.com/3035/node/issues/3035"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:c040e085-ac42-af54-7746-75fb78d9d0af |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | E81C:F61E5:BEFA0B:107A64C:6A4DC27E |
| html-safe-nonce | 25fbbc8db8707cb4ce1902c16884dd31ee8327ce0763fa76c5a378edfdfd57fb |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFODFDOkY2MUU1OkJFRkEwQjoxMDdBNjRDOjZBNERDMjdFIiwidmlzaXRvcl9pZCI6Ijc5NDY2MzQ0NTIzMTgxNDMxMDIiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 4c7d3bb9b38c3c2aba850f0d7fc39e50d57e809a940f3aed8ecc33f4e804aeb4 |
| hovercard-subject-tag | issue:108038306 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/nodejs/node/3035/issue_layout |
| twitter:image | https://opengraph.githubassets.com/8b8c09d7ac430f4659383fa53c39c8c062dedd4b84872cfef7d670936e101688/nodejs/node/issues/3035 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/8b8c09d7ac430f4659383fa53c39c8c062dedd4b84872cfef7d670936e101688/nodejs/node/issues/3035 |
| og:image:alt | nodejs/master's head does not abort at the right time when using --abort-on-uncaught-exception. Here's a reproduction of the problem on SmartOS: $ git rev-parse --short HEAD 02448c6 [root@dev ~/nod... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | misterdjules |
| hostname | github.com |
| expected-hostname | github.com |
| None | 06b8a6144231bf3a234f1c2e9993861e07ce98a905912b114aa386c2d7e84b33 |
| turbo-cache-control | no-preview |
| go-import | github.com/nodejs/node git https://github.com/nodejs/node.git |
| octolytics-dimension-user_id | 9950313 |
| octolytics-dimension-user_login | nodejs |
| octolytics-dimension-repository_id | 27193779 |
| octolytics-dimension-repository_nwo | nodejs/node |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 27193779 |
| octolytics-dimension-repository_network_root_nwo | nodejs/node |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 1d344bdb7547fe6bca17a59bb2b8aac3dc9532a0 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width