Skip to content
This repository has been archived by the owner on Oct 15, 2020. It is now read-only.

ContextShim is leaking #627

Open
rgurzhiy opened this issue Nov 1, 2019 · 0 comments
Open

ContextShim is leaking #627

rgurzhiy opened this issue Nov 1, 2019 · 0 comments

Comments

@rgurzhiy
Copy link

rgurzhiy commented Nov 1, 2019

  • Version: node-chakracore-v10.13.0
  • Platform: Darwin 18.7.0 x86_64
  • Subsystem: chakrashim

In deps/chakrashim/src/jsrtisolateshim.cc there is a statement CHAKRA-TODO: This is not called after cross context work in chakra. Fix this else we will leak chakrashim object.
JsContextBeforeCollectCallback is never called, so ContextShim, saved as void* data in JSContextRef is leaking.

The problem is in deps/chakrashim/src/inspector/inspected-context.cc.

As far as I understand from deps/chakrashim/core/lib/Common/Memory/Recycler.cpp Recycler::SetObjectBeforeCollectCallback we only allow 1 callback per object.

We configure required callback in IsolateShim::NewContext after ContextShim creation and then, when inspector starts in src/node.cc bool StartInspector(Environment* env, const char* script_path, std::shared_ptr<DebugOptions> options) it needs to set a weak reference with callback for our context deps/chakrashim/src/inspector/inspected-context.cc m_context.SetWeak(this, &InspectedContext::weakCallback, v8::WeakCallbackType::kParameter);. As a result the required JsContextBeforeCollectCallback is being lost.

After compiling node-chakracore setting --without-inspector flag JsContextBeforeCollectCallback is being called duringJsDisposeRuntime.

I'm new to node-chakracore, so I don't know how to fix the issue properly. But this info could be useful for you guys.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant