NEW 259628
Poor Image loading while scrolling and show black
https://bugs.webkit.org/show_bug.cgi?id=259628
Summary Poor Image loading while scrolling and show black
Ahmad Saleem
Reported 2023-07-29 08:10:39 PDT
Hi Team, While going through restaurant page, I notice Safari is loading picture significantly slowly compared to Chrome Canary using Private Window as well. Link: https://restaurant.saltnpepper.com.pk/menu Appreciate if someone can look into it. Thanks!
Attachments
Radar WebKit Bug Importer
Comment 1 2023-08-05 08:11:12 PDT
Said Abou-Hallawa
Comment 2 2023-08-07 09:59:56 PDT
The src attribute is changed while scrolling the page. Below the JS runs through Document::runScrollSteps(). #0 0x00000007de546a6e in WebCore::HTMLImageElement::attributeChanged(WebCore::QualifiedName const&, WTF::AtomString const&, WTF::AtomString const&, WebCore::Element::AttributeModificationReason) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/html/HTMLImageElement.cpp:357 #1 0x00000007de11d9e9 in WebCore::Element::notifyAttributeChanged(WebCore::QualifiedName const&, WTF::AtomString const&, WTF::AtomString const&, WebCore::Element::AttributeModificationReason) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/dom/Element.cpp:2065 #2 0x00000007de1264b0 in WebCore::Element::didAddAttribute(WebCore::QualifiedName const&, WTF::AtomString const&) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/dom/Element.cpp:4818 #3 0x00000007de11d6ca in WebCore::Element::addAttributeInternal(WebCore::QualifiedName const&, WTF::AtomString const&, WebCore::Element::InSynchronizationOfLazyAttribute) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/dom/Element.cpp:3365 #4 0x00000007de11d0fa in WebCore::Element::setAttributeInternal(unsigned int, WebCore::QualifiedName const&, WTF::AtomString const&, WebCore::Element::InSynchronizationOfLazyAttribute) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/dom/Element.cpp:2007 #5 0x00000007de11d742 in WebCore::Element::setAttributeWithoutSynchronization(WebCore::QualifiedName const&, WTF::AtomString const&) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/dom/Element.cpp:1987 #6 0x00000007db8c104b in WebCore::setJSHTMLImageElement_srcSetter(JSC::JSGlobalObject&, WebCore::JSHTMLImageElement&, JSC::JSValue)::'lambda'()::operator()() const at /Volumes/Data/WebKit/OpenSource/WebKitBuild/Debug/DerivedSources/WebCore/JSHTMLImageElement.cpp:400 #7 0x00000007db8c0ffd in void WebCore::invokeFunctorPropagatingExceptionIfNecessary<WebCore::setJSHTMLImageElement_srcSetter(JSC::JSGlobalObject&, WebCore::JSHTMLImageElement&, JSC::JSValue)::'lambda'()>(JSC::JSGlobalObject&, JSC::ThrowScope&, WebCore::setJSHTMLImageElement_srcSetter(JSC::JSGlobalObject&, WebCore::JSHTMLImageElement&, JSC::JSValue)::'lambda'()&&) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMExceptionHandling.h:100 #8 0x00000007db8c0f92 in WebCore::setJSHTMLImageElement_srcSetter(JSC::JSGlobalObject&, WebCore::JSHTMLImageElement&, JSC::JSValue) at /Volumes/Data/WebKit/OpenSource/WebKitBuild/Debug/DerivedSources/WebCore/JSHTMLImageElement.cpp:399 #9 0x00000007db7eef76 in bool WebCore::IDLAttribute<WebCore::JSHTMLImageElement>::set<&WebCore::setJSHTMLImageElement_srcSetter(JSC::JSGlobalObject&, WebCore::JSHTMLImageElement&, JSC::JSValue), (WebCore::CastedThisErrorBehavior)0>(JSC::JSGlobalObject&, long long, long long, JSC::PropertyName) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMAttribute.h:55 #10 0x00000007db7eedf5 in WebCore::setJSHTMLImageElement_src(JSC::JSGlobalObject*, long long, long long, JSC::PropertyName) at /Volumes/Data/WebKit/OpenSource/WebKitBuild/Debug/DerivedSources/WebCore/JSHTMLImageElement.cpp:407 #11 0x00000007c58ea9c0 in WTF::FunctionPtr<(WTF::PtrTag)30177, bool (JSC::JSGlobalObject*, long long, long long, JSC::PropertyName), (WTF::FunctionAttributes)1>::operator()(JSC::JSGlobalObject*, long long, long long, JSC::PropertyName) const at /Volumes/Data/WebKit/OpenSource/WebKitBuild/Debug/usr/local/include/wtf/FunctionPtr.h:104 #12 0x00000007c58ea19e in JSC::JSObject::putInlineSlow(JSC::JSGlobalObject*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&) at /Volumes/Data/WebKit/OpenSource/Source/JavaScriptCore/runtime/JSObject.cpp:837 #13 0x00000007c58e9968 in JSC::JSObject::putInlineForJSObject(JSC::JSCell*, JSC::JSGlobalObject*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&) at /Volumes/Data/WebKit/OpenSource/Source/JavaScriptCore/runtime/JSObjectInlines.h:299 #14 0x00000007c4fc3246 in JSC::JSCell::putInline(JSC::JSGlobalObject*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&) at /Volumes/Data/WebKit/OpenSource/Source/JavaScriptCore/runtime/JSCellInlines.h:475 #15 0x00000007c4fc4010 in JSC::JSValue::putInline(JSC::JSGlobalObject*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&) at /Volumes/Data/WebKit/OpenSource/Source/JavaScriptCore/runtime/JSCJSValueInlines.h:1160 #16 0x00000007c5472ac8 in ::operationPutByIdSloppyOptimize(JSC::JSGlobalObject *, JSC::StructureStubInfo *, JSC::EncodedJSValue, JSC::EncodedJSValue, uintptr_t) at /Volumes/Data/WebKit/OpenSource/Source/JavaScriptCore/jit/JITOperations.cpp:1015 #17 0x000038c8aa4d5183 in 0x38c8aa4d5183 () #18 0x00000007c426c584 in llint_entry () #19 0x00000007c4246b1f in vmEntryToJavaScript () #20 0x00000007c53a5f1b in JSC::Interpreter::executeCallImpl(JSC::VM&, JSC::JSObject*, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) at /Volumes/Data/WebKit/OpenSource/Source/JavaScriptCore/interpreter/Interpreter.cpp:1119 #21 0x00000007c53a6020 in JSC::Interpreter::executeCall(JSC::JSObject*, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) at /Volumes/Data/WebKit/OpenSource/Source/JavaScriptCore/interpreter/Interpreter.cpp:1128 #22 0x00000007c565734d in JSC::call(JSC::JSGlobalObject*, JSC::JSValue, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) at /Volumes/Data/WebKit/OpenSource/Source/JavaScriptCore/runtime/CallData.cpp:57 #23 0x00000007c565742d in JSC::call(JSC::JSGlobalObject*, JSC::JSValue, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&, WTF::NakedPtr<JSC::Exception>&) at /Volumes/Data/WebKit/OpenSource/Source/JavaScriptCore/runtime/CallData.cpp:64 #24 0x00000007c56576ed in JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&, WTF::NakedPtr<JSC::Exception>&) at /Volumes/Data/WebKit/OpenSource/Source/JavaScriptCore/runtime/CallData.cpp:85 #25 0x00000007dd83cb2c in WebCore::JSExecState::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&, WTF::NakedPtr<JSC::Exception>&) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSExecState.h:91 #26 0x00000007dd85ccc7 in WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext&, WebCore::Event&) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSEventListener.cpp:224 #27 0x00000007de17983e in WebCore::EventTarget::innerInvokeEventListeners(WebCore::Event&, WTF::Vector<WTF::RefPtr<WebCore::RegisteredEventListener, WTF::RawPtrTraits<WebCore::RegisteredEventListener>, WTF::DefaultRefDerefTraits<WebCore::RegisteredEventListener> >, 1ul, WTF::CrashOnOverflow, 2ul, WTF::FastMalloc>, WebCore::EventTarget::EventInvokePhase) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/dom/EventTarget.cpp:372 #28 0x00000007de17929b in WebCore::EventTarget::fireEventListeners(WebCore::Event&, WebCore::EventTarget::EventInvokePhase) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/dom/EventTarget.cpp:304 #29 0x00000007de16152c in WebCore::EventContext::handleLocalEvents(WebCore::Event&, WebCore::EventTarget::EventInvokePhase) const at /Volumes/Data/WebKit/OpenSource/Source/WebCore/dom/EventContext.cpp:76 #30 0x00000007de1627e6 in WebCore::dispatchEventInDOM(WebCore::Event&, WebCore::EventPath const&) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/dom/EventDispatcher.cpp:108 #31 0x00000007de161f50 in WebCore::EventDispatcher::dispatchEvent(WebCore::Node&, WebCore::Event&) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/dom/EventDispatcher.cpp:194 #32 0x00000007de1faa7d in WebCore::Node::dispatchEvent(WebCore::Event&) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/dom/Node.cpp:2448 #33 0x00000007de05faaf in WebCore::Document::runScrollSteps() at /Volumes/Data/WebKit/OpenSource/Source/WebCore/dom/Document.cpp:4575 #34 0x00000007def18819 in WebCore::Page::updateRendering()::$_25::operator()(WebCore::Document&) const at /Volumes/Data/WebKit/OpenSource/Source/WebCore/page/Page.cpp:1787 #35 0x00000007def187d1 in WTF::Detail::CallableWrapper<WebCore::Page::updateRendering()::$_25, void, WebCore::Document&>::call(WebCore::Document&) at /Volumes/Data/WebKit/OpenSource/WebKitBuild/Debug/usr/local/include/wtf/Function.h:53 #36 0x00000007de25b1ba in WTF::Function<void (WebCore::Document&)>::operator()(WebCore::Document&) const at /Volumes/Data/WebKit/OpenSource/WebKitBuild/Debug/usr/local/include/wtf/Function.h:82 #37 0x00000007deee2206 in WebCore::Page::forEachDocumentFromMainFrame(WebCore::LocalFrame const&, WTF::Function<void (WebCore::Document&)> const&) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/page/Page.cpp:3810 #38 0x00000007deed08bd in WebCore::Page::forEachDocument(WTF::Function<void (WebCore::Document&)> const&) const at /Volumes/Data/WebKit/OpenSource/Source/WebCore/page/Page.cpp:3816 #39 0x00000007deed8fc3 in WebCore::Page::updateRendering()::$_20::operator()(WebCore::RenderingUpdateStep, WTF::Function<void (WebCore::Document&)> const&) const at /Volumes/Data/WebKit/OpenSource/Source/WebCore/page/Page.cpp:1755 #40 0x00000007deed8a62 in WebCore::Page::updateRendering() at /Volumes/Data/WebKit/OpenSource/Source/WebCore/page/Page.cpp:1786 #41 0x00000007a7ea0bc1 in WebKit::WebPage::updateRendering() at /Volumes/Data/WebKit/OpenSource/Source/WebKit/WebProcess/WebPage/WebPage.cpp:4795 #42 0x00000007a713348c in WebKit::TiledCoreAnimationDrawingArea::updateRendering(WebKit::TiledCoreAnimationDrawingArea::UpdateRenderingType) at /Volumes/Data/WebKit/OpenSource/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:355 #43 0x00000007a71377f7 in WebKit::TiledCoreAnimationDrawingArea::renderingUpdateRunLoopCallback() at /Volumes/Data/WebKit/OpenSource/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:862 #44 0x00000007a7139498 in WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea(WebKit::WebPage&, WebKit::WebPageCreationParameters const&)::$_0::operator()() const at /Volumes/Data/WebKit/OpenSource/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:90 #45 0x00000007a7139459 in WTF::Detail::CallableWrapper<WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea(WebKit::WebPage&, WebKit::WebPageCreationParameters const&)::$_0, void>::call() at /Volumes/Data/WebKit/OpenSource/WebKitBuild/Debug/usr/local/include/wtf/Function.h:53 #46 0x00000007da875702 in WTF::Function<void ()>::operator()() const at /Volumes/Data/WebKit/OpenSource/WebKitBuild/Debug/usr/local/include/wtf/Function.h:82 #47 0x00000007df0d3982 in WebCore::RunLoopObserver::runLoopObserverFired() at /Volumes/Data/WebKit/OpenSource/Source/WebCore/platform/RunLoopObserver.cpp:41 #48 0x00000007df1a175d in WebCore::RunLoopObserver::runLoopObserverFired(__CFRunLoopObserver*, unsigned long, void*) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/platform/cf/RunLoopObserverCF.cpp:72 #49 0x00007ff808339774 in __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ ()
Ahmad Saleem
Comment 3 2024-02-27 03:18:06 PST
WebKit ToT is quite fast now - I think @Yusuke's patch might have helped. Commit - https://github.com/WebKit/WebKit/commit/88f5d6430abe12164eec7acf3a0993ef1ec67d0a Even STP189 is better. @Said - Should we close this? Or keep it as 'test' site to improve further more?
Note You need to log in before you can comment on or make changes to this bug.