Skip to content

Instantly share code, notes, and snippets.

@misterdjules
Created January 27, 2017 02:24
Show Gist options
  • Select an option

  • Save misterdjules/6eaf61eefce0f33b8b0fb1f2a2e08e79 to your computer and use it in GitHub Desktop.

Select an option

Save misterdjules/6eaf61eefce0f33b8b0fb1f2a2e08e79 to your computer and use it in GitHub Desktop.
➜ node-dtrace-provider-issue-90 ls
aside-gc.js dtrace-gc.js node_modules package.json
➜ node-dtrace-provider-issue-90 ls -l node_modules
total 8
lrwxr-xr-x 1 JulienGilli staff 58 Jan 26 18:15 dtrace-provider -> ../../../../.nvm/v0.10.40/lib/node_modules/dtrace-provider
➜ node-dtrace-provider-issue-90 ls node_modules/dtrace-provider/build
DTraceProviderBindings.target.mk Makefile config.gypi libusdt.target.mk
Debug binding.Makefile gyp-mac-tool
➜ node-dtrace-provider-issue-90 cat aside-gc.js
var dtrace = require('./dtrace-gc');
var a = [];
for (var j = 0; j < 500; j++) {
dtrace.foo(j);
}
global.gc();
setInterval(function () {
for (var i = 0; i < 1000000; i++) {
a.push({ n: i, c: i * 2 });
}
global.gc();
a.shift();
console.log('round done');
}, 1000);% ➜ node-dtrace-provider-issue-90 cat dtrace-gc.js
var d = require('dtrace-provider');
console.log('d:', d);
function foo(n) {
var dtp = d.createDTraceProvider('gctest');
var p1 = dtp.addProbe('probe' + n, 'int', 'int');
dtp.enable();
}
module.exports = { foo: foo };
➜ node-dtrace-provider-issue-90 node -p 'process.versions'
{ http_parser: '1.0',
node: '0.10.40',
v8: '3.14.5.9',
ares: '1.9.0-DEV',
uv: '0.10.36',
zlib: '1.2.8',
modules: '11',
openssl: '1.0.1p' }
➜ node-dtrace-provider-issue-90 lldb node
(lldb) target create "node"
Current executable set to 'node' (x86_64).
(lldb) b DTraceProvider::~DTraceProvider Breakpoint 1: no locations (pending).
WARNING: Unable to resolve breakpoint to any actual locations.
(lldb) b DTraceProbe::~DTraceProbe Breakpoint 2: no locations (pending).
WARNING: Unable to resolve breakpoint to any actual locations.
(lldb) r aside-gc.js
Process 19328 launched: '/Users/JulienGilli/.nvm/v0.10.40/bin/node' (x86_64)
{ [Error: Cannot find module './build/Release/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
{ [Error: Cannot find module './build/default/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
3 locations added to breakpoint 1
3 locations added to breakpoint 2
d: { DTraceProvider: [Function: DTraceProvider],
createDTraceProvider: [Function] }
Process 19328 stopped
* thread #1: tid = 0xed9bd, 0x0000000100f88ed0 DTraceProviderBindings.node`node::DTraceProvider::~DTraceProvider(this=0x0000000100d010c0) + 16 at dtrace_provider.cc:14, queue = 'com.apple.main-thread', stop reason = breakpoint 1.3
frame #0: 0x0000000100f88ed0 DTraceProviderBindings.node`node::DTraceProvider::~DTraceProvider(this=0x0000000100d010c0) + 16 at dtrace_provider.cc:14
11 provider = NULL;
12 }
13
-> 14 DTraceProvider::~DTraceProvider() {
15 usdt_provider_disable(provider);
16 usdt_provider_free(provider);
17 }
(lldb)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment