RESOLVED WORKSFORME Bug 119184
Debug assert when emitting debug hooks for video game
https://bugs.webkit.org/show_bug.cgi?id=119184
Summary Debug assert when emitting debug hooks for video game
Brian Burg
Reported 2013-07-27 17:32:26 PDT
Repro steps: 1. In a debug build, open the Web Inspector from Safari (which will cause debug hooks to be emitted). 2. Load the page http://www.nihilogic.dk/labs/tetris/ 3. Profit This seems to have regressed in the past month or so, but I don't have a tight bisect range for you. It wasn't a problem in git 24c0bd0a70e282daac4f0fe07b7e084ecc9d7b64, but is a problem in nightlies (git 937da75e2962c8f765b7da637fd7632349cc7906). --- ASSERTION FAILED: line >= firstLine /Users/burg/repos/timelapse/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h(282) : void JSC::BytecodeGenerator::emitExpressionInfo(int, int, int, unsigned int, int) 1 0x10513ef40 WTFCrash 2 0x104c5ca2c JSC::BytecodeGenerator::emitExpressionInfo(int, int, int, unsigned int, int) 3 0x104c556a1 JSC::BytecodeGenerator::emitDebugHook(JSC::DebugHookID, unsigned int, unsigned int, unsigned int, unsigned int) 4 0x10500c97a JSC::ProgramNode::emitBytecode(JSC::BytecodeGenerator&, JSC::RegisterID*) 5 0x104c4b5b4 JSC::BytecodeGenerator::generate() 6 0x104ccf424 JSC::UnlinkedProgramCodeBlock* JSC::CodeCache::getCodeBlock<JSC::UnlinkedProgramCodeBlock, JSC::ProgramExecutable>(JSC::VM&, JSC::ProgramExecutable*, JSC::SourceCode const&, JSC::JSParserStrictness, JSC::DebuggerMode, JSC::ProfilerMode, JSC::ParserError&) 7 0x104cce6ae JSC::CodeCache::getProgramCodeBlock(JSC::VM&, JSC::ProgramExecutable*, JSC::SourceCode const&, JSC::JSParserStrictness, JSC::DebuggerMode, JSC::ProfilerMode, JSC::ParserError&) 8 0x104f65f8f JSC::JSGlobalObject::createProgramCodeBlock(JSC::ExecState*, JSC::ProgramExecutable*, JSC::JSObject**) 9 0x104eb1d7d JSC::ProgramExecutable::initializeGlobalProperties(JSC::VM&, JSC::ExecState*, JSC::JSScope*) 10 0x104ee0e55 JSC::Interpreter::execute(JSC::ProgramExecutable*, JSC::ExecState*, JSC::JSObject*) 11 0x104ce8201 JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&, JSC::JSValue, JSC::JSValue*) 12 0x106c50262 WebCore::JSMainThreadExecState::evaluate(JSC::ExecState*, JSC::SourceCode const&, JSC::JSValue, JSC::JSValue*) 13 0x1074c12ec WebCore::ScriptController::evaluateInWorld(WebCore::ScriptSourceCode const&, WebCore::DOMWrapperWorld*) 14 0x1074c1434 WebCore::ScriptController::evaluate(WebCore::ScriptSourceCode const&) 15 0x1074d7de8 WebCore::ScriptElement::executeScript(WebCore::ScriptSourceCode const&) 16 0x10678220d WebCore::HTMLScriptRunner::executePendingScriptAndDispatchEvent(WebCore::PendingScript&) 17 0x10678201c WebCore::HTMLScriptRunner::executeParsingBlockingScript() 18 0x106782841 WebCore::HTMLScriptRunner::executeParsingBlockingScripts() 19 0x10678248c WebCore::HTMLScriptRunner::execute(WTF::PassRefPtr<WebCore::Element>, WTF::TextPosition const&) 20 0x1066eb9fa WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder() 21 0x1066ebb38 WebCore::HTMLDocumentParser::canTakeNextToken(WebCore::HTMLDocumentParser::SynchronousMode, WebCore::PumpSession&) 22 0x1066eb24d WebCore::HTMLDocumentParser::pumpTokenizer(WebCore::HTMLDocumentParser::SynchronousMode) 23 0x1066ead99 WebCore::HTMLDocumentParser::pumpTokenizerIfPossible(WebCore::HTMLDocumentParser::SynchronousMode) 24 0x1066ec320 WebCore::HTMLDocumentParser::append(WTF::PassRefPtr<WTF::StringImpl>) 25 0x10627944c WebCore::DecodedDataDocumentParser::appendBytes(WebCore::DocumentWriter*, char const*, unsigned long) 26 0x106378c9e WebCore::DocumentWriter::addData(char const*, unsigned long) 27 0x10634997b WebCore::DocumentLoader::commitData(char const*, unsigned long) 28 0x1037f9b90 WebKit::WebFrameLoaderClient::committedLoad(WebCore::DocumentLoader*, char const*, int) 29 0x10634b6a0 WebCore::DocumentLoader::commitLoad(char const*, int) 30 0x10634bc96 WebCore::DocumentLoader::dataReceived(WebCore::CachedResource*, char const*, int) 31 0x105ff3714 WebCore::CachedRawResource::didAddClient(WebCore::CachedResourceClient*) ERROR: Failed to send message to real exception port. (ipc/send) invalid destination port (10000003) /Users/burg/repos/timelapse/Source/WebKit2/Platform/CoreIPC/mac/ConnectionMac.cpp(487) : void CoreIPC::Connection::exceptionSourceEventHandler() SHOULD NEVER BE REACHED /Users/burg/repos/timelapse/Source/WebKit2/Platform/CoreIPC/mac/ConnectionMac.cpp(488) : void CoreIPC::Connection::exceptionSourceEventHandler() 1 0x10acd4f40 WTFCrash 2 0x10c15c3bc CoreIPC::Connection::exceptionSourceEventHandler() 3 0x10c151f22 WTF::FunctionWrapper<void (CoreIPC::Connection::*)()>::operator()(CoreIPC::Connection*) 4 0x10c151ea5 WTF::BoundFunctionImpl<WTF::FunctionWrapper<void (CoreIPC::Connection::*)()>, void (CoreIPC::Connection*)>::operator()() 5 0x10c15d4b5 ___ZNK3WTF8FunctionIFvvEEcvU13block_pointerS1_Ev_block_invoke 6 0x7fff8dbf10b6 _dispatch_client_callout 7 0x7fff8dbf329b _dispatch_source_invoke 8 0x7fff8dbf2305 _dispatch_queue_invoke 9 0x7fff8dbf2448 _dispatch_queue_drain 10 0x7fff8dbf22f1 _dispatch_queue_invoke 11 0x7fff8dbf21c3 _dispatch_worker_thread2 12 0x7fff8e0c8d0b _pthread_wqthread 13 0x7fff8e0b31d1 start_wqthread
Attachments
test case - empty external JS file with comment (9 bytes, application/x-javascript)
2013-07-27 20:29 PDT, Brian Burg
no flags
test case - main page (77 bytes, text/html)
2013-07-27 20:30 PDT, Brian Burg
no flags
Brian Burg
Comment 1 2013-07-27 20:29:51 PDT
Created attachment 207596 [details] test case - empty external JS file with comment
Brian Burg
Comment 2 2013-07-27 20:30:22 PDT
Created attachment 207597 [details] test case - main page
Brian Burg
Comment 3 2013-07-27 20:33:20 PDT
Further debugging: This is triggered by single-line external source files only containing a comment. It's not triggered by entering a similar statement via Inspector console or including in in an inline script. It's not triggered if the page is loaded without inspector open (no debug hooks), and then the inspector is opened (causing debug hooks to be emitted without re-parsing).
Brian Burg
Comment 4 2013-09-30 13:25:12 PDT
Fixed in recent nightlies.
Note You need to log in before you can comment on or make changes to this bug.