I'm seeing a very similar thing happening when running our app on an M1 Mac or using Catalyst: All you need is a WKWebView with a textarea element. When you use the keyboard arrow keys to quickly move up and down a few times, you get the beachball of death and a similar stack trace:
17 main + 64 (AppDelegate.swift:17,7 in MyApp + 3103436) [0x1048a9acc]
17 UIApplicationMain + 164 (UIKitCore + 11036) [0x1c4e95b1c]
17 UINSApplicationMain + 1280 (UIKitMacHelper + 19992) [0x1b4f88e18]
17 _NSApplicationMainWithInfoDictionary + 24 (AppKit + 3091152) [0x1a4afaad0]
17 NSApplicationMain + 1064 (AppKit + 14456) [0x1a480b878]
17 -[NSApplication run] + 596 (AppKit + 204364) [0x1a4839e4c]
17 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1292 (AppKit + 262144) [0x1a4848000]
17 _DPSNextEvent + 836 (AppKit + 267872) [0x1a4849660]
17 _BlockUntilNextEventMatchingListInModeWithFilter + 72 (HIToolbox + 194164) [0x1a9f7c674]
17 ReceiveNextEventCommon + 552 (HIToolbox + 194740) [0x1a9f7c8b4]
17 RunCurrentEventLoopInMode + 292 (HIToolbox + 195392) [0x1a9f7cb40]
17 CFRunLoopRunSpecific + 600 (CoreFoundation + 528808) [0x1a20571a8]
17 __CFRunLoopRun + 820 (CoreFoundation + 531540) [0x1a2057c54]
17 __CFRunLoopDoSources0 + 268 (CoreFoundation + 537292) [0x1a20592cc]
17 __CFRunLoopDoSource0 + 208 (CoreFoundation + 538080) [0x1a20595e0]
17 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28 (CoreFoundation + 538260) [0x1a2059694]
17 WTF::RunLoop::performWork(void*) + 36 (JavaScriptCore + 16183380) [0x1d2eb9054]
17 WTF::RunLoop::performWork() + 484 (JavaScriptCore + 16179332) [0x1d2eb8084]
17 WTF::Detail::CallableWrapper<IPC::Connection::SyncMessageState::processIncomingMessage(IPC::Connection&, std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >&)::$_1, void>::call() + 504 (WebKit + 392372) [0x1d379bcb4]
17 IPC::Connection::dispatchMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >) + 760 (WebKit + 388268) [0x1d379acac]
17 WebKit::WebProcessProxy::didReceiveSyncMessage(IPC::Connection&, IPC::Decoder&, std::__1::unique_ptr<IPC::Encoder, std::__1::default_delete<IPC::Encoder> >&) + 44 (WebKit + 3635628) [0x1d3ab39ac]
17 IPC::MessageReceiverMap::dispatchSyncMessage(IPC::Connection&, IPC::Decoder&, std::__1::unique_ptr<IPC::Encoder, std::__1::default_delete<IPC::Encoder> >&) + 132 (WebKit + 508152) [0x1d37b80f8]
17 WebKit::WebPageProxy::didReceiveSyncMessage(IPC::Connection&, IPC::Decoder&, std::__1::unique_ptr<IPC::Encoder, std::__1::default_delete<IPC::Encoder> >&) + 7644 (WebKit + 6020144) [0x1d3cf9c30]
17 WebKit::WebPageProxy::interpretKeyEvent(WebKit::EditorState const&, bool, WTF::CompletionHandler<void (bool)>&&) + 364 (WebKit + 3887956) [0x1d3af1354]
17 -[WKContentView(WKInteraction) _interpretKeyEvent:isCharEvent:] + 212 (WebKit + 6518580) [0x1d3d73734]
17 -[UIKeyboardImpl handleKeyTextCommandForCurrentEvent] + 192 (UIKitCore + 11228716) [0x1c594862c]
17 -[UIKeyboardImpl _handleKeyCommand:] + 28 (UIKitCore + 11312584) [0x1c595cdc8]
17 -[UIKeyboardImpl _handleKeyCommandCommon:testOnly:] + 88 (UIKitCore + 11312688) [0x1c595ce30]
17 -[UIKeyboardImpl handleKeyCommand:repeatOkay:beforePublicKeyCommands:testOnly:] + 4020 (UIKitCore + 11164260) [0x1c5938a64]
17 -[UIKeyboardImpl handleVerticalArrow:shiftDown:beforePublicKeyCommands:testOnly:isVerticalCandidate:hasCandidatesForTypedInput:inputDelegateCommandEnabled:canHandleInputDelegateCommand:savedHistory:keyCommandTypeHandled:] + 316 (UIKitCore + 11224064) [0x1c5947400]
17 __221-[UIKeyboardImpl handleVerticalArrow:shiftDown:beforePublicKeyCommands:testOnly:isVerticalCandidate:hasCandidatesForTypedInput:inputDelegateCommandEnabled:canHandleInputDelegateCommand:savedHistory:keyCommandTypeHandled:]_block_invoke + 80 (UIKitCore + 11224344) [0x1c5947518]
17 -[WKContentView(WKInteraction) _moveDown:withHistory:] + 48 (WebKit + 6520204) [0x1d3d73d8c]
17 -[WKContentView(WKInteraction) executeEditCommandWithCallback:] + 44 (WebKit + 6519572) [0x1d3d73b14]
17 -[UIKeyboardImpl selectionWillChange:] + 84 (UIKitCore + 11187000) [0x1c593e338]
17 -[UIKeyboardImpl prepareForSelectionChange] + 116 (UIKitCore + 11186468) [0x1c593e124]
17 -[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] + 204 (UIKitCore + 11404068) [0x1c5973324]
17 -[UIKeyboardTaskQueue lockWhenReadyForMainThread] + 120 (UIKitCore + 11402144) [0x1c5972ba0]
17 -[NSConditionLock lockWhenCondition:beforeDate:] + 104 (Foundation + 257304) [0x1a2ddcd18]
17 -[NSCondition waitUntilDate:] + 148 (Foundation + 247268) [0x1a2dda5e4]
17 _pthread_cond_wait + 1292 (libsystem_pthread.dylib + 32216) [0x1a1f5bdd8]
17 __psynch_cvwait + 8 (libsystem_kernel.dylib + 17736) [0x1a1f24548]
*17 psynch_cvcontinue + 0 (pthread + 17576) [0xfffffe000a9c04a8]
I feel that it same something to do with this: https://bugs.webkit.org/attachment.cgi?id=375074&action=prettypatch
Setting autocapitalize="none" autocomplete="off" autocorrect="off" spellcheck="false" on the HTML textarea element makes no difference. Any ideas or workarounds?