Status: Accepted
Owner: [email protected]
Labels: Type-Bug Priority-Medium

New issue 3280 by [email protected]: Crash when reifying scope in debugger breakpoint
http://code.google.com/p/v8/issues/detail?id=3280

The attached test causes V8 to crash:

#
# Fatal error in ../src/runtime.cc, line 11485
# CHECK(!value->IsTheHole()) failed
#

#2 0x0000000000b903ae in v8::internal::MaterializeStackLocalsWithFrameInspector (isolate=0x1c9f030, target=Handle((v8::internal::JSObject *) 0x3106a60428d9), function=Handle((v8::internal::JSFunction *) 0x1c863bc55cc1), frame_inspector=0x7fffffffc450) at ../src/runtime.cc:11485 scope = {isolate_ = 0x1c9f030, prev_next_ = 0x1ce5ea0, prev_limit_ = 0x1ce7ad0}
        value = Handle(the-hole)
        name = Handle(0)
        i = 0
        shared = Handle((v8::internal::SharedFunctionInfo *) 0x1c863bc559d9)
scope_info = Handle((v8::internal::ScopeInfo *) ((v8::internal::FixedArray *) 0x1c863bc55dd1))

(gdb) p scope_info->ParameterName(i)
$1 = "a"

The reason is that the argument "a" does not get context-allocated, even though we are in a generator, because "a" is unreferenced and thus unneeded.

I don't know exactly what to do here. It seems silly to force context allocation of unused arguments to generators, on the off chance that perhaps someone places a breakpoint that runs during the dynamic extent of the generator. Statically detecting "debugger" statements is insufficient, as a debugger can traverse the stack. On the other hand, perhaps generators with unused arguments is a sufficiently rare case that we can eat the needless cost.

Attachments:
        test.js  2.0 KB

--
You received this message because this project is configured to send all issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to