Source code

Revision control

Copy as Markdown

Other Tools

// Don't crash trying to fire a dead frame's onPop handler.
var g = newGlobal({newCompartment: true});
g.eval('function f() { debugger; }');
var log = '';
// Create two Debuggers debugging the same global `g`. Both will put onPop
// handlers on the same frame.
var dbg1 = Debugger(g);
dbg1.onDebuggerStatement = frame1 => {
frame1.onPop = completion => {
log += 'A';
dbg2.removeDebuggee(g); // kills frame2, so frame2.onPop should not fire
log += 'B';
};
};
var dbg2 = Debugger(g);
dbg2.onDebuggerStatement = frame2 => {
frame2.onPop = completion => {
log += 'C';
};
};
g.f();
assertEq(log, 'AB');