Title: util.getCallSites() drops functionName when a source map has no name entry · Issue #65104 · nodejs/node · GitHub
Open Graph Title: util.getCallSites() drops functionName when a source map has no name entry · Issue #65104 · nodejs/node
X Title: util.getCallSites() drops functionName when a source map has no name entry · Issue #65104 · nodejs/node
Description: Version v24.15.0 Also reproduced on v23.6.0. Platform macOS 15.6 (Darwin 24.6.0), x86_64 Subsystem util, source_map What steps will reproduce the bug? Create these two files in the same directory. repro.js: const{getCallSites}=require("n...
Open Graph Description: Version v24.15.0 Also reproduced on v23.6.0. Platform macOS 15.6 (Darwin 24.6.0), x86_64 Subsystem util, source_map What steps will reproduce the bug? Create these two files in the same directory. ...
X Description: Version v24.15.0 Also reproduced on v23.6.0. Platform macOS 15.6 (Darwin 24.6.0), x86_64 Subsystem util, source_map What steps will reproduce the bug? Create these two files in the same directory. ...
Opengraph URL: https://github.com/nodejs/node/issues/65104
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"util.getCallSites() drops functionName when a source map has no name entry","articleBody":"### Version\n\nv24.15.0\n\nAlso reproduced on v23.6.0.\n\n### Platform\n\n```text\nmacOS 15.6 (Darwin 24.6.0), x86_64\n```\n\n### Subsystem\n\nutil, source_map\n\n### What steps will reproduce the bug?\n\nCreate these two files in the same directory.\n\n`repro.js`:\n\n```js\nconst{getCallSites}=require(\"node:util\");function foo(){console.log(getCallSites(1,{sourceMap:!0})[0].functionName)}foo();\n//# sourceMappingURL=repro.js.map\n```\n\n`repro.js.map`:\n\n```json\n{\n \"version\": 3,\n \"sources\": [\"original.js\"],\n \"sourcesContent\": [\"const { getCallSites } = require('node:util'); function foo() { console.log(getCallSites(1, { sourceMap: true })[0].functionName); } foo();\"],\n \"mappings\": \"AAAA,KAAM,CAAE,YAAa,EAAI,QAAQ,WAAW,EAAG,SAAS,KAAM,CAAE,QAAQ,IAAI,aAAa,EAAG,CAAE,UAAW,EAAK,CAAC,EAAE,CAAC,EAAE,YAAY,CAAG,CAAE,IAAI\",\n \"names\": []\n}\n```\n\n### How often does it reproduce? Is there a required condition?\n\nIt reproduces every time on v23.6.0 and v24.15.0.\n\nThe source map must map the call-site location without providing a corresponding name entry. Source Map v3 permits an empty `names` array.\n\n### What is the expected behavior? Why is that the expected behavior?\n\nThe command should print:\n\n```text\nfoo\n```\n\nThe generated V8 call site contains `foo` as its function name. Remapping its source location should preserve that name when the source map does not provide a replacement.\n\nThis is also consistent with Node.js's source-mapped stack trace formatter, which retains the generated function name when no mapped name exists.\n\n### What do you see instead?\n\nThe command prints an empty line because:\n\n```js\ngetCallSites(1, { sourceMap: true })[0].functionName === ''\n```\n\n### Additional information\n\nRunning the same file without source-map remapping prints the expected name:\n\n```console\n$ node repro.js\nfoo\n```\n\n`reconstructCallSite()` in `lib/util.js` currently assigns:\n\n```js\nfunctionName: entry.name ?? ''\n```\n\nConsequently, an absent optional source-map name replaces the generated V8 function name with an empty string. It should instead fall back to the generated call site's `functionName`.\n","author":{"url":"https://github.com/privatenumber","@type":"Person","name":"privatenumber"},"datePublished":"2026-08-07T14:16:17Z","url":"https://github.com/nodejs/node/issues/65104"}
| 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:9ff2fbad-edbf-f48b-22ae-6cc32fe8ce4e |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 8EE0:32DB95:5133D7:6E3701:6AED1DC0 |
| html-safe-nonce | 4229c5c06f4dfa8ef599625be6f05b42f13c55c596c853f46f804e288b7b060c |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4RUUwOjMyREI5NTo1MTMzRDc6NkUzNzAxOjZBRUQxREMwIiwidmlzaXRvcl9pZCI6IjUyODcxNTUxNDAzMTYxNzU4MDgiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | b52abba3f41e1c422f959684b06292f0a105ac0f422ad696ba9a7fc4a8759f2b |
| hovercard-subject-tag | issue:5090994503 |
| 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/65104/issue_layout |
| twitter:image | https://opengraph.githubassets.com/5548db7b4b9ba129e94ef408854a22fc88aa2851f2a7c61fea45720d95a6a375/nodejs/node/issues/65104 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/5548db7b4b9ba129e94ef408854a22fc88aa2851f2a7c61fea45720d95a6a375/nodejs/node/issues/65104 |
| og:image:alt | Version v24.15.0 Also reproduced on v23.6.0. Platform macOS 15.6 (Darwin 24.6.0), x86_64 Subsystem util, source_map What steps will reproduce the bug? Create these two files in the same directory. ... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | privatenumber |
| hostname | github.com |
| expected-hostname | github.com |
| None | e3e0f7f63e50c6fe879198a93a0a023a648ecc0a5e9bc3b5e033ac57172237e6 |
| 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 | 707a24b346ac8a82878b9c084efaa38a997660cb |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
| react-app-name | issues |
Links:
Viewport: width=device-width