[Webkit-unassigned] [Bug 108589] New: REGRESSION (r137607): Loading of archives as substitute data is broken

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Jan 31 23:45:49 PST 2013


https://bugs.webkit.org/show_bug.cgi?id=108589

           Summary: REGRESSION (r137607): Loading of archives as
                    substitute data is broken
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: Unspecified
        OS/Version: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: Page Loading
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: ap at webkit.org
                CC: beidson at apple.com, japhet at chromium.org


It is possible to call FrameLoader::load with substitute data that is a WebArchive (or another type of archive, such as MHTML for Chromium). This is exposed via both WebKit1 and WebKit2 API on Mac, see e.g. WKPageLoadWebArchiveData() for the latter.

Our bisection shows that this functionality got broken in <http://trac.webkit.org/changeset/137607>. By the time MainDocumentLoader tries to decode the archive, the data it tries to use is null. Here is how a debug stack trace looks like, with an assertion being fired:

ASSERTION FAILED: data
/Volumes/Data/SafariSources/OpenSource/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp(269) : static PassRefPtr<WebCore::LegacyWebArchive> WebCore::LegacyWebArchive::create(const WebCore::KURL &, WebCore::SharedBuffer *)
1   0x104657d5a WebCore::LegacyWebArchive::create(WebCore::KURL const&, WebCore::SharedBuffer*)
2   0x10350402f WTF::PassRefPtr<WebCore::Archive> WebCore::archiveFactoryCreate<WebCore::LegacyWebArchive>(WebCore::KURL const&, WebCore::SharedBuffer*)
3   0x103503f18 WebCore::ArchiveFactory::create(WebCore::KURL const&, WebCore::SharedBuffer*, WTF::String const&)
4   0x1038f26ee WebCore::DocumentLoader::maybeCreateArchive()
5   0x1038f254c WebCore::DocumentLoader::finishedLoading()
6   0x1046772d1 WebCore::MainResourceLoader::didFinishLoading(double)
7   0x104677085 WebCore::MainResourceLoader::continueAfterContentPolicy(WebCore::PolicyAction, WebCore::ResourceResponse const&)
8   0x1046773e6 WebCore::MainResourceLoader::continueAfterContentPolicy(WebCore::PolicyAction)
9   0x10467732b WebCore::MainResourceLoader::callContinueAfterContentPolicy(void*, WebCore::PolicyAction)
10  0x1046779f8 WebCore::MainResourceLoader::responseReceived(WebCore::CachedResource*, WebCore::ResourceResponse const&)
11  0x104675824 WebCore::MainResourceLoader::handleSubstituteDataLoadNow(WebCore::RunLoopTimer<WebCore::MainResourceLoader>*)
12  0x104679f83 WebCore::RunLoopTimer<WebCore::MainResourceLoader>::fired()

One easy way to reproduce this that I'm aware of is:

1. Open http://www.apple.com/startpage/ in Safari.
2. Select Email This Page from the Share menu (a button to the left of address bar, or just Command+I).
3. In the new email message that appears in Mail.app, change the "Send as web content" selection at top right to PDF.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list