Bug 217386 - REGRESSION (r267763): [ iOS wk2 ] http/tests/in-app-browser-privacy/non-app-bound-domain-does-not-get-app-bound-session.html is a constant failure
Summary: REGRESSION (r267763): [ iOS wk2 ] http/tests/in-app-browser-privacy/non-app-b...
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: Alex Christensen
URL:
Keywords: InRadar
: 217406 (view as bug list)
Depends on:
Blocks:
 
Reported: 2020-10-06 08:12 PDT by Karl Rackler
Modified: 2020-10-08 15:20 PDT (History)
6 users (show)

See Also:


Attachments
test list for reproduction (627 bytes, text/plain)
2020-10-06 08:12 PDT, Karl Rackler
no flags Details
Patch (3.10 KB, patch)
2020-10-06 15:43 PDT, Alex Christensen
no flags Details | Formatted Diff | Diff
Patch (3.12 KB, patch)
2020-10-06 16:26 PDT, Alex Christensen
no flags Details | Formatted Diff | Diff
Patch (14.01 KB, patch)
2020-10-07 10:04 PDT, Alex Christensen
no flags Details | Formatted Diff | Diff
Patch (17.89 KB, patch)
2020-10-07 15:23 PDT, Alex Christensen
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Karl Rackler 2020-10-06 08:12:08 PDT
Created attachment 410637 [details]
test list for reproduction

Description:
http/tests/in-app-browser-privacy/non-app-bound-domain-does-not-get-app-bound-session.html

The first failure after a series of constant passes that I see this on the dashboard was 09/29/20 at 267768, but does not appear to be relevant to what would have caused this.

I can reproduce this on r267763, but unable to reproduce on r267762.
Commit r267763 has to do with moving things on WebProcessPool associated with NetworkProcessProxy ownership and moves them
to WebsiteDataStore, which could have introduced the constant failure.  The change was introduced here https://trac.webkit.org/changeset/267763/webkit.


REPRODUCTION STEPS
Command: 
run-webkit-tests --ios-simulator --no-retry --force -f --test-list testlist.txt

Result: 
r268044 failure (ToT)
r267765 failure
r267763 failure
r267762 pass
r267761 pass

Regressions: Unexpected text-only failures (3)
  http/tests/cookies/js-get-and-set-http-only-cookie.html [ Failure ]
  http/tests/download/inherited-encoding-form-submission-result.html [ Failure ]
  http/tests/in-app-browser-privacy/non-app-bound-domain-does-not-get-app-bound-session.html [ Failure ]

History:
https://results.webkit.org/?suite=layout-tests&test=http%2Ftests%2Fin-app-browser-privacy%2Fnon-app-bound-domain-does-not-get-app-bound-session.html&platform=ios&limit=50000

Diff Log:
--- /Volumes/Data/Builds/build-267763/layout-test-results/http/tests/in-app-browser-privacy/non-app-bound-domain-does-not-get-app-bound-session-expected.txt
+++ /Volumes/Data/Builds/build-267763/layout-test-results/http/tests/in-app-browser-privacy/non-app-bound-domain-does-not-get-app-bound-session-actual.txt
@@ -3,8 +3,9 @@
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS Origin has non-app-bound session.
+FAIL Origin started with app-bound session.
 PASS successfullyParsed is true
+Some tests failed.
 
 TEST COMPLETE
Comment 1 Radar WebKit Bug Importer 2020-10-06 08:12:43 PDT
<rdar://problem/69999900>
Comment 2 Alex Christensen 2020-10-06 15:34:14 PDT
ASSERTION FAILED: applicationBundleIsEqualTo() and applicationBundleStartsWith() should not be called before setApplicationBundleIdentifier()
!applicationBundleIdentifierOverrideWasQueried
./platform/cocoa/RuntimeApplicationChecksCocoa.mm(80) : void WebCore::setApplicationBundleIdentifierOverride(const WTF::String &)
1   0x10ba1f409 WTFCrash
2   0x1272e6113 WebCore::setApplicationBundleIdentifierOverride(WTF::String const&)
3   0x115cc7421 +[WKWebView(WKTesting) _setApplicationBundleIdentifier:]
4   0x10a9968c4 WTR::TestController::setApplicationBundleIdentifier(WTF::String const&)
5   0x10a956346 WTR::TestController::createWebViewWithOptions(WTR::TestOptions const&)
6   0x10a957da0 WTR::TestController::ensureViewSupportsOptionsForTest(WTR::TestInvocation const&)
7   0x10a95c0b4 WTR::TestController::configureViewForTest(WTR::TestInvocation const&)
8   0x10a99b4c5 WTR::TestInvocation::invoke()
9   0x10a95c6a2 WTR::TestController::runTest(char const*)
10  0x10a95d0f6 WTR::TestController::runTestingServerLoop()
11  0x10a9530b7 WTR::TestController::run()
12  0x10a9529b7 WTR::TestController::TestController(int, char const**)
13  0x10a953183 WTR::TestController::TestController(int, char const**)
14  0x10a938c4c -[WebKitTestRunnerApp _runTestController]
15  0x7fff208703df __NSThreadPerformPerform
16  0x7fff203a9132 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
17  0x7fff203a902a __CFRunLoopDoSource0
18  0x7fff203a856e __CFRunLoopDoSources0
19  0x7fff203a2cd7 __CFRunLoopRun
20  0x7fff203a247e CFRunLoopRunSpecific
21  0x7fff2ba9ddb3 GSEventRunModal
22  0x7fff24682607 -[UIApplication _run]
23  0x7fff246874b8 UIApplicationMain
24  0x10a938de7 main
25  0x7fff20258405 start
26  0x2
Comment 3 Alex Christensen 2020-10-06 15:34:36 PDT
*** Bug 217406 has been marked as a duplicate of this bug. ***
Comment 4 Alex Christensen 2020-10-06 15:43:50 PDT
Created attachment 410706 [details]
Patch
Comment 5 Kate Cheney 2020-10-06 16:22:31 PDT
Comment on attachment 410706 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=410706&action=review

> Tools/WebKitTestRunner/TestController.cpp:646
> +        clearApplicationBundleIdentifierTestingOverride();

I think this should come before RELEASE_ASSERT(!m_hasSetApplicationBundleIdentifier). Otherwise it doesn't make sense. m_hasSetApplicationBundleIdentifier is set to false when the bundle ID is cleared.
Comment 6 Alex Christensen 2020-10-06 16:26:41 PDT
Created attachment 410712 [details]
Patch
Comment 7 Kate Cheney 2020-10-06 16:29:35 PDT
(In reply to Alex Christensen from comment #6)
> Created attachment 410712 [details]
> Patch

I think this looks good as long as EWS is happy.
Comment 8 Alex Christensen 2020-10-06 16:44:40 PDT
This didn't fix it in my release build.  Needs more investigation, but it is just a test infrastructure issue with the override bundle identifier, which is only used for tests.  We are now creating the network process before setting the override bundle identifier, which causes the assertion and test failures.  The solution is to set the test override bundle id earlier.
Comment 9 Alex Christensen 2020-10-07 10:04:24 PDT
Created attachment 410755 [details]
Patch
Comment 10 Kate Cheney 2020-10-07 15:00:12 PDT
Comment on attachment 410755 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=410755&action=review

Thanks for fixing this, and making these tests more robust in the process.

> Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:-119
> -    m_isInAppBrowserPrivacyTestModeEnabled = [defaults boolForKey:[NSString stringWithFormat:@"WebKitDebug%@", WebPreferencesKey::isInAppBrowserPrivacyEnabledKey().createCFString().get()]];

We should probably remove this entry from WebPreferencesDebug.yaml now that it is unused.
Comment 11 Alex Christensen 2020-10-07 15:23:36 PDT
Created attachment 410791 [details]
Patch
Comment 12 Brent Fulgham 2020-10-08 14:07:37 PDT
(In reply to katherine_cheney from comment #10)
> Comment on attachment 410755 [details]
> Patch
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=410755&action=review
> 
> Thanks for fixing this, and making these tests more robust in the process.
> 
> > Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:-119
> > -    m_isInAppBrowserPrivacyTestModeEnabled = [defaults boolForKey:[NSString stringWithFormat:@"WebKitDebug%@", WebPreferencesKey::isInAppBrowserPrivacyEnabledKey().createCFString().get()]];
> 
> We should probably remove this entry from WebPreferencesDebug.yaml now that
> it is unused.

Wait! I'd like to use it for some debug logging we were thinking about.
Comment 13 Brent Fulgham 2020-10-08 14:22:04 PDT
Comment on attachment 410791 [details]
Patch

Actually, on second thought let's go ahead and remove all this. We can use a specific preference flag to trigger logging without needing to keep all of this cruft around. r=me
Comment 14 EWS 2020-10-08 15:20:46 PDT
Committed r268214: <https://trac.webkit.org/changeset/268214>

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410791 [details].