Title: [BUG] Segfault on combo of global ctors, ostream, wasi · Issue #33175 · nodejs/node · GitHub
Open Graph Title: [BUG] Segfault on combo of global ctors, ostream, wasi · Issue #33175 · nodejs/node
X Title: [BUG] Segfault on combo of global ctors, ostream, wasi · Issue #33175 · nodejs/node
Description: This is an issue for node's WASI integration with emscripten. both global ctors need to be called, and ostream being used in the WASM standalone mode (emsdk latest upstream). I have a case where I need to call the global static initializ...
Open Graph Description: This is an issue for node's WASI integration with emscripten. both global ctors need to be called, and ostream being used in the WASM standalone mode (emsdk latest upstream). I have a case where I ...
X Description: This is an issue for node's WASI integration with emscripten. both global ctors need to be called, and ostream being used in the WASM standalone mode (emsdk latest upstream). I have a case wher...
Opengraph URL: https://github.com/nodejs/node/issues/33175
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[BUG] Segfault on combo of global ctors, ostream, wasi","articleBody":"This is an issue for node's WASI integration with emscripten.\r\n\r\nboth global ctors need to be called, and ostream being used in the WASM standalone mode (emsdk latest upstream). \r\n\r\nI have a case where I need to call the global static initializers(need to call _start before running other functions), but also have ostream in the code. \r\n\r\nWhat was happening is that when ostream is being used in the code and it somehow triggers certain things to be added to global ctors, and then calling global ctors resulted in a segfault. So far I only get this error on node14, and I am not sure if it is related to the use of WASI.\r\n\r\n### C++\r\n```c++\r\n#include \u003cemscripten.h>\r\n#include \u003cvector>\r\n#include \u003csstream>\r\n\r\n// static intializer, need to call _start\r\nstatic std::vector\u003cint> x = {1, 2, 3};\r\n\r\nextern \"C\" {\r\nEMSCRIPTEN_KEEPALIVE\r\nint GetX(int i) {\r\n // use of ostream somehow makes _start fail.\r\n std::ostringstream os;\r\n os \u003c\u003c \"x\";\r\n return x[i];\r\n}\r\n}\r\n```\r\n```Makefile\r\nwasm_test.wasm: wasm_test.cc\r\n\t@mkdir -p $(@D)\r\n\temcc -O3 -std=c++11 -o $@ $\u003c\r\n```\r\n\r\n### NodeJS\r\n\r\n```js\r\nconst { WASI } = require('wasi');\r\n\r\nconst wasi = new WASI({\r\n args: process.argv,\r\n env: process.env\r\n });\r\n\r\nconst binary = require('fs').readFileSync('build/wasm_test.wasm');\r\n\r\nWebAssembly.instantiate(binary,\r\n { env: {}, wasi_snapshot_preview1: wasi.wasiImport }).then(({ instance }) => {\r\n // trigger ctors\r\n instance.exports._start();\r\n // test the static vars are correctly initialized.\r\n console.log(instance.exports.GetX(0));\r\n});\r\n```\r\n```\r\nnode --experimental-wasi-unstable-preview1 --experimental-wasm-bigint test_wasm.js \r\n```\r\n\r\nRelevant issue in the emscripten https://github.com/emscripten-core/emscripten/issues/11001","author":{"url":"https://github.com/tqchen","@type":"Person","name":"tqchen"},"datePublished":"2020-04-30T20:14:44Z","url":"https://github.com/nodejs/node/issues/33175"}
| react-profiling | 0 |
| react-import-map | react,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf |
| 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:cd621dd2-514b-1bcb-9afd-9182d7ae3943 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | BC2E:3159C:7BF56D:A2FDFB:6AED3758 |
| html-safe-nonce | 1aedb84bdc35798c10ac1e24aba34f82681bbaee5de67ee4417dcc7ba2ec5604 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCQzJFOjMxNTlDOjdCRjU2RDpBMkZERkI6NkFFRDM3NTgiLCJ2aXNpdG9yX2lkIjoiMzYwNjAwMzAyMTA4Nzg0ODI4MSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 4753ed94d63b06766a056e1c7dd1bcc4c7cfe85a50ceefc2b96ed5b629e0188d |
| hovercard-subject-tag | issue:610356841 |
| 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/33175/issue_layout |
| twitter:image | https://opengraph.githubassets.com/3460b5be7591c753d14011a45e8a02b1745d770de556354eaefb016a07b43bfe/nodejs/node/issues/33175 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/3460b5be7591c753d14011a45e8a02b1745d770de556354eaefb016a07b43bfe/nodejs/node/issues/33175 |
| og:image:alt | This is an issue for node's WASI integration with emscripten. both global ctors need to be called, and ostream being used in the WASM standalone mode (emsdk latest upstream). I have a case where I ... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | tqchen |
| hostname | github.com |
| expected-hostname | github.com |
| None | 26c92a9388ddfad3fa88d132b5d5f0b4747030233dcc4e5efb05f1cbae152184 |
| 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 | c629ad99c254d306375fc8354d04321c2c362236 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
| react-app-name | issues |
Links:
Viewport: width=device-width