New issue
Advanced search Search tips

Issue 691492 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Feb 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: iOS
Pri: 2
Type: Bug



Sign in to add a comment

Fix VisibleURLTestCase

Project Member Reported by olivierrobin@chromium.org, Feb 13 2017

Issue description

With the new indirection CRWSessionEntry->navigationItem, items are not retained when getting a CRWSessionEntry.

This make VisibleURLTestCase fail on bad object dereference.
 
Can you paste the failing logs from the tests?
Failing test
https://build.chromium.org/p/chromium.fyi/builders/EarlGreyiOS/builds/24238

Test Case '-[VisibleURLTestCase testBackNavigationWithPendingRendererInitiatedNavigation]' started.
Signal caught: Segmentation fault: 11
0   EarlGrey                            0x0000000111b022f3 grey_signalHandler + 259
1   libsystem_platform.dylib            0x0000000117929bba _sigtramp + 26
2   ios_chrome_web_egtests              0x0000000104438fed _ZN7logging13CheckOpResultC1EPNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE + 29
3   ios_chrome_web_egtests              0x000000010467bdd5 -[CRWWebController webWillFinishHistoryNavigationFromEntry:] + 309
4   ios_chrome_web_egtests              0x0000000104679b81 -[CRWWebController goToItemAtIndex:] + 833
5   ios_chrome_web_egtests              0x00000001046d8c31 _ZN3web12WebStateImpl9GoToIndexEi + 49
6   ios_chrome_web_egtests              0x000000010471afd9 _ZN3web21NavigationManagerImpl6GoBackEv + 57
7   ios_chrome_web_egtests              0x00000001052580ea -[Tab goBack] + 378
8   ios_chrome_web_egtests              0x000000010509cd06 -[BrowserViewController chromeExecuteCommand:] + 1350
9   ios_chrome_web_egtests              0x0000000104a3ffb8 -[UIResponder(ChromeExecuteCommand) chromeExecuteCommand:] + 104
10  ios_chrome_web_egtests              0x0000000104a3ffb8 -[UIResponder(ChromeExecuteCommand) chromeExecuteCommand:] + 104
11  ios_chrome_web_egtests              0x0000000104a3ffb8 -[UIResponder(ChromeExecuteCommand) chromeExecuteCommand:] + 104
12  ios_chrome_web_egtests              0x0000000104a3ffb8 -[UIResponder(ChromeExecuteCommand) chromeExecuteCommand:] + 104
13  UIKit                               0x000000010e672b88 -[UIApplication sendAction:to:from:forEvent:] + 83
14  UIKit                               0x000000010e7f82b2 -[UIControl sendAction:to:forEvent:] + 67
15  UIKit                               0x000000010e7f85cb -[UIControl _sendActionsForEvents:withEvent:] + 444
16  UIKit                               0x000000010e7f74c7 -[UIControl touchesEnded:withEvent:] + 668
17  UIKit                               0x000000010e6e00d5 -[UIWindow _sendTouchesForEvent:] + 2747
18  UIKit                               0x000000010e6e17c3 -[UIWindow sendEvent:] + 4011
19  UIKit                               0x000000010e68ea33 -[UIApplication sendEvent:] + 371
20  UIKit                               0x000000012895e959 -[UIApplicationAccessibility sendEvent:] + 93
21  EarlGrey                            0x0000000111b15d18 -[GREYTouchInjector grey_injectTouches:] + 1496
22  EarlGrey                            0x0000000111b14f71 -[GREYTouchInjector timerFiredWithZeroToleranceTimer:] + 849
23  EarlGrey                            0x0000000111b16e95 __50-[GREYZeroToleranceTimer initWithInterval:target:]_block_invoke + 53
24  EarlGrey                            0x0000000111b173a7 __78+[GREYZeroToleranceTimer grey_scheduleZeroToleranceTimerWithInterval:handler:]_block_invoke + 39
25  libdispatch.dylib                   0x00000001175d912e _dispatch_client_callout + 8
26  libdispatch.dylib                   0x00000001175bc9d5 _dispatch_continuation_pop + 578
27  libdispatch.dylib                   0x00000001175cd77d _dispatch_source_latch_and_call + 192
28  libdispatch.dylib                   0x00000001175c65a9 _dispatch_source_invoke + 1259
29  libdispatch.dylib                   0x00000001175c033e _dispatch_main_queue_callback_4CF + 559
30  CoreFoundation                      0x000000010ff744f9 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
31  CoreFoundation                      0x000000010ff39f8d __CFRunLoopRun + 2205
32  CoreFoundation                      0x000000010ff39494 CFRunLoopRunSpecific + 420
33  EarlGrey                            0x0000000111b2ed7f -[GREYRunLoopSpinner grey_drainRunLoopInActiveModeAndCheckCondition:forTime:] + 687
34  EarlGrey                            0x0000000111b2e72d -[GREYRunLoopSpinner spinWithStopConditionBlock:] + 1117
35  EarlGrey                            0x0000000111b14b4e -[GREYTouchInjector waitUntilAllTouchesAreDeliveredUsingInjector] + 846
36  EarlGrey                            0x0000000111b13d60 -[GREYSyntheticEvents grey_endTouchesAtPoints:timeElapsedSinceLastTouchDelivery:] + 176
37  EarlGrey                            0x0000000111b12d0a +[GREYSyntheticEvents touchAlongMultiplePaths:relativeToWindow:forDuration:expendable:] + 1098
38  EarlGrey                            0x0000000111b1286b +[GREYSyntheticEvents touchAlongPath:relativeToWindow:forDuration:expendable:] + 219
39  EarlGrey                            0x0000000111ad473f +[GREYTapper tapOnWindow:numberOfTaps:location:error:] + 399
40  EarlGrey                            0x0000000111ad455d +[GREYTapper tapOnElement:numberOfTaps:location:error:] + 909
41  EarlGrey                            0x0000000111ad37a3 -[GREYTapAction perform:error:] + 371
42  EarlGrey                            0x0000000111b05ae0 __46-[GREYElementInteraction performAction:error:]_block_invoke + 1056
43  EarlGrey                            0x0000000111b32eb4 __59-[GREYUIThreadExecutor executeSyncWithTimeout:block:error:]_block_invoke + 68
44  EarlGrey                            0x0000000111b2fb60 __54-[GREYRunLoopSpinner grey_checkConditionInActiveMode:]_block_invoke + 384
45  CoreFoundation                      0x000000010ff5525c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
46  CoreFoundation                      0x000000010ff3a304 __CFRunLoopDoBlocks + 356
47  CoreFoundation                      0x000000010ff39a75 __CFRunLoopRun + 901
48  CoreFoundation                      0x000000010ff39494 CFRunLoopRunSpecific + 420
49  EarlGrey                            0x0000000111b2f8cf -[GREYRunLoopSpinner grey_checkConditionInActiveMode:] + 399
50  EarlGrey                            0x0000000111b2e6a7 -[GREYRunLoopSpinner spinWithStopConditionBlock:] + 983
51  EarlGrey                            0x0000000111b32de4 -[GREYUIThreadExecutor executeSyncWithTimeout:block:error:] + 2228
52  EarlGrey                            0x0000000111b04d2a -[GREYElementInteraction performAction:error:] + 2282
53  EarlGrey                            0x0000000111b0440f -[GREYElementInteraction performAction:] + 79
54  ios_chrome_web_egtests              0x00000001044ba4be -[VisibleURLTestCase testBackNavigationWithPendingRendererInitiatedNavigation] + 1438
55  CoreFoundation                      0x000000010ff3705c __invoking___ + 140
56  CoreFoundation                      0x000000010ff36ee1 -[NSInvocation invoke] + 289
57  EarlGrey                            0x0000000111afb4a8 -[GREYTestCaseInvocation invoke] + 104
58  XCTest                              0x0000000111217f77 __24-[XCTestCase invokeTest]_block_invoke_2 + 481
59  XCTest                              0x00000001112507df -[XCTestContext performInScope:] + 190
60  XCTest                              0x0000000111217d83 -[XCTestCase invokeTest] + 255
61  EarlGrey                            0x0000000111aeb79e -[XCTestCase(GREYAdditions) grey_invokeTest] + 1230
62  XCTest                              0x000000011121859c -[XCTestCase performTest:] + 457
63  XCTest                              0x0000000111215664 -[XCTestSuite performTest:] + 491
64  XCTest                              0x0000000111215664 -[XCTestSuite performTest:] + 491
65  XCTest                              0x0000000111215664 -[XCTestSuite performTest:] + 491
66  XCTest                              0x0000000111201618 __25-[XCTestDriver _runSuite]_block_invoke + 51
67  XCTest                              0x0000000111222d2b -[XCTestObservationCenter _observeTestExecutionForBlock:] + 602
68  XCTest                              0x00000001112014b5 -[XCTestDriver _runSuite] + 436
69  XCTest                              0x0000000111202302 -[XCTestDriver _checkForTestManager] + 287
70  XCTest                              0x0000000111251d67 _XCTestMain + 628
71  CoreFoundation                      0x000000010ff5525c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
72  CoreFoundation                      0x000000010ff3a304 __CFRunLoopDoBlocks + 356
73  CoreFoundation                      0x000000010ff39a75 __CFRunLoopRun + 901
74  CoreFoundation                      0x000000010ff39494 CFRunLoopRunSpecific + 420
75  GraphicsServices                    0x000000011507ba6f GSEventRunModal + 161
76  UIKit                               0x000000010e670f34 UIApplicationMain + 159
77  ios_chrome_web_egtests              0x0000000104438e0b main + 1051
78  libdyld.dylib                       0x000000011582568d start + 1
2017-02-13 02:10:10.813 xcodebuild[34341:247114] [MT] IDETestOperationsObserverDebug: (E2C8729B-F590-4839-9D61-14032A06D74B) Beginning test session ios_chrome_web_egtests_module-E2C8729B-F590-4839-9D61-14032A06D74B at 2017-02-13 02:10:10.813 with Xcode 8A218a on target <DVTiPhoneSimulator: 0x7fe26de4a070> {
		SimDevice: SimDevice : iPhone 6s (65146135-4619-4106-A72A-9EEA4CC8EEA1) : state={ Booted } deviceType={ SimDeviceType : com.apple.CoreSimulator.SimDeviceType.iPhone-6s } runtime={ SimRuntime : 10.0 (14A345) - com.apple.CoreSimulator.SimRuntime.iOS-10-0 }
} (10.0 (14A345))
2017-02-13 02:10:10.813 xcodebuild[34341:255243]  IDETestOperationsObserverDebug: Writing diagnostic log for test session to:
/Users/chrome-bot/Library/Developer/Xcode/DerivedData/temporary-dabprewswrlsbahguahcbbsybpcv/Logs/Test/02C1B2B3-0BD7-439D-8CE6-9DBEA6695CA4
Project Member

Comment 3 by bugdroid1@chromium.org, Feb 13 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7f58024526f7dfa06703d876beac569242299357

commit 7f58024526f7dfa06703d876beac569242299357
Author: olivierrobin <olivierrobin@chromium.org>
Date: Mon Feb 13 13:39:23 2017

Set fromEntry to nil after discardNonCommittedItems.

With the indirection CRWSessionEntry->NavigationItem,
discardNonCommittedItems can invalidate fromEntry.
Set if to nil if it is invalid.

This is a tentative fix by the sheriff to make the tree green.
Please review this CL and revert it later if there is a better solution.

BUG= 691492 
TBR=eugenebut@chromium.org, kkhorimoto@chromium.org,

Review-Url: https://codereview.chromium.org/2690033002
Cr-Commit-Position: refs/heads/master@{#449941}

[modify] https://crrev.com/7f58024526f7dfa06703d876beac569242299357/ios/web/web_state/ui/crw_web_controller.mm

Cc: -kkhorimoto@chromium.org eugene...@chromium.org
Components: UI>Browser>Navigation
Owner: kkhorimoto@chromium.org
Project Member

Comment 5 by bugdroid1@chromium.org, Feb 13 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2b55257be75ef0790299a2a239fbb8d33ec4e805

commit 2b55257be75ef0790299a2a239fbb8d33ec4e805
Author: kkhorimoto <kkhorimoto@chromium.org>
Date: Mon Feb 13 23:52:24 2017

Revert "Updated ownership of NavigationItems within CRWSessionController."

The original CL updated behavior in a couple ways that were introducing many bugs:
- New CRWSessionEntries were vended every time a session entry property was
  accessed, which which broke logic comparing CRWSessionEntries.
- CRWSessionEntries held an unowned pointer to their corresponding
  NavigationItems, making it possible for the CRWSessionEntry to outlive its backing
  NavigationItem.

The CL will be re-landed once callers have been updated to reflect this new
behavior.

This reverts 3 CLs:
https://codereview.chromium.org/2672953005 (original CL)
https://codereview.chromium.org/2690973002 (hacky fix)
https://codereview.chromium.org/2680313004 (hacky fix)

BUG=689358, 691634, 545227,  691492 ,  691469 

Review-Url: https://codereview.chromium.org/2690913003
Cr-Commit-Position: refs/heads/master@{#450156}

[modify] https://crrev.com/2b55257be75ef0790299a2a239fbb8d33ec4e805/ios/chrome/browser/ui/history/tab_history_popup_controller_unittest.mm
[modify] https://crrev.com/2b55257be75ef0790299a2a239fbb8d33ec4e805/ios/web/BUILD.gn
[modify] https://crrev.com/2b55257be75ef0790299a2a239fbb8d33ec4e805/ios/web/navigation/crw_session_controller.h
[modify] https://crrev.com/2b55257be75ef0790299a2a239fbb8d33ec4e805/ios/web/navigation/crw_session_controller.mm
[modify] https://crrev.com/2b55257be75ef0790299a2a239fbb8d33ec4e805/ios/web/navigation/crw_session_controller_unittest.mm
[modify] https://crrev.com/2b55257be75ef0790299a2a239fbb8d33ec4e805/ios/web/navigation/crw_session_entry.h
[modify] https://crrev.com/2b55257be75ef0790299a2a239fbb8d33ec4e805/ios/web/navigation/crw_session_entry.mm
[modify] https://crrev.com/2b55257be75ef0790299a2a239fbb8d33ec4e805/ios/web/navigation/crw_session_entry_unittest.mm
[modify] https://crrev.com/2b55257be75ef0790299a2a239fbb8d33ec4e805/ios/web/navigation/navigation_item_impl_list.h
[modify] https://crrev.com/2b55257be75ef0790299a2a239fbb8d33ec4e805/ios/web/navigation/navigation_item_impl_list.mm
[modify] https://crrev.com/2b55257be75ef0790299a2a239fbb8d33ec4e805/ios/web/navigation/session_storage_builder.mm
[modify] https://crrev.com/2b55257be75ef0790299a2a239fbb8d33ec4e805/ios/web/public/navigation_item_list.h
[add] https://crrev.com/2b55257be75ef0790299a2a239fbb8d33ec4e805/ios/web/public/navigation_item_list.mm
[modify] https://crrev.com/2b55257be75ef0790299a2a239fbb8d33ec4e805/ios/web/web_state/ui/crw_web_controller.mm
[modify] https://crrev.com/2b55257be75ef0790299a2a239fbb8d33ec4e805/ios/web/web_state/ui/crw_web_controller_unittest.mm

Status: Fixed (was: Assigned)

Sign in to add a comment