nodejs / llnode

An lldb plugin for Node.js and V8, which enables inspection of JavaScript states for insights into Node.js processes and their core dumps.
Other
1.15k stars 99 forks source link

Upcoming metadata changes in V8 7.7 #287

Closed cjihrig closed 1 year ago

cjihrig commented 5 years ago

The V8 7.7 update requires the following adjustments to the postmortem debugging metadata constants:

Refs: https://github.com/nodejs/node/pull/28918

mmarchini commented 4 years ago

Interesting, the type of those fields didn't change, but they are all prefixed by __int. Is the metadata generated for Torque classes prefixed by the the metadata type instead of the field type? That's probably not a good idea, if a field type changes it wouldn't reflect on the metadata name, and we wouldn't have a way to check the type on llnode...

mmarchini commented 4 years ago

class_Symbol__name__Object was removed as well, I'm guessing in this version. Still investigating.

mmarchini commented 4 years ago

So I renamed the String metadata back to their previous names in: https://chromium-review.googlesource.com/c/v8/v8/+/1847783. I also added the missing metadata for symbols. Will update the tests once this is merged to core.

mmarchini commented 4 years ago

If the above gets merged, no changes will be necessary on llnode for 7.7 (and then we can close this issue). I already have patches to fix 7.2, 7.4 and 7.6 (I haven't opened PRs with all of them yet because some are blocked by #303), so once the metadata lands upstream and is backported to core, we'll have llnode working on Node.js v12 :)

No9 commented 1 year ago

@cjihrig We discussed the issue of breaking changes in a recent diagnostics meeting. Is there a process around how these breaking changes are identified and flagged to llnode or do we just rely on the good will of folks like yourself?

cjihrig commented 1 year ago

There used to be a test in core that verified the existence of the metadata used by llnode. However, that test was removed in https://github.com/nodejs/node/commit/9a0aaa610706bfe7aeb2234b085cdcb912403c90. After that, I think @mmarchini had her own way of detecting the breaking changes. You'll definitely want some automated way to detect the breaking changes because they happen frequently with V8 updates.

No9 commented 1 year ago

Cheers @cjihrig - I'll close this and captured your recommendation here https://github.com/nodejs/llnode/issues/412