Bug 269222 - [iOS 17.4] Chrome crashes in -[WKSelectPicker resetContextMenuPresenter]
Summary: [iOS 17.4] Chrome crashes in -[WKSelectPicker resetContextMenuPresenter]
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Layout and Rendering (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Wenson Hsieh
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2024-02-12 12:17 PST by Ali Juma
Modified: 2024-02-13 11:05 PST (History)
7 users (show)

See Also:


Attachments
Crash log (41.18 KB, text/plain)
2024-02-12 12:17 PST, Ali Juma
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Ali Juma 2024-02-12 12:17:14 PST
Created attachment 469837 [details]
Crash log

Chrome for iOS is getting reports of a new crash in -[WKSelectPicker resetContextMenuPresenter], caused by an exception:

[Exception] UIPreviewTarget requires that the container view is in a window, but it is not. (container: <_UIContextMenuPlatterTransitionView: 0x#>) 

This is the #2 top crash for Chrome on iOS 17.4 beta 2.

I've been able to reproduce this on mexicana.gob.mx by tapping on the "Origen" dropdown just as Chrome's translation UI slides down from the top of the screen, so I think this is coming from a bad interaction between recent changes in WKSelectPicker and the UI of the embedding app. 

I've attached a crashlog. The crash stack is:

0   CoreFoundation                	0x19a2c7b28 __exceptionPreprocess + 164 (NSException.m:249)
1   Chrome                        	0x103afb548 0x102914000 + 18773320
2   Chrome                        	0x103afa908 0x102914000 + 18770184
3   libobjc.A.dylib               	0x19218af78 objc_exception_throw + 60 (objc-exception.mm:356)
4   Foundation                    	0x19972dfb0 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 188 (NSException.m:252)
5   UIKitCore                     	0x19cc99948 -[UIPreviewTarget initWithContainer:center:transform:] + 280 (UITargetedPreview.m:72)
6   UIKitCore                     	0x19d1d0e64 -[_UIContextMenuPresentationAnimation _targetedPreviewForDismissalAnimation] + 684 (_UIContextMenuPresentationAnimation.m:587)
7   UIKitCore                     	0x19d1d04f4 __65-[_UIContextMenuPresentationAnimation _actuallyPerformTransition]_block_invoke + 28 (_UIContextMenuPresentationAnimation.m:341)
8   UIKitCore                     	0x19c495308 +[UIView(Animation) performWithoutAnimation:] + 76 (UIView.m:16034)
9   UIKitCore                     	0x19d1cfe94 -[_UIContextMenuPresentationAnimation _actuallyPerformTransition] + 512 (_UIContextMenuPresentationAnimation.m:340)
10  UIKitCore                     	0x19d1d08e0 -[_UIContextMenuPresentationAnimation performTransition] + 212 (_UIContextMenuPresentationAnimation.m:480)
11  UIKitCore                     	0x19d3fea84 -[_UIContextMenuPresentation dismiss] + 32 (_UIContextMenuPresentation.m:137)
12  UIKitCore                     	0x19c4d9170 +[UIView(UIViewAnimationWithBlocksPrivate) _modifyAnimationsWithPreferredFrameRateRange:updateReason:animations:] + 168 (UIView.m:16749)
13  UIKitCore                     	0x19c4d6aec +[UIView _setupAnimationWithDuration:delay:view:options:factory:animations:start:animationStateGenerator:completion:] + 512 (UIView.m:16525)
14  UIKitCore                     	0x19c4d6874 +[UIView(Internal) _animateWithAnimationAndComposerGetter:animations:completion:animationStateSetup:] + 372 (UIView.m:18987)
15  UIKitCore                     	0x19c589f14 +[UIView __animateUsingSpringWithDampingRatio:response:interactive:initialDampingRatio:initialResponse:dampingRatioSmoothing:responseSmoothing:targetSmoothing:projectionDeceleration:retargetImpulse... + 268 (UIView.m:18919)
16  UIKitCore                     	0x19c941d18 -[_UIRapidClickPresentationAssistant _animateUsingFluidSpringWithType:animations:completion:] + 316 (_UIRapidClickPresentationAssistant.m:397)
17  UIKitCore                     	0x19c941524 -[_UIRapidClickPresentationAssistant _animateDismissalWithReason:actions:completion:] + 748 (_UIRapidClickPresentationAssistant.m:231)
18  UIKitCore                     	0x19c9410f4 -[_UIRapidClickPresentationAssistant dismissWithReason:alongsideActions:completion:] + 244 (_UIRapidClickPresentationAssistant.m:158)
19  UIKitCore                     	0x19d2390a8 stateMachineSpec_block_invoke_4 + 784 (_UIClickPresentationInteraction.m:1131)
20  UIKitCore                     	0x19c622b5c handleEvent + 276 (_UIStateMachine.m:101)
21  UIKitCore                     	0x19c64a654 -[_UIClickPresentationInteraction _cancelWithReason:alongsideActions:completion:] + 120 (_UIClickPresentationInteraction.m:1513)
22  UIKitCore                     	0x19d74c0c8 -[UIContextMenuInteraction dismissMenu] + 248 (UIContextMenuInteraction.m:433)
23  WebKit                        	0x1b01f7968 WebKit::CompactContextMenuPresenter::~CompactContextMenuPresenter() + 32 (CompactContextMenuPresenter.mm:97)
24  WebKit                        	0x1b020f588 std::__1::unique_ptr<WebKit::CompactContextMenuPresenter, std::__1::default_delete<WebKit::CompactContextMenuPresenter>>::reset[abi:sn170006](WebKit::CompactContextMenuPresenter*) + 32 (unique_ptr.h:300)
25  WebKit                        	0x1b024ab20 -[WKSelectPicker resetContextMenuPresenter] + 36 (WKFormSelectPicker.mm:716)
26  WebKit                        	0x1b0876d78 -[WKContentView(WKInteraction) _endEditing] + 36 (WKContentViewInteraction.mm:1860)
27  WebKit                        	0x1b088e9b8 -[WKContentView(WKInteraction) _elementDidBlur] + 84 (WKContentViewInteraction.mm:8023)
28  WebKit                        	0x1b088e168 -[WKContentView(WKInteraction) _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:] + 536 (WKContentViewInteraction.mm:7883)
29  WebKit                        	0x1b01fd4e8 WebKit::PageClientImpl::elementDidFocus(WebKit::FocusedElementInformation const&, bool, bool, WTF::OptionSet<WebCore::ActivityState>, API::Object*) + 108 (PageClientImplIOS.mm:652)
30  WebKit                        	0x1b022be88 WebKit::WebPageProxy::elementDidFocus(WebKit::FocusedElementInformation const&, bool, bool, WTF::OptionSet<WebCore::ActivityState>, WebKit::UserData const&) + 168 (WebPageProxyIOS.mm:937)
31  WebKit                        	0x1b07c6b5c WebKit::WebPageProxy::didReceiveMessage(IPC::Connection&, IPC::Decoder&) + 24380 (WebPageProxyMessageReceiver.cpp:704)
32  WebKit                        	0x1b08d9718 IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&, IPC::Decoder&) + 264 (MessageReceiverMap.cpp:129)
33  WebKit                        	0x1b037a270 WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&, IPC::Decoder&) + 44 (WebProcessProxy.cpp:1061)
Comment 1 Radar WebKit Bug Importer 2024-02-12 18:10:41 PST
<rdar://problem/122843112>
Comment 2 Wenson Hsieh 2024-02-13 09:13:19 PST
Pull request: https://github.com/WebKit/WebKit/pull/24345
Comment 3 EWS 2024-02-13 11:05:39 PST
Committed 274559@main (e12d22941da3): <https://commits.webkit.org/274559@main>

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