wordpress-mobile / gutenberg-mobile

Mobile version of Gutenberg - native iOS and Android
GNU General Public License v2.0
241 stars 55 forks source link

RangeError: Maximum call stack size exceeded (native stack depth) #6433

Open fluiddot opened 9 months ago

fluiddot commented 9 months ago

This issue is a follow-up to this comment.

This crash is produced by different stack traces:

JETPACK-ANDROID-HTT

How to reproduce it

šŸ” Under investigation...

Symbolicated stack trace

gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/browser/index.js:268:defineGetter$argument_2
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/browser/index.js:274:defineGetter$argument_2
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:654:Node.prototype.cloneNode
gutenberg/packages/rich-text/src/create.js:366:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:392:Array.from.forEach$argument_0
gutenberg/packages/rich-text/src/create.js:368:collapseWhiteSpace
gutenberg/packages/rich-text/src/create.js:133:RichTextData.fromHTMLElement
gutenberg/packages/blocks/src/api/matchers.js:53:<anonymous>
gutenberg/packages/blocks/src/api/parser/get-block-attributes.js:280:parseWithAttributeSchema
gutenberg/packages/blocks/src/api/parser/get-block-attributes.js:155:getBlockAttribute
gutenberg/packages/blocks/src/api/parser/get-block-attributes.js:304:Object.entries.map$argument_0
gutenberg/packages/blocks/src/api/parser/get-block-attributes.js:301:getBlockAttributes
gutenberg/packages/blocks/src/api/parser/index.js:234:parseRawBlock
gutenberg/packages/blocks/src/api/parser/index.js:312:grammarParse.reduce$argument_0
gutenberg/packages/blocks/src/api/parser/index.js:311:parse
gutenberg/packages/edit-post/src/editor.native.js:168:Editor#render
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:4729:finishClassComponent
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:4700:updateClassComponent
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:7866:beginWork$1
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:7304:performUnitOfWork
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:7297:workLoopSync
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:7279:renderRootSync
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:6975:performSyncWorkOnRoot
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:2145:flushSyncCallbacks
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:6650:scheduleUpdateOnFiber
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:8423:updateContainer
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:8584:exports.render
gutenberg/node_modules/react-native/Libraries/ReactNative/RendererImplementation.js:35:renderElement
gutenberg/node_modules/react-native/Libraries/ReactNative/renderApplication.js:96:renderApplication
gutenberg/node_modules/react-native/Libraries/ReactNative/AppRegistry.js:120:runnables.appKey.run
gutenberg/node_modules/react-native/Libraries/ReactNative/AppRegistry.js:214:runApplication
gutenberg/node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:427:__callFunction
gutenberg/node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:113:__guard$argument_0
gutenberg/node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:368:__guard
gutenberg/node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:112:callFunctionReturnFlushedQueue

JETPACK-ANDROID-HTM

How to reproduce it

šŸ” Under investigation...

Symbolicated stack trace

gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:136:Array.from.forEach$argument_0
gutenberg/packages/blocks/src/api/raw-handling/utils.js:135:deepFilterNodeList
gutenberg/packages/blocks/src/api/raw-handling/utils.js:164:deepFilterHTML
gutenberg/packages/blocks/src/api/raw-handling/paste-handler.js:119:pasteHandler
gutenberg/packages/block-editor/src/components/rich-text/index.native.js:436:onPaste
gutenberg/packages/block-editor/src/components/rich-text/native/index.native.js:537:RichText#onPaste
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:22:invokeGuardedCallbackImpl
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:40:invokeGuardedCallback
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:53:invokeGuardedCallbackAndCatchFirstError
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:73:executeDispatch
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:1125:executeDispatchesAndReleaseTopLevel
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:361:forEachAccumulated
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:1160:batchedUpdates$argument_0
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:8457:batchedUpdatesImpl
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:1106:batchedUpdates
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:1137:_receiveRootNodeIDEvent
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:1178:ReactNativePrivateInterface.RCTEventEmitter.register$argument_0.receiveEvent
gutenberg/node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:427:__callFunction
gutenberg/node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:113:__guard$argument_0
gutenberg/node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:368:__guard
gutenberg/node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:112:callFunctionReturnFlushedQueue

JETPACK-ANDROID-HSV

How to reproduce it

šŸ” Under investigation...

Symbolicated stack trace

gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/browser/index.js:268:defineGetter$argument_2
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:1367:filterByTagName
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:48:reducer
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:44:visit
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:52:reducer
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:44:visit
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:52:reducer
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:44:visit
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:52:reducer
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:44:visit
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:52:reducer
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:44:visit
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:52:reducer
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:44:visit
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:52:reducer
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:44:visit
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:52:reducer
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:44:visit
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:52:reducer
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:44:visit
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:52:reducer
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:44:visit
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:52:reducer
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:44:visit
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:52:reducer
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:44:visit
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:52:reducer
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:44:visit
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:52:reducer
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:44:visit
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:57:mapDOMNodes
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:37:<anonymous>
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:207:NodeList.prototype._update
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:185:NodeList
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/level1/core.js:1375:inheritFrom$argument_2.getElementsByTagName
gutenberg/node_modules/jsdom-jscore-rn/lib/builtins/nwmatcher/src/nwmatcher-noqsa.js:881:select
gutenberg/node_modules/jsdom-jscore-rn/lib/builtins/nwmatcher/src/nwmatcher-noqsa.js:798:first
gutenberg/node_modules/jsdom-jscore-rn/lib/jsdom/selectors/index.js:29:dom.Element.prototype.querySelector
gutenberg/packages/blocks/src/api/matchers.js:51:<anonymous>
gutenberg/packages/blocks/src/api/parser/get-block-attributes.js:280:parseWithAttributeSchema
gutenberg/packages/blocks/src/api/parser/get-block-attributes.js:155:getBlockAttribute
gutenberg/packages/blocks/src/api/parser/get-block-attributes.js:304:Object.entries.map$argument_0
gutenberg/packages/blocks/src/api/parser/get-block-attributes.js:301:getBlockAttributes
gutenberg/packages/blocks/src/api/parser/index.js:234:parseRawBlock
gutenberg/packages/blocks/src/api/parser/index.js:227:normalizedBlock.innerBlocks.map$argument_0
gutenberg/packages/blocks/src/api/parser/index.js:227:parseRawBlock
gutenberg/packages/blocks/src/api/parser/index.js:312:grammarParse.reduce$argument_0
gutenberg/packages/blocks/src/api/parser/index.js:311:parse
gutenberg/packages/edit-post/src/editor.native.js:168:Editor#render
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:4729:finishClassComponent
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:4700:updateClassComponent
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:7866:beginWork$1
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:7304:performUnitOfWork
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:7297:workLoopSync
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:7279:renderRootSync
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:6975:performSyncWorkOnRoot
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:2145:flushSyncCallbacks
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:6650:scheduleUpdateOnFiber
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:8423:updateContainer
gutenberg/node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:8584:exports.render
gutenberg/node_modules/react-native/Libraries/ReactNative/RendererImplementation.js:35:renderElement
gutenberg/node_modules/react-native/Libraries/ReactNative/renderApplication.js:96:renderApplication
gutenberg/node_modules/react-native/Libraries/ReactNative/AppRegistry.js:120:runnables.appKey.run
gutenberg/node_modules/react-native/Libraries/ReactNative/AppRegistry.js:214:runApplication
gutenberg/node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:427:__callFunction
gutenberg/node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:113:__guard$argument_0
gutenberg/node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:368:__guard
gutenberg/node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:112:callFunctionReturnFlushedQueue
fluiddot commented 9 months ago

So far there are only two user sessions that can be explored, however, only one of them produced a crash when testing. The post content of the user session explored was massive, with several hundreds of blocks nested each other. In fact, the same content crashed when using the web browser.

Until we get more events and new user sessions, I'd put the investigations on hold.

sentry-io[bot] commented 7 months ago

Sentry issue: JETPACK-ANDROID-HTT

sentry-io[bot] commented 7 months ago

Sentry issue: JETPACK-ANDROID-HTM

sentry-io[bot] commented 7 months ago

Sentry issue: JETPACK-ANDROID-HSV