Bug 245832 - [ macOS Big Sur ] 2X TestWebKitAPI.WebKit.NSAttributedStringWithAndWith(API tests) are constant crashes
Summary: [ macOS Big Sur ] 2X TestWebKitAPI.WebKit.NSAttributedStringWithAndWith(API t...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: New Bugs (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Brent Fulgham
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2022-09-29 08:29 PDT by Hercules Hjalmarsson
Modified: 2022-09-29 14:40 PDT (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Hercules Hjalmarsson 2022-09-29 08:29:09 PDT
TestWebKitAPI.WebKit.NSAttributedStringWithAndWithoutReadOnlyPaths
TestWebKitAPI.WebKit.NSAttributedStringWithReadOnlyPaths

Are two constant API crashes on Big Sur ToT and since introduced at 254968@main. These are heavily impacting macOS API EWS.

HISTORY:
https://results.webkit.org/?suite=api-tests&suite=api-tests&test=TestWebKitAPI.WebKit.NSAttributedStringWithAndWithoutReadOnlyPaths&test=TestWebKitAPI.WebKit.NSAttributedStringWithReadOnlyPaths

DIFF(s):
TestWebKitAPI.WebKit.NSAttributedStringWithAndWithoutReadOnlyPaths
        ERROR: Error while launching com.apple.WebKit.Networking: Connection invalid
        /Volumes/Data/worker/Apple-BigSur-Debug-Build/build/Source/WebKit/UIProcess/Launcher/cocoa/ProcessLauncherCocoa.mm(234) : auto WebKit::ProcessLauncher::launchProcess()::(anonymous class)::operator()(xpc_object_t) const
        ERROR: Failed to decode object of classes (
            NSAttributedString
        ): value for key 'NSFileWrapper' was of unexpected class 'NSFileWrapper (0x1f71fbf18) [/System/Library/Frameworks/Foundation.framework]'. Allowed classes are '{(
            "NSColor (0x1f6a446a0) [/System/Library/Frameworks/AppKit.framework]",
            "NSArray (0x1f6a79510) [/System/Library/Frameworks/CoreFoundation.framework]",
            "WKSecureCodingCGColorWrapper (0x11420b400) [/Volumes/Data/worker/Apple-BigSur-Debug-AppleSilicon-WK1-Tests/build/WebKitBuild/Debug/WebKit.framework]",
            "NSParagraphStyle (0x1f6e724c0) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
            "NSTextAttachment (0x1f6e72718) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
            "NSString (0x1f6aac7e0) [/System/Library/Frameworks/Foundation.framework]",
            "NSDictionary (0x1f6a79650) [/System/Library/Frameworks/CoreFoundation.framework]",
            "WKSecureCodingURLWrapper (0x11420b3d8) [/Volumes/Data/worker/Apple-BigSur-Debug-AppleSilicon-WK1-Tests/build/WebKitBuild/Debug/WebKit.framework]",
            "NSFont (0x1f6e72150) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
            "NSAttributedString (0x1f6aab890) [/System/Library/Frameworks/Foundation.framework]",
            "NSGlyphInfo (0x1f6e721f0) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
            "NSNumber (0x1f6aac2b8) [/System/Library/Frameworks/Foundation.framework]",
            "UIFont (0x1f6e75058) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
            "NSURL (0x1f6a799e8) [/System/Library/Frameworks/CoreFoundation.framework]"
        )}'.
        /Volumes/Data/worker/Apple-BigSur-Debug-Build/build/Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm(501) : std::optional<RetainPtr<id>> IPC::decodeSecureCodingInternal(IPC::Decoder &, NSArray<Class> *)
        SHOULD NEVER BE REACHED
        /Volumes/Data/worker/Apple-BigSur-Debug-Build/build/WebKitBuild/Debug/DerivedSources/WebKit/WebPageMessageReceiver.cpp(1069) : static void Messages::WebPage::GetContentsAsAttributedString::callReply(IPC::Decoder &, CompletionHandler<void (WebCore::AttributedString &&)> &&)
        1   0x16d8d9990 (null)
        2   0x109164f8d _OBJC_$_INSTANCE_METHODS_JSWrapperMap
        3   0x1f06b590c4 (null)
        4   0x16d8d9990 (null)
        5   0x16d8d9948 (null)
        6   0x16d8d9960 (null)
        7   0x106b59274 WTFPrintBacktrace
        8   0x16d8d9948 (null)
        9   0x109b2d730 vtable for CrashLogPrintStream
        10  0x1f6d8d997c (null)
        11  0x16d8d9990 (null)
        12  0x16d8d9aa0 (null)
        13  0x106b59208 WTFReportBacktrace
        14  0x16d8d9980 (null)
        15  0x2110f21d68 (null)
        16  0x106c335c4 WTFGetBacktrace
        17  0x106b591f4 WTFReportBacktrace
        18  0x106b592d8 WTFCrash
        19  0x110380c20 WTFCrashWithInfo(int, char const*, char const*, int)
        20  0x112c6675c Messages::WebPage::GetContentsAsAttributedString::callReply(IPC::Decoder&, WTF::CompletionHandler<void (WebCore::AttributedString&&)>&&)
        21  0x111ebaabc unsigned long long IPC::MessageSender::sendWithAsyncReply<Messages::WebPage::GetContentsAsAttributedString, WTF::CompletionHandler<void (WebCore::AttributedString const&)> >(Messages::WebPage::GetContentsAsAttributedString&&, WTF::CompletionHandler<void (WebCore::AttributedString const&)>&&, unsigned long long, WTF::OptionSet<IPC::SendOption>)::'lambda'(IPC::Decoder*)::operator()(IPC::Decoder*)
        22  0x111eba988 WTF::Detail::CallableWrapper<unsigned long long IPC::MessageSender::sendWithAsyncReply<Messages::WebPage::GetContentsAsAttributedString, WTF::CompletionHandler<void (WebCore::AttributedString const&)> >(Messages::WebPage::GetContentsAsAttributedString&&, WTF::CompletionHandler<void (WebCore::AttributedString const&)>&&, unsigned long long, WTF::OptionSet<IPC::SendOption>)::'lambda'(IPC::Decoder*), void, IPC::Decoder*>::call(IPC::Decoder*)
        23  0x111bda898 WTF::Function<void (IPC::Decoder*)>::operator()(IPC::Decoder*) const
        24  0x111bce5d8 WTF::CompletionHandler<void (IPC::Decoder*)>::operator()(IPC::Decoder*)
        25  0x111bdae8c WebKit::AuxiliaryProcessProxy::sendMessage(WTF::UniqueRef<IPC::Encoder>&&, WTF::OptionSet<IPC::SendOption>, std::__1::optional<std::__1::pair<WTF::CompletionHandler<void (IPC::Decoder*)>, unsigned long long> >&&, WebKit::AuxiliaryProcessProxy::ShouldStartProcessThrottlerActivity)::$_1::operator()(IPC::Decoder*)
        26  0x111bdad90 WTF::Detail::CallableWrapper<WebKit::AuxiliaryProcessProxy::sendMessage(WTF::UniqueRef<IPC::Encoder>&&, WTF::OptionSet<IPC::SendOption>, std::__1::optional<std::__1::pair<WTF::CompletionHandler<void (IPC::Decoder*)>, unsigned long long> >&&, WebKit::AuxiliaryProcessProxy::ShouldStartProcessThrottlerActivity)::$_1, void, IPC::Decoder*>::call(IPC::Decoder*)
        27  0x111bda898 WTF::Function<void (IPC::Decoder*)>::operator()(IPC::Decoder*) const
        28  0x111bce5d8 WTF::CompletionHandler<void (IPC::Decoder*)>::operator()(IPC::Decoder*)
        29  0x11338742c IPC::Connection::dispatchMessage(IPC::Decoder&)
        30  0x113387a70 IPC::Connection::dispatchMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)
        31  0x1133863c0 IPC::Connection::dispatchIncomingMessages()
---------------------------------------------------------------------------------------------------------------------------------------------

TestWebKitAPI.WebKit.NSAttributedStringWithReadOnlyPaths
        ERROR: Error while launching com.apple.WebKit.Networking: Connection invalid
        /Volumes/Data/worker/Apple-BigSur-Debug-Build/build/Source/WebKit/UIProcess/Launcher/cocoa/ProcessLauncherCocoa.mm(234) : auto WebKit::ProcessLauncher::launchProcess()::(anonymous class)::operator()(xpc_object_t) const
        ERROR: Failed to decode object of classes (
            NSAttributedString
        ): value for key 'NSFileWrapper' was of unexpected class 'NSFileWrapper (0x1f71fbf18) [/System/Library/Frameworks/Foundation.framework]'. Allowed classes are '{(
            "NSColor (0x1f6a446a0) [/System/Library/Frameworks/AppKit.framework]",
            "NSArray (0x1f6a79510) [/System/Library/Frameworks/CoreFoundation.framework]",
            "WKSecureCodingCGColorWrapper (0x1125db400) [/Volumes/Data/worker/Apple-BigSur-Debug-AppleSilicon-WK1-Tests/build/WebKitBuild/Debug/WebKit.framework]",
            "NSParagraphStyle (0x1f6e724c0) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
            "NSTextAttachment (0x1f6e72718) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
            "NSString (0x1f6aac7e0) [/System/Library/Frameworks/Foundation.framework]",
            "NSDictionary (0x1f6a79650) [/System/Library/Frameworks/CoreFoundation.framework]",
            "WKSecureCodingURLWrapper (0x1125db3d8) [/Volumes/Data/worker/Apple-BigSur-Debug-AppleSilicon-WK1-Tests/build/WebKitBuild/Debug/WebKit.framework]",
            "NSFont (0x1f6e72150) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
            "NSAttributedString (0x1f6aab890) [/System/Library/Frameworks/Foundation.framework]",
            "NSGlyphInfo (0x1f6e721f0) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
            "NSNumber (0x1f6aac2b8) [/System/Library/Frameworks/Foundation.framework]",
            "UIFont (0x1f6e75058) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
            "NSURL (0x1f6a799e8) [/System/Library/Frameworks/CoreFoundation.framework]"
        )}'.
        /Volumes/Data/worker/Apple-BigSur-Debug-Build/build/Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm(501) : std::optional<RetainPtr<id>> IPC::decodeSecureCodingInternal(IPC::Decoder &, NSArray<Class> *)
        SHOULD NEVER BE REACHED
        /Volumes/Data/worker/Apple-BigSur-Debug-Build/build/WebKitBuild/Debug/DerivedSources/WebKit/WebPageMessageReceiver.cpp(1069) : static void Messages::WebPage::GetContentsAsAttributedString::callReply(IPC::Decoder &, CompletionHandler<void (WebCore::AttributedString &&)> &&)
        1   0x16f4899b0 (null)
        2   0x107534f8d _OBJC_$_INSTANCE_METHODS_JSWrapperMap
        3   0x1f04f290c4 (null)
        4   0x16f4899b0 (null)
        5   0x16f489968 (null)
        6   0x16f489980 (null)
        7   0x104f29274 WTFPrintBacktrace
        8   0x16f489968 (null)
        9   0x107efd730 vtable for CrashLogPrintStream
        10  0x1f6f48999c (null)
        11  0x16f4899b0 (null)
        12  0x16f489ac0 (null)
        13  0x104f29208 WTFReportBacktrace
        14  0x16f4899a0 (null)
        15  0x210f2f1d68 (null)
        16  0x1050035c4 WTFGetBacktrace
        17  0x104f291f4 WTFReportBacktrace
        18  0x104f292d8 WTFCrash
        19  0x10e750c20 WTFCrashWithInfo(int, char const*, char const*, int)
        20  0x11103675c Messages::WebPage::GetContentsAsAttributedString::callReply(IPC::Decoder&, WTF::CompletionHandler<void (WebCore::AttributedString&&)>&&)
        21  0x11028aabc unsigned long long IPC::MessageSender::sendWithAsyncReply<Messages::WebPage::GetContentsAsAttributedString, WTF::CompletionHandler<void (WebCore::AttributedString const&)> >(Messages::WebPage::GetContentsAsAttributedString&&, WTF::CompletionHandler<void (WebCore::AttributedString const&)>&&, unsigned long long, WTF::OptionSet<IPC::SendOption>)::'lambda'(IPC::Decoder*)::operator()(IPC::Decoder*)
        22  0x11028a988 WTF::Detail::CallableWrapper<unsigned long long IPC::MessageSender::sendWithAsyncReply<Messages::WebPage::GetContentsAsAttributedString, WTF::CompletionHandler<void (WebCore::AttributedString const&)> >(Messages::WebPage::GetContentsAsAttributedString&&, WTF::CompletionHandler<void (WebCore::AttributedString const&)>&&, unsigned long long, WTF::OptionSet<IPC::SendOption>)::'lambda'(IPC::Decoder*), void, IPC::Decoder*>::call(IPC::Decoder*)
        23  0x10ffaa898 WTF::Function<void (IPC::Decoder*)>::operator()(IPC::Decoder*) const
        24  0x10ff9e5d8 WTF::CompletionHandler<void (IPC::Decoder*)>::operator()(IPC::Decoder*)
        25  0x10ffaae8c WebKit::AuxiliaryProcessProxy::sendMessage(WTF::UniqueRef<IPC::Encoder>&&, WTF::OptionSet<IPC::SendOption>, std::__1::optional<std::__1::pair<WTF::CompletionHandler<void (IPC::Decoder*)>, unsigned long long> >&&, WebKit::AuxiliaryProcessProxy::ShouldStartProcessThrottlerActivity)::$_1::operator()(IPC::Decoder*)
        26  0x10ffaad90 WTF::Detail::CallableWrapper<WebKit::AuxiliaryProcessProxy::sendMessage(WTF::UniqueRef<IPC::Encoder>&&, WTF::OptionSet<IPC::SendOption>, std::__1::optional<std::__1::pair<WTF::CompletionHandler<void (IPC::Decoder*)>, unsigned long long> >&&, WebKit::AuxiliaryProcessProxy::ShouldStartProcessThrottlerActivity)::$_1, void, IPC::Decoder*>::call(IPC::Decoder*)
        27  0x10ffaa898 WTF::Function<void (IPC::Decoder*)>::operator()(IPC::Decoder*) const
        28  0x10ff9e5d8 WTF::CompletionHandler<void (IPC::Decoder*)>::operator()(IPC::Decoder*)
        29  0x11175742c IPC::Connection::dispatchMessage(IPC::Decoder&)
        30  0x111757a70 IPC::Connection::dispatchMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)
        31  0x1117563c0 IPC::Connection::dispatchIncomingMessages()
        LEAK: 1 WebPage

BUILD URL:
https://build.webkit.org/#/builders/106/builds/8438
Comment 1 Radar WebKit Bug Importer 2022-09-29 08:29:33 PDT
<rdar://problem/100563994>
Comment 2 Brent Fulgham 2022-09-29 09:52:13 PDT
Interesting. This assertion is not hit when running on macOS Ventura.
Comment 3 Brent Fulgham 2022-09-29 10:02:17 PDT
The new tests involve NSAttributedString containing references to file locations, which need to be serialized to (and from) 'nsattributedstringagent'. I wonder if the Big Sur Foundation implementation had a bug that did not expect NSFileWrapper to be a possible element of the attributed string.
Comment 4 Brent Fulgham 2022-09-29 12:22:57 PDT
Pull request: https://github.com/WebKit/WebKit/pull/4836
Comment 5 Brent Fulgham 2022-09-29 12:42:09 PDT
WebKit inserts WKSecureCodingCGColorWrapper and WKSecureCodingURLWrapper, but the other's don't match what NSAttributedString claims as its 'allowedSecureCodingClasses'.

ERROR: Failed to decode object of classes (
    NSAttributedString
): value for key 'NSFileWrapper' was of unexpected class 'NSFileWrapper (0x1f71fbf18) [/System/Library/Frameworks/Foundation.framework]'.

Allowed classes are '{(
    "NSColor (0x1f6a446a0) [/System/Library/Frameworks/AppKit.framework]",
    "NSArray (0x1f6a79510) [/System/Library/Frameworks/CoreFoundation.framework]",
    "NSParagraphStyle (0x1f6e724c0) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
    "NSTextAttachment (0x1f6e72718) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
    "NSString (0x1f6aac7e0) [/System/Library/Frameworks/Foundation.framework]",
    "NSDictionary (0x1f6a79650) [/System/Library/Frameworks/CoreFoundation.framework]",
    "NSFont (0x1f6e72150) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
    "NSAttributedString (0x1f6aab890) [/System/Library/Frameworks/Foundation.framework]",
    "NSGlyphInfo (0x1f6e721f0) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
    "NSNumber (0x1f6aac2b8) [/System/Library/Frameworks/Foundation.framework]",
    "UIFont (0x1f6e75058) [/System/Library/PrivateFrameworks/UIFoundation.framework]",
    "NSURL (0x1f6a799e8) [/System/Library/Frameworks/CoreFoundation.framework]"
)}'.

Since the allowed classes include NSAttributedString, perhaps some other object is being serialized in this test that wraps NSAttributedString?
Comment 6 EWS 2022-09-29 14:40:32 PDT
Committed 255014@main (8f28acecede7): <https://commits.webkit.org/255014@main>

Reviewed commits have been landed. Closing PR #4836 and removing active labels.