Bug 255009

Summary: REGRESSION ( 262547@main?): ASSERTION FAILED: !m_size.isEmpty() : [ macOS Debug ] 4x fast/attachment tests are constant crashes.
Product: WebKit Reporter: Bri Harris <bharris9>
Component: New BugsAssignee: Nobody <webkit-unassigned>
Status: RESOLVED DUPLICATE    
Severity: Normal CC: sabouhallawa, simon.fraser, webkit-bot-watchers-bugzilla, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: Other   
Hardware: Unspecified   
OS: Unspecified   

Description Bri Harris 2023-04-04 14:34:10 PDT
The following 4 fast/attachment tests:

fast/attachment/attachment-action.html
fast/attachment/attachment-respects-css-size.html
fast/attachment/attachment-subtitle-resize.html
fast/attachment/cocoa/wide-attachment-rendering.html

are constant crashes on macOS Debug on WK2 only.

HISTORY:
https://results.webkit.org/?suite=layout-tests&suite=layout-tests&suite=layout-tests&suite=layout-tests&test=fast%2Fattachment%2Fattachment-action.html&test=fast%2Fattachment%2Fattachment-respects-css-size.html&test=fast%2Fattachment%2Fattachment-subtitle-resize.html&test=fast%2Fattachment%2Fcocoa%2Fwide-attachment-rendering.html


STDERR TEXT: 

LocalCurrentGraphicsContext is setting the global context to nil because the provided GraphicsContext does not have a platform context (likely display list recording)
ASSERTION FAILED: !m_size.isEmpty()
/Volumes/Data/worker/Apple-Ventura-Debug-Build/build/Source/WebKit/Shared/ShareableBitmap.cpp(50) : WebKit::ShareableBitmapConfiguration::ShareableBitmapConfiguration(const WebCore::IntSize &, std::optional<DestinationColorSpace>, bool)
LocalCurrentGraphicsContext is setting the global context to nil because the provided GraphicsContext does not have a platform context (likely display list recording)
1   0x11a25d819 WTFCrash
2   0x151b3ae2b WTFCrashWithInfo(int, char const*, char const*, int)
3   0x153359cdd WebKit::ShareableBitmapConfiguration::ShareableBitmapConfiguration(WebCore::IntSize const&, std::__1::optional<WebCore::DestinationColorSpace>, bool)
4   0x153359dac WebKit::ShareableBitmapConfiguration::ShareableBitmapConfiguration(WebCore::IntSize const&, std::__1::optional<WebCore::DestinationColorSpace>, bool)
5   0x1532fcd11 WebKit::convertPlatformImageToBitmap(NSImage*, WebCore::FloatSize const&)
6   0x1532fcb9c WebKit::WebPageProxy::iconForAttachment(WTF::String const&, WTF::String const&, WTF::String const&, WebCore::FloatSize&)
7   0x1539342df WebKit::WebPageProxy::requestAttachmentIcon(WTF::String const&, WTF::String const&, WTF::String const&, WTF::String const&, WebCore::FloatSize const&)::$_12::operator()() const
8   0x15393414c WebKit::WebPageProxy::requestAttachmentIcon(WTF::String const&, WTF::String const&, WTF::String const&, WTF::String const&, WebCore::FloatSize const&)
9   0x1548a78f4 auto void IPC::callMemberFunction<WebKit::WebPageProxy, WebKit::WebPageProxy, void (WTF::String const&, WTF::String const&, WTF::String const&, WTF::String const&, WebCore::FloatSize const&), std::__1::tuple<WTF::String, WTF::String, WTF::String, WTF::String, WebCore::FloatSize> >(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(WTF::String const&, WTF::String const&, WTF::String const&, WTF::String const&, WebCore::FloatSize const&), std::__1::tuple<WTF::String, WTF::String, WTF::String, WTF::String, WebCore::FloatSize>&&)::'lambda'(auto&&...)::operator()<WTF::String, WTF::String, WTF::String, WTF::String, WebCore::FloatSize>(auto&&...) const
10  0x1548a776d decltype(static_cast<WebKit::WebPageProxy>(fp)(static_cast<WTF::String>(fp0), static_cast<WTF::String>(fp0), static_cast<WTF::String>(fp0), static_cast<WTF::String>(fp0), static_cast<WebCore::FloatSize>(fp0))) std::__1::__invoke_constexpr<void IPC::callMemberFunction<WebKit::WebPageProxy, WebKit::WebPageProxy, void (WTF::String const&, WTF::String const&, WTF::String const&, WTF::String const&, WebCore::FloatSize const&), std::__1::tuple<WTF::String, WTF::String, WTF::String, WTF::String, WebCore::FloatSize> >(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(WTF::String const&, WTF::String const&, WTF::String const&, WTF::String const&, WebCore::FloatSize const&), std::__1::tuple<WTF::String, WTF::String, WTF::String, WTF::String, WebCore::FloatSize>&&)::'lambda'(auto&&...), WTF::String, WTF::String, WTF::String, WTF::String, WebCore::FloatSize>(WebKit::WebPageProxy&&, WTF::String&&, WTF::String&&, WTF::String&&, WTF::String&&, WebCore::FloatSize&&)
11  0x1548a770e decltype(auto) std::__1::__apply_tuple_impl<void IPC::callMemberFunction<WebKit::WebPageProxy, WebKit::WebPageProxy, void (WTF::String const&, WTF::String const&, WTF::String const&, WTF::String const&, WebCore::FloatSize const&), std::__1::tuple<WTF::String, WTF::String, WTF::String, WTF::String, WebCore::FloatSize> >(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(WTF::String const&, WTF::String const&, WTF::String const&, WTF::String const&, WebCore::FloatSize const&), std::__1::tuple<WTF::String, WTF::String, WTF::String, WTF::String, WebCore::FloatSize>&&)::'lambda'(auto&&...), std::__1::tuple<WTF::String, WTF::String, WTF::String, WTF::String, WebCore::FloatSize>, 0ul, 1ul, 2ul, 3ul, 4ul>(WebKit::WebPageProxy&&, WebKit::WebPageProxy&&, std::__1::__tuple_indices<0ul, 1ul, 2ul, 3ul, 4ul>)
12  0x1548a7652 decltype(auto) std::__1::apply<void IPC::callMemberFunction<WebKit::WebPageProxy, WebKit::WebPageProxy, void (WTF::String const&, WTF::String const&, WTF::String const&, WTF::String const&, WebCore::FloatSize const&), std::__1::tuple<WTF::String, WTF::String, WTF::String, WTF::String, WebCore::FloatSize> >(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(WTF::String const&, WTF::String const&, WTF::String const&, WTF::String const&, WebCore::FloatSize const&), std::__1::tuple<WTF::String, WTF::String, WTF::String, WTF::String, WebCore::FloatSize>&&)::'lambda'(auto&&...), std::__1::tuple<WTF::String, WTF::String, WTF::String, WTF::String, WebCore::FloatSize> >(WebKit::WebPageProxy&&, WebKit::WebPageProxy&&)
13  0x1548a65fd void IPC::callMemberFunction<WebKit::WebPageProxy, WebKit::WebPageProxy, void (WTF::String const&, WTF::String const&, WTF::String const&, WTF::String const&, WebCore::FloatSize const&), std::__1::tuple<WTF::String, WTF::String, WTF::String, WTF::String, WebCore::FloatSize> >(WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(WTF::String const&, WTF::String const&, WTF::String const&, WTF::String const&, WebCore::FloatSize const&), std::__1::tuple<WTF::String, WTF::String, WTF::String, WTF::String, WebCore::FloatSize>&&)
14  0x154814aa8 void IPC::handleMessage<Messages::WebPageProxy::RequestAttachmentIcon, WebKit::WebPageProxy, WebKit::WebPageProxy, void (WTF::String const&, WTF::String const&, WTF::String const&, WTF::String const&, WebCore::FloatSize const&)>(IPC::Connection&, IPC::Decoder&, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(WTF::String const&, WTF::String const&, WTF::String const&, WTF::String const&, WebCore::FloatSize const&))
15  0x154804185 WebKit::WebPageProxy::didReceiveMessage(IPC::Connection&, IPC::Decoder&)
16  0x154be04f3 IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&, IPC::Decoder&)
17  0x153707f9c WebKit::AuxiliaryProcessProxy::dispatchMessage(IPC::Connection&, IPC::Decoder&)
18  0x153a46809 WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&, IPC::Decoder&)
19  0x154bb44ac IPC::Connection::dispatchMessage(IPC::Decoder&)
20  0x154bb48c0 IPC::Connection::dispatchMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)
21  0x154bb5014 IPC::Connection::dispatchIncomingMessages()
22  0x154bd1a4d IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)::$_16::operator()() const
23  0x154bd1999 WTF::Detail::CallableWrapper<IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)::$_16, void>::call()
24  0x11a28d8a2 WTF::Function<void ()>::operator()() const
25  0x11a336bee WTF::RunLoop::performWork()
26  0x11a33c86e WTF::RunLoop::performWork(void*)
27  0x7ff8110e0b78 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
28  0x7ff8110e0b27 __CFRunLoopDoSource0
29  0x7ff8110e0901 __CFRunLoopDoSources0
30  0x7ff8110df57b __CFRunLoopRun
31  0x7ff8110deb60 CFRunLoopRunSpecific
Comment 1 Radar WebKit Bug Importer 2023-04-04 14:37:25 PDT
<rdar://problem/107631069>
Comment 2 Bri Harris 2023-04-04 14:41:08 PDT
I was able to replicate these crashes on macOS Debug ToT as follows:

run-webkit-tests --root fast/attachment/attachment-action.html

I just repeated the command down the list and replicated the crash on all. I verified the crash log matches the assertion found on the results database as well.
Comment 3 Bri Harris 2023-04-04 14:45:44 PDT
Test appears to have started crashing at 262547@main. I am attempting to verify if this is the regression point.
Comment 4 Bri Harris 2023-04-04 14:51:37 PDT
I was able to verify that these tests are passing at 262546@main but not at 262548@main. I was not able to test directly on 262547@main but it seems likely related. 

https://commits.webkit.org/262547@main
Comment 5 Ryan Haddad 2023-04-04 15:06:09 PDT
(In reply to Bri Harris from comment #4)
> I was not able to test directly on 262547@main but it seems
> likely related. 
> 
> https://commits.webkit.org/262547@main
I agree, it looks like this commit is what added the failing assertion.
Comment 6 Simon Fraser (smfr) 2023-04-04 15:15:04 PDT
This is being fixed via https://github.com/WebKit/WebKit/pull/12389

*** This bug has been marked as a duplicate of bug 255001 ***