Bug 186467

Summary: Loading cnn.com in MiniBrowser hits Structure::dump() under DFG::AdaptiveInferredPropertyValueWatchpoint::handleFire which churns 65KB of memory
Product: WebKit Reporter: Simon Fraser (smfr) <simon.fraser>
Component: JavaScriptCoreAssignee: Keith Miller <keith_miller>
Status: RESOLVED FIXED    
Severity: Normal CC: commit-queue, ews-watchlist, keith_miller, mark.lam, msaboff, saam, simon.fraser, webkit-bug-importer, ysuzuki
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch
simon.fraser: review+, commit-queue: commit-queue-
Archive of layout-test-results from webkit-cq-02 for mac-sierra none

Description Simon Fraser (smfr) 2018-06-09 17:19:33 PDT
It seems really weird that we'd hit Structure::dump() when just loading a web page. I have no extra logging enabled, and am not web inspecting.

(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 3.1
  * frame #0: 0x000000011617c0db JavaScriptCore`JSC::Structure::dump(this=0x00000001284f8380, out=0x00007ffeefbfaf28) const at Structure.cpp:1171
    frame #1: 0x000000011617c6aa JavaScriptCore`JSC::Structure::dumpInContext(this=0x00000001284f8380, out=0x00007ffeefbfaf28, context=0x0000000000000000) const at Structure.cpp:1214
    frame #2: 0x0000000115309d57 JavaScriptCore`WTF::ValueInContext<JSC::Structure, JSC::DumpContext>::dump(this=0x00007ffeefbfaa90, out=0x00007ffeefbfaf28) const at PrintStream.h:218
    frame #3: 0x0000000115309d1d JavaScriptCore`void WTF::printInternal<WTF::ValueInContext<JSC::Structure, JSC::DumpContext> >(out=0x00007ffeefbfaf28, value=0x00007ffeefbfaa90) at PrintStream.h:130
    frame #4: 0x0000000115fdf548 JavaScriptCore`void WTF::PrintStream::printImpl<WTF::ValueInContext<JSC::Structure, JSC::DumpContext>, char [2]>(this=0x00007ffeefbfaf28, value=0x00007ffeefbfaa90, remainingValues=<no value available>) [2]) at PrintStream.h:89
    frame #5: 0x0000000115fdf50d JavaScriptCore`void WTF::PrintStream::printImpl<char [13], WTF::ValueInContext<JSC::Structure, JSC::DumpContext>, char [2]>(this=0x00007ffeefbfaf28, value=<no value available>, remainingValues=0x00007ffeefbfaa90, remainingValues=<no value available>) [13], WTF::ValueInContext<JSC::Structure, JSC::DumpContext> const&, char const (&) [2]) at PrintStream.h:90
    frame #6: 0x0000000115fdf4bb JavaScriptCore`void WTF::PrintStream::print<char [13], WTF::ValueInContext<JSC::Structure, JSC::DumpContext>, char [2]>(this=0x00007ffeefbfa988, out=0x00007ffeefbfaf28) [13], WTF::ValueInContext<JSC::Structure, JSC::DumpContext> const&, char const (&) [2])::'lambda'(WTF::PrintStream&)::operator()(WTF::PrintStream&) const at PrintStream.h:73
    frame #7: 0x0000000115fdf475 JavaScriptCore`void WTF::PrintStream::atomically<void WTF::PrintStream::print<char [13], WTF::ValueInContext<JSC::Structure, JSC::DumpContext>, char [2]>(char const (&) [13], WTF::ValueInContext<JSC::Structure, JSC::DumpContext> const&, char const (&) [2])::'lambda'(WTF::PrintStream&)>(this=0x00007ffeefbfaf28, func=0x00007ffeefbfa988) [13], WTF::ValueInContext<JSC::Structure, JSC::DumpContext> const&, char const (&) [2])::'lambda'(WTF::PrintStream&) const&) at PrintStream.h:64
    frame #8: 0x0000000115fda560 JavaScriptCore`void WTF::PrintStream::print<char [13], WTF::ValueInContext<JSC::Structure, JSC::DumpContext>, char [2]>(this=0x00007ffeefbfaf28, values=<no value available>, values=0x00007ffeefbfaa90, values=<no value available>) [13], WTF::ValueInContext<JSC::Structure, JSC::DumpContext> const&, char const (&) [2]) at PrintStream.h:71
    frame #9: 0x0000000115fda1b7 JavaScriptCore`JSC::JSValue::dumpInContextAssumingStructure(this=0x00007ffeefbfad20, out=0x00007ffeefbfaf28, context=0x0000000000000000, structure=0x00000001284f8380) const at JSCJSValue.cpp:282
    frame #10: 0x0000000115fd9d36 JavaScriptCore`JSC::JSValue::dumpInContext(this=0x00007ffeefbfad20, out=0x00007ffeefbfaf28, context=0x0000000000000000) const at JSCJSValue.cpp:236
    frame #11: 0x00000001152d8cc7 JavaScriptCore`WTF::ValueInContext<JSC::JSValue, JSC::DumpContext>::dump(this=0x00007ffeefbfad28, out=0x00007ffeefbfaf28) const at PrintStream.h:218
    frame #12: 0x00000001152d8c8d JavaScriptCore`void WTF::printInternal<WTF::ValueInContext<JSC::JSValue, JSC::DumpContext> >(out=0x00007ffeefbfaf28, value=0x00007ffeefbfad28) at PrintStream.h:130
    frame #13: 0x00000001152e4b60 JavaScriptCore`void WTF::PrintStream::printImpl<WTF::ValueInContext<JSC::JSValue, JSC::DumpContext>, char [3], WTF::ValueInContext<JSC::PropertyCondition, JSC::DumpContext>, char [2]>(this=0x00007ffeefbfaf28, value=0x00007ffeefbfad28, remainingValues=<no value available>, remainingValues=0x00007ffeefbfad10, remainingValues=<no value available>) [3], WTF::ValueInContext<JSC::PropertyCondition, JSC::DumpContext> const&, char const (&) [2]) at PrintStream.h:89
    frame #14: 0x00000001152e4b1d JavaScriptCore`void WTF::PrintStream::printImpl<char [2], WTF::ValueInContext<JSC::JSValue, JSC::DumpContext>, char [3], WTF::ValueInContext<JSC::PropertyCondition, JSC::DumpContext>, char [2]>(this=0x00007ffeefbfaf28, value=<no value available>, remainingValues=0x00007ffeefbfad28, remainingValues=<no value available>, remainingValues=0x00007ffeefbfad10, remainingValues=<no value available>) [2], WTF::ValueInContext<JSC::JSValue, JSC::DumpContext> const&, char const (&) [3], WTF::ValueInContext<JSC::PropertyCondition, JSC::DumpContext> const&, char const (&) [2]) at PrintStream.h:90
    frame #15: 0x00000001152e4ac3 JavaScriptCore`void WTF::PrintStream::print<char [2], WTF::ValueInContext<JSC::JSValue, JSC::DumpContext>, char [3], WTF::ValueInContext<JSC::PropertyCondition, JSC::DumpContext>, char [2]>(this=0x00007ffeefbfac88, out=0x00007ffeefbfaf28) [2], WTF::ValueInContext<JSC::JSValue, JSC::DumpContext> const&, char const (&) [3], WTF::ValueInContext<JSC::PropertyCondition, JSC::DumpContext> const&, char const (&) [2])::'lambda'(WTF::PrintStream&)::operator()(WTF::PrintStream&) const at PrintStream.h:73
    frame #16: 0x00000001152e4a75 JavaScriptCore`void WTF::PrintStream::atomically<void WTF::PrintStream::print<char [2], WTF::ValueInContext<JSC::JSValue, JSC::DumpContext>, char [3], WTF::ValueInContext<JSC::PropertyCondition, JSC::DumpContext>, char [2]>(char const (&) [2], WTF::ValueInContext<JSC::JSValue, JSC::DumpContext> const&, char const (&) [3], WTF::ValueInContext<JSC::PropertyCondition, JSC::DumpContext> const&, char const (&) [2])::'lambda'(WTF::PrintStream&)>(this=0x00007ffeefbfaf28, func=0x00007ffeefbfac88) [2], WTF::ValueInContext<JSC::JSValue, JSC::DumpContext> const&, char const (&) [3], WTF::ValueInContext<JSC::PropertyCondition, JSC::DumpContext> const&, char const (&) [2])::'lambda'(WTF::PrintStream&) const&) at PrintStream.h:64
    frame #17: 0x00000001152dcee8 JavaScriptCore`void WTF::PrintStream::print<char [2], WTF::ValueInContext<JSC::JSValue, JSC::DumpContext>, char [3], WTF::ValueInContext<JSC::PropertyCondition, JSC::DumpContext>, char [2]>(this=0x00007ffeefbfaf28, values=<no value available>, values=0x00007ffeefbfad28, values=<no value available>, values=0x00007ffeefbfad10, values=<no value available>) [2], WTF::ValueInContext<JSC::JSValue, JSC::DumpContext> const&, char const (&) [3], WTF::ValueInContext<JSC::PropertyCondition, JSC::DumpContext> const&, char const (&) [2]) at PrintStream.h:71
    frame #18: 0x00000001152dce51 JavaScriptCore`JSC::ObjectPropertyCondition::dumpInContext(this=0x00000001cdc36938, out=0x00007ffeefbfaf28, context=0x0000000000000000) const at ObjectPropertyCondition.cpp:41
    frame #19: 0x00000001152dcf41 JavaScriptCore`JSC::ObjectPropertyCondition::dump(this=0x00000001cdc36938, out=0x00007ffeefbfaf28) const at ObjectPropertyCondition.cpp:46
    frame #20: 0x000000011522582d JavaScriptCore`void WTF::printInternal<JSC::ObjectPropertyCondition>(out=0x00007ffeefbfaf28, value=0x00000001cdc36938) at PrintStream.h:130
    frame #21: 0x00000001153e62ec JavaScriptCore`void WTF::PrintStream::printImpl<JSC::ObjectPropertyCondition, char [10], JSC::FireDetail>(this=0x00007ffeefbfaf28, value=0x00000001cdc36938, remainingValues=<no value available>, remainingValues=0x00007ffeefbfb160) [10], JSC::FireDetail const&) at PrintStream.h:89
    frame #22: 0x00000001153e62b5 JavaScriptCore`void WTF::PrintStream::printImpl<char [15], JSC::ObjectPropertyCondition, char [10], JSC::FireDetail>(this=0x00007ffeefbfaf28, value=<no value available>, remainingValues=0x00000001cdc36938, remainingValues=<no value available>, remainingValues=0x00007ffeefbfb160) [15], JSC::ObjectPropertyCondition const&, char const (&) [10], JSC::FireDetail const&) at PrintStream.h:90
    frame #23: 0x00000001153e625f JavaScriptCore`void WTF::PrintStream::print<char [15], JSC::ObjectPropertyCondition, char [10], JSC::FireDetail>(this=0x00007ffeefbfae78, out=0x00007ffeefbfaf28) [15], JSC::ObjectPropertyCondition const&, char const (&) [10], JSC::FireDetail const&)::'lambda'(WTF::PrintStream&)::operator()(WTF::PrintStream&) const at PrintStream.h:73
    frame #24: 0x00000001153e6215 JavaScriptCore`void WTF::PrintStream::atomically<void WTF::PrintStream::print<char [15], JSC::ObjectPropertyCondition, char [10], JSC::FireDetail>(char const (&) [15], JSC::ObjectPropertyCondition const&, char const (&) [10], JSC::FireDetail const&)::'lambda'(WTF::PrintStream&)>(this=0x00007ffeefbfaf28, func=0x00007ffeefbfae78) [15], JSC::ObjectPropertyCondition const&, char const (&) [10], JSC::FireDetail const&)::'lambda'(WTF::PrintStream&) const&) at PrintStream.h:64
    frame #25: 0x00000001153e09dc JavaScriptCore`void WTF::PrintStream::print<char [15], JSC::ObjectPropertyCondition, char [10], JSC::FireDetail>(this=0x00007ffeefbfaf28, values=<no value available>, values=0x00000001cdc36938, values=<no value available>, values=0x00007ffeefbfb160) [15], JSC::ObjectPropertyCondition const&, char const (&) [10], JSC::FireDetail const&) at PrintStream.h:71
    frame #26: 0x00000001153e0858 JavaScriptCore`JSC::DFG::AdaptiveInferredPropertyValueWatchpoint::handleFire(this=0x00000001cdc36930, detail=0x00007ffeefbfb160) at DFGAdaptiveInferredPropertyValueWatchpoint.cpp:50
    frame #27: 0x000000011520333c JavaScriptCore`JSC::AdaptiveInferredPropertyValueWatchpointBase::fire(this=0x00000001cdc36930, detail=0x00007ffeefbfb160) at AdaptiveInferredPropertyValueWatchpointBase.cpp:68
    frame #28: 0x0000000115203473 JavaScriptCore`JSC::AdaptiveInferredPropertyValueWatchpointBase::StructureWatchpoint::fireInternal(this=0x00000001cdc36958, detail=0x00007ffeefbfb160) at AdaptiveInferredPropertyValueWatchpointBase.cpp:82
    frame #29: 0x0000000115322842 JavaScriptCore`JSC::Watchpoint::fire(this=0x00000001cdc36958, detail=0x00007ffeefbfb160) at Watchpoint.cpp:55
    frame #30: 0x0000000115322e98 JavaScriptCore`JSC::WatchpointSet::fireAllWatchpoints(this=0x0000000194c64860, vm=0x0000000128000000, detail=0x00007ffeefbfb160) at Watchpoint.cpp:140
    frame #31: 0x0000000115322cf4 JavaScriptCore`JSC::WatchpointSet::fireAllSlow(this=0x0000000194c64860, vm=0x0000000128000000, detail=0x00007ffeefbfb160) at Watchpoint.cpp:91
    frame #32: 0x000000011618b803 JavaScriptCore`void JSC::WatchpointSet::fireAll<JSC::StructureFireDetail>(this=0x0000000194c64860, vm=0x0000000128000000, fireDetails=0x00007ffeefbfb160) at Watchpoint.h:160
    frame #33: 0x000000011617b6ca JavaScriptCore`void JSC::InlineWatchpointSet::fireAll<JSC::StructureFireDetail>(this=0x00000001284f83e0, vm=0x0000000128000000, fireDetails=StructureFireDetail @ 0x00007ffeefbfb160) at Watchpoint.h:299
    frame #34: 0x0000000116176765 JavaScriptCore`JSC::Structure::didTransitionFromThisStructure(this=0x00000001284f8380, deferred=0x0000000000000000) const at Structure.cpp:1073
    frame #35: 0x000000011617638b JavaScriptCore`JSC::Structure::Structure(this=0x00000001bf4ebe20, vm=0x0000000128000000, previous=0x00000001284f8380, deferred=0x0000000000000000) at Structure.cpp:282
    frame #36: 0x00000001161767cd JavaScriptCore`JSC::Structure::Structure(this=0x00000001bf4ebe20, vm=0x0000000128000000, previous=0x00000001284f8380, deferred=0x0000000000000000) at Structure.cpp:259
    frame #37: 0x0000000116177f8c JavaScriptCore`JSC::Structure::create(vm=0x0000000128000000, previous=0x00000001284f8380, deferred=0x0000000000000000) at StructureInlines.h:57
    frame #38: 0x00000001161786ab JavaScriptCore`JSC::Structure::toDictionaryTransition(vm=0x0000000128000000, structure=0x00000001284f8380, kind=UncachedDictionaryKind, deferred=0x0000000000000000) at Structure.cpp:597
    frame #39: 0x00000001161782a6 JavaScriptCore`JSC::Structure::toUncacheableDictionaryTransition(vm=0x0000000128000000, structure=0x00000001284f8380) at Structure.cpp:616
    frame #40: 0x0000000116178244 JavaScriptCore`JSC::Structure::removePropertyTransition(vm=0x0000000128000000, structure=0x00000001284f8380, propertyName=PropertyName @ 0x00007ffeefbfb378, offset=0x00007ffeefbfb3d4) at Structure.cpp:547
    frame #41: 0x0000000116059533 JavaScriptCore`JSC::JSObject::deleteProperty(cell=0x000000012b814fb0, exec=0x00007ffeefbfb6f0, propertyName=PropertyName @ 0x00007ffeefbfb450) at JSObject.cpp:1916
    frame #42: 0x0000000116090d15 JavaScriptCore`JSC::JSSymbolTableObject::deleteProperty(cell=0x000000012b814fb0, exec=0x00007ffeefbfb6f0, propertyName=PropertyName @ 0x00007ffeefbfb4a0) at JSSymbolTableObject.cpp:53
    frame #43: 0x0000000106fa0b73 WebCore`WebCore::JSDOMWindow::deleteProperty(cell=0x000000012b814fb0, exec=0x00007ffeefbfb6f0, propertyName=PropertyName @ 0x00007ffeefbfb4f0) at JSDOMWindowCustom.cpp:318
    frame #44: 0x000000011607cf8d JavaScriptCore`JSC::JSProxy::deleteProperty(cell=0x000000012b804000, exec=0x00007ffeefbfb6f0, propertyName=PropertyName @ 0x00007ffeefbfb548) at JSProxy.cpp:97
    frame #45: 0x0000000115d76189 JavaScriptCore`::llint_slow_path_del_by_val(exec=0x00007ffeefbfb6f0, pc=0x000000013afdef80) at LLIntSlowPaths.cpp:1039
    frame #46: 0x0000000114e425e4 JavaScriptCore`llint_entry at LowLevelInterpreter64.asm:58
    frame #47: 0x0000020cef7db6dd
    frame #48: 0x0000020cef78c80c
    frame #49: 0x0000000114e43932 JavaScriptCore`llint_entry at LowLevelInterpreter.asm:851
    frame #50: 0x0000000114e43932 JavaScriptCore`llint_entry at LowLevelInterpreter.asm:851
    frame #51: 0x0000020cef85315e
    frame #52: 0x0000020cef89db22
    frame #53: 0x0000000114e43932 JavaScriptCore`llint_entry at LowLevelInterpreter.asm:851
    frame #54: 0x0000000114e43932 JavaScriptCore`llint_entry at LowLevelInterpreter.asm:851
    frame #55: 0x0000000114e3b322 JavaScriptCore`vmEntryToJavaScript at LowLevelInterpreter64.asm:257
    frame #56: 0x0000000115c9070a JavaScriptCore`JSC::JITCode::execute(this=0x00000001cdc635b0, vm=0x0000000128000000, protoCallFrame=0x00007ffeefbfbde0) at JITCodeInlines.h:38
    frame #57: 0x0000000115c90ce3 JavaScriptCore`JSC::Interpreter::executeCall(this=0x0000000127800b00, callFrame=0x000000012b814ff8, function=0x0000000199b008d0, callType=JS, callData=0x00007ffeefbfc400, thisValue=JSValue @ 0x00007ffeefbfbef0, args=0x00007ffeefbfc2e0) at Interpreter.cpp:1023
    frame #58: 0x0000000115f1ecda JavaScriptCore`JSC::call(exec=0x000000012b814ff8, functionObject=JSValue @ 0x00007ffeefbfbf70, callType=JS, callData=0x00007ffeefbfc400, thisValue=JSValue @ 0x00007ffeefbfbf68, args=0x00007ffeefbfc2e0) at CallData.cpp:41
    frame #59: 0x0000000115f1edbc JavaScriptCore`JSC::call(exec=0x000000012b814ff8, functionObject=JSValue @ 0x00007ffeefbfc060, callType=JS, callData=0x00007ffeefbfc400, thisValue=JSValue @ 0x00007ffeefbfc058, args=0x00007ffeefbfc2e0, returnedException=0x00007ffeefbfc308) at CallData.cpp:48
    frame #60: 0x0000000115f1f05d JavaScriptCore`JSC::profiledCall(exec=0x000000012b814ff8, reason=Other, functionObject=JSValue @ 0x00007ffeefbfc0f0, callType=JS, callData=0x00007ffeefbfc400, thisValue=JSValue @ 0x00007ffeefbfc0e8, args=0x00007ffeefbfc2e0, returnedException=0x00007ffeefbfc308) at CallData.cpp:67
    frame #61: 0x0000000106f6c49b WebCore`WebCore::JSMainThreadExecState::profiledCall(exec=0x000000012b814ff8, reason=Other, functionObject=JSValue @ 0x00007ffeefbfc180, callType=JS, callData=0x00007ffeefbfc400, thisValue=JSValue @ 0x00007ffeefbfc178, args=0x00007ffeefbfc2e0, returnedException=0x00007ffeefbfc308) at JSMainThreadExecState.h:72
    frame #62: 0x0000000106faf756 WebCore`WebCore::JSEventListener::handleEvent(this=0x000000012d5089f0, scriptExecutionContext=0x0000000152800000, event=0x00000001cdca0030) at JSEventListener.cpp:169
    frame #63: 0x0000000107535822 WebCore`WebCore::EventTarget::fireEventListeners(this=0x0000000169100840, event=0x00000001cdca0030, listeners={ size = 1, capacity = 0 }) at EventTarget.cpp:292
    frame #64: 0x000000010753163a WebCore`WebCore::EventTarget::fireEventListeners(this=0x0000000169100840, event=0x00000001cdca0030) at EventTarget.cpp:234
    frame #65: 0x00000001075915f4 WebCore`WebCore::Node::handleLocalEvents(this=0x0000000169100840, event=0x00000001cdca0030) at Node.cpp:2321
    frame #66: 0x0000000107518ebd WebCore`WebCore::EventContext::handleLocalEvents(this=0x00000001cdc9f810, event=0x00000001cdca0030) const at EventContext.cpp:54
    frame #67: 0x000000010752d3c6 WebCore`WebCore::dispatchEventInDOM(event=0x00000001cdca0030, path=0x00007ffeefbfc7e8) at EventDispatcher.cpp:91
    frame #68: 0x000000010752cef1 WebCore`WebCore::EventDispatcher::dispatchEvent(node=0x0000000169100840, event=0x00000001cdca0030) at EventDispatcher.cpp:159
    frame #69: 0x000000010759164d WebCore`WebCore::Node::dispatchEvent(this=0x0000000169100840, event=0x00000001cdca0030) at Node.cpp:2331
    frame #70: 0x00000001078e8b7e WebCore`WebCore::HTMLScriptElement::dispatchLoadEvent(this=0x0000000169100840) at HTMLScriptElement.cpp:179
    frame #71: 0x00000001075ccbe0 WebCore`WebCore::ScriptElement::dispatchLoadEventRespectingUserGestureIndicator(this=0x0000000169100840) at ScriptElement.cpp:410
    frame #72: 0x00000001075cce0b WebCore`WebCore::ScriptElement::executeScriptAndDispatchEvent(this=0x0000000169100840, loadableScript=0x000000012d508ab0) at ScriptElement.cpp:427
    frame #73: 0x00000001075cced6 WebCore`WebCore::ScriptElement::executePendingScript(this=0x0000000169100840, pendingScript=0x000000012d508b80) at ScriptElement.cpp:434
    frame #74: 0x00000001075e644b WebCore`WebCore::ScriptRunner::timerFired(this=0x00000001229212c0) at ScriptRunner.cpp:121
    frame #75: 0x00000001075ffa91 WebCore`WTF::Function<void ()>::CallableWrapper<std::__1::__bind<void (WebCore::ScriptRunner::*&)(), WebCore::ScriptRunner*> >::call() [inlined] decltype(__f=0x0000000122921378, __a0=0x0000000122921388)).*fp(std::__1::forward<>(fp1))) std::__1::__invoke<void (WebCore::ScriptRunner::*&)(), WebCore::ScriptRunner*&, void>(void (WebCore::ScriptRunner::*&&&)(), WebCore::ScriptRunner*&&&) at type_traits:4264
    frame #76: 0x00000001075ffa12 WebCore`WTF::Function<void ()>::CallableWrapper<std::__1::__bind<void (WebCore::ScriptRunner::*&)(), WebCore::ScriptRunner*> >::call() [inlined] std::__1::__bind_return<void (WebCore::ScriptRunner::*)(), std::__1::tuple<WebCore::ScriptRunner*>, std::__1::tuple<>, __is_valid_bind_return<void (WebCore::ScriptRunner::*)(), std::__1::tuple<WebCore::ScriptRunner*>, std::__1::tuple<> >::value>::type std::__1::__apply_functor<void (__f=0x0000000122921378, __bound_args=0x0000000122921388, __args=0x00007ffeefbfcc18)(), std::__1::tuple<WebCore::ScriptRunner*>, 0ul, std::__1::tuple<> >(void (WebCore::ScriptRunner::*&)(), std::__1::tuple<WebCore::ScriptRunner*>&, std::__1::__tuple_indices<0ul>, std::__1::tuple<>&&) at functional:2224
    frame #77: 0x00000001075ff9e2 WebCore`WTF::Function<void ()>::CallableWrapper<std::__1::__bind<void (WebCore::ScriptRunner::*&)(), WebCore::ScriptRunner*> >::call() [inlined] std::__1::__bind_return<void (WebCore::ScriptRunner::*)(), std::__1::tuple<WebCore::ScriptRunner*>, std::__1::tuple<>, __is_valid_bind_return<void (WebCore::ScriptRunner::*)(), std::__1::tuple<WebCore::ScriptRunner*>, std::__1::tuple<> >::value>::type std::__1::__bind<void (this=0x0000000122921378)(), WebCore::ScriptRunner*>::operator()<>() at functional:2257
    frame #78: 0x00000001075ff9bf WebCore`WTF::Function<void ()>::CallableWrapper<std::__1::__bind<void (this=0x0000000122921370)(), WebCore::ScriptRunner*> >::call() at Function.h:101
    frame #79: 0x00000001056d0c0b WebCore`WTF::Function<void ()>::operator(this=0x0000000122921358)() const at Function.h:56
    frame #80: 0x0000000105722a39 WebCore`WebCore::Timer::fired(this=0x0000000122921318) at Timer.h:131
    frame #81: 0x0000000107fd9084 WebCore`WebCore::ThreadTimers::sharedTimerFiredInternal(this=0x0000000122908600) at ThreadTimers.cpp:117
    frame #82: 0x0000000107feea01 WebCore`WebCore::ThreadTimers::setSharedTimer(this=0x0000000122908638)::$_0::operator()() const at ThreadTimers.cpp:69
    frame #83: 0x0000000107fee9b9 WebCore`WTF::Function<void ()>::CallableWrapper<WebCore::ThreadTimers::setSharedTimer(this=0x0000000122908630)::$_0>::call() at Function.h:101
    frame #84: 0x00000001056d0c0b WebCore`WTF::Function<void ()>::operator(this=0x000000010a237490)() const at Function.h:56
    frame #85: 0x0000000107fb1205 WebCore`WebCore::MainThreadSharedTimer::fired(this=0x000000010a237488) at MainThreadSharedTimer.cpp:54
    frame #86: 0x0000000108055079 WebCore`WebCore::timerFired((null)=0x0000614000160e40, (null)=0x0000000000000000) at MainThreadSharedTimerCF.cpp:74
    frame #87: 0x00007fff56a38064 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
    frame #88: 0x00007fff56a37cd7 CoreFoundation`__CFRunLoopDoTimer + 1095
    frame #89: 0x00007fff56a377da CoreFoundation`__CFRunLoopDoTimers + 346
    frame #90: 0x00007fff56a2edab CoreFoundation`__CFRunLoopRun + 2427
    frame #91: 0x00007fff56a2e1a3 CoreFoundation`CFRunLoopRunSpecific + 483
    frame #92: 0x00007fff55d16d96 HIToolbox`RunCurrentEventLoopInMode + 286
    frame #93: 0x00007fff55d16b06 HIToolbox`ReceiveNextEventCommon + 613
    frame #94: 0x00007fff55d16884 HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 64
    frame #95: 0x00007fff53fc9a73 AppKit`_DPSNextEvent + 2085
    frame #96: 0x00007fff5475fe34 AppKit`-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 3044
    frame #97: 0x00007fff53fbe885 AppKit`-[NSApplication run] + 764
    frame #98: 0x00007fff53f8da72 AppKit`NSApplicationMain + 804
    frame #99: 0x0000000100005cc9 MiniBrowser`main(argc=5, argv=0x00007ffeefbff618) at main.m:32
    frame #100: 0x00007fff7ed77015 libdyld.dylib`start + 1
    frame #101: 0x00007fff7ed77015 libdyld.dylib`start + 1
(lldb)
Comment 1 Simon Fraser (smfr) 2018-06-09 17:21:20 PDT
Should DFG::AdaptiveInferredPropertyValueWatchpoint::handleFire() really be doing:

    StringPrintStream out;
    out.print("Adaptation of ", key(), " failed: ", detail);
Comment 2 Simon Fraser (smfr) 2018-06-09 17:23:35 PDT
This code path is responsible for a bunch of memory allocations:

fastMalloc allocation 8718
1   0x114d8bcc1 WTF::fastMalloc(unsigned long)
2   0x114de71a4 WTF::StringPrintStream::increaseSize(unsigned long)
3   0x114de6fcd WTF::StringPrintStream::vprintf(char const*, __va_list_tag*)
4   0x114dc5ba0 WTF::PrintStream::printf(char const*, ...)
5   0x114dc5dc9 WTF::printInternal(WTF::PrintStream&, char const*)
6   0x114dc69b2 void WTF::PrintStream::printImpl<char const*>(char const* const&)
7   0x114dc6970 void WTF::PrintStream::print<char const*>(char const* const&)::'lambda'(WTF::PrintStream&)::operator()(WTF::PrintStream&) const
8   0x114dc6935 void WTF::PrintStream::atomically<void WTF::PrintStream::print<char const*>(char const* const&)::'lambda'(WTF::PrintStream&)>(void WTF::PrintStream::print<char const*>(char const* const&)::'lambda'(WTF::PrintStream&) const&)
9   0x114dc5f58 void WTF::PrintStream::print<char const*>(char const* const&)
10  0x114dc5f25 WTF::printInternal(WTF::PrintStream&, WTF::CString const&)
11  0x114dc681f void WTF::PrintStream::printImpl<WTF::CString>(WTF::CString const&)
12  0x114dc67e0 void WTF::PrintStream::print<WTF::CString>(WTF::CString const&)::'lambda'(WTF::PrintStream&)::operator()(WTF::PrintStream&) const
13  0x114dc67a5 void WTF::PrintStream::atomically<void WTF::PrintStream::print<WTF::CString>(WTF::CString const&)::'lambda'(WTF::PrintStream&)>(void WTF::PrintStream::print<WTF::CString>(WTF::CString const&)::'lambda'(WTF::PrintStream&) const&)
14  0x114dc64f8 void WTF::PrintStream::print<WTF::CString>(WTF::CString const&)
15  0x114dc5ec1 WTF::printExpectedCStringHelper(WTF::PrintStream&, char const*, std::experimental::fundamentals_v3::expected<WTF::CString, WTF::UTF8ConversionError>)
16  0x114dc600b WTF::printInternal(WTF::PrintStream&, WTF::StringImpl const*)
17  0x115222ce0 WTF::printInternal(WTF::PrintStream&, WTF::UniquedStringImpl const*)
18  0x115222c9d WTF::printInternal(WTF::PrintStream&, WTF::UniquedStringImpl*)
19  0x11618bcef void WTF::PrintStream::printImpl<WTF::UniquedStringImpl*, char [2], int>(WTF::UniquedStringImpl* const&, char const (&) [2], int const&)
20  0x11618bcb5 void WTF::PrintStream::printImpl<WTF::CommaPrinter, WTF::UniquedStringImpl*, char [2], int>(WTF::CommaPrinter const&, WTF::UniquedStringImpl* const&, char const (&) [2], int const&)
21  0x11618bc5f void WTF::PrintStream::print<WTF::CommaPrinter, WTF::UniquedStringImpl*, char [2], int>(WTF::CommaPrinter const&, WTF::UniquedStringImpl* const&, char const (&) [2], int const&)::'lambda'(WTF::PrintStream&)::operator()(WTF::PrintStream&) const
22  0x11618bc15 void WTF::PrintStream::atomically<void WTF::PrintStream::print<WTF::CommaPrinter, WTF::UniquedStringImpl*, char [2], int>(WTF::CommaPrinter const&, WTF::UniquedStringImpl* const&, char const (&) [2], int const&)::'lambda'(WTF::PrintStream&)>(void WTF::PrintStream::print<WTF::CommaPrinter, WTF::UniquedStringImpl*, char [2], int>(WTF::CommaPrinter const&, WTF::UniquedStringImpl* const&, char const (&) [2], int const&)::'lambda'(WTF::PrintStream&) const&)
23  0x11618bbcc void WTF::PrintStream::print<WTF::CommaPrinter, WTF::UniquedStringImpl*, char [2], int>(WTF::CommaPrinter const&, WTF::UniquedStringImpl* const&, char const (&) [2], int const&)
24  0x11618bb6b JSC::Structure::dump(WTF::PrintStream&) const::$_7::operator()(JSC::PropertyMapEntry const&) const
25  0x11617c45f void JSC::Structure::forEachPropertyConcurrently<JSC::Structure::dump(WTF::PrintStream&) const::$_7>(JSC::Structure::dump(WTF::PrintStream&) const::$_7 const&)
26  0x11617c150 JSC::Structure::dump(WTF::PrintStream&) const
27  0x11617c6aa JSC::Structure::dumpInContext(WTF::PrintStream&, JSC::DumpContext*) const
28  0x115309d57 WTF::ValueInContext<JSC::Structure, JSC::DumpContext>::dump(WTF::PrintStream&) const
29  0x115309d1d void WTF::printInternal<WTF::ValueInContext<JSC::Structure, JSC::DumpContext> >(WTF::PrintStream&, WTF::ValueInContext<JSC::Structure, JSC::DumpContext> const&)
Comment 3 Simon Fraser (smfr) 2018-06-09 17:32:32 PDT
These are the > 1024 byte allocations I see under this call stack:

fastMalloc allocation 1080
fastMalloc allocation 2162
fastMalloc allocation 4354
fastMalloc allocation 8718
fastMalloc allocation 5461
fastMalloc allocation 1080
fastMalloc allocation 2162
fastMalloc allocation 4354
fastMalloc allocation 8718
fastMalloc allocation 5461
fastMalloc allocation 1080
fastMalloc allocation 2162
fastMalloc allocation 4354
fastMalloc allocation 8718
fastMalloc allocation 5461

That's a lot of memory churn for a string that no-one cares about.
Comment 4 Radar WebKit Bug Importer 2018-06-09 17:33:20 PDT
<rdar://problem/40974404>
Comment 5 Simon Fraser (smfr) 2018-06-09 17:39:15 PDT
AdaptiveStructureWatchpoint::fireInternal() does this too.
Comment 6 Simon Fraser (smfr) 2018-06-09 17:39:47 PDT
And ArrayPrototypeAdaptiveInferredPropertyWatchpoint::handleFire()
Comment 7 Yusuke Suzuki 2018-06-10 05:40:09 PDT
Nice, yeah, creating these strings is a pure overhead if we do not dump watch point firing information.
Comment 8 Keith Miller 2018-06-11 17:07:44 PDT
Created attachment 342489 [details]
Patch
Comment 9 WebKit Commit Bot 2018-06-11 18:27:03 PDT
Comment on attachment 342489 [details]
Patch

Rejecting attachment 342489 [details] from commit-queue.

Number of test failures exceeded the failure limit.
Full output: http://webkit-queues.webkit.org/results/8139751
Comment 10 WebKit Commit Bot 2018-06-11 18:27:04 PDT
Created attachment 342497 [details]
Archive of layout-test-results from webkit-cq-02 for mac-sierra

The attached test failures were seen while running run-webkit-tests on the commit-queue.
Bot: webkit-cq-02  Port: mac-sierra  Platform: Mac OS X 10.12.6
Comment 11 Keith Miller 2018-06-11 18:40:50 PDT
Ugh, none of those failures are probably relevant to my patch... That's what I get for using cq.
Comment 12 Keith Miller 2018-06-11 18:46:36 PDT
Committed r232738: <https://trac.webkit.org/changeset/232738>