Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AppTile errors lead to infinite loops #15494

Closed
jryans opened this issue Oct 19, 2020 · 5 comments · Fixed by matrix-org/matrix-react-sdk#7071
Closed

AppTile errors lead to infinite loops #15494

jryans opened this issue Oct 19, 2020 · 5 comments · Fixed by matrix-org/matrix-react-sdk#7071
Assignees
Labels
A-Performance A-Widgets P1 S-Major Severely degrades major functionality or product features, with no satisfactory workaround T-Defect

Comments

@jryans
Copy link
Collaborator

jryans commented Oct 19, 2020

In AppTile#_startWidget, we'll try to start theStopGapWidget. If this throws an error for some reason, the AppTile component gets trapped in an infinite loop constantly recreating widgets.

To simulate this, do something like adding throw new Error() in StopGapWidget#start.

@turt2live
Copy link
Member

There's very few things which should go wrong with this area, which is why it wasn't necessarily considered ftr.

@jryans
Copy link
Collaborator Author

jryans commented Oct 19, 2020

It's possible it might be hard to trigger in practice, but I'd like to defend against if we can, to avoid paths that might trigger loops like this. Perhaps an localised error boundary around each widget would be good to have as well.

@turt2live turt2live self-assigned this Oct 19, 2020
@turt2live turt2live added the S-Major Severely degrades major functionality or product features, with no satisfactory workaround label Oct 19, 2020
@turt2live turt2live removed their assignment Oct 19, 2020
@dbkr
Copy link
Member

dbkr commented Oct 23, 2020

Digging into this in more detail, this is because because AppTile tries to 'reset' the widget if it's ref is set to null, so if the ref callback throws, react unmounts the widget component to replace it with its error component, calls the ref callback with null, which tries to mount it again.

I'm not sure what the logic is of trying to force the iframe back into existence if it was unmounted for some reason.

@turt2live
Copy link
Member

I'm not sure what the logic is of trying to force the iframe back into existence if it was unmounted for some reason.

The code is trying to stop the messaging if it was started and prepare for when the iframe might be re-mounted, as would be the case for if the user revoked permissions (or the widget changed) then re-accepted without ever leaving the room. The same also applies for minimizing the widget.

@dbkr
Copy link
Member

dbkr commented Oct 26, 2020

Ah - so the bug here is that it shouldn't be trying to re-mount the iframe at all, but that's what it's doing.

@jryans jryans removed the defect label Mar 4, 2021
@toger5 toger5 self-assigned this Oct 29, 2021
BBaoVanC added a commit to boba-best/element.boba.best that referenced this issue Nov 22, 2021
* Make double-clicking the PiP take you to the call room ([\element-hq#7142](matrix-org/matrix-react-sdk#7142)). Fixes element-hq#18421 element-hq#15920 and element-hq#18421. Contributed by @SimonBrandner.
* Add maximise widget functionality ([\element-hq#7098](matrix-org/matrix-react-sdk#7098)). Fixes element-hq#19619, element-hq#19621 element-hq#19760 and element-hq#19619.
* Add rainfall effect ([\element-hq#7086](matrix-org/matrix-react-sdk#7086)). Contributed by @justjosias.
* Add root folder to zip file created by export chat feature ([\element-hq#7097](matrix-org/matrix-react-sdk#7097)). Fixes element-hq#19653 and element-hq#19653. Contributed by @aaronraimist.
* Improve VoIP UI/UX ([\element-hq#7048](matrix-org/matrix-react-sdk#7048)). Fixes element-hq#19513 and element-hq#19513. Contributed by @SimonBrandner.
* Unified room context menus ([\element-hq#7072](matrix-org/matrix-react-sdk#7072)). Fixes element-hq#19527 and element-hq#19527.
* In forgot password screen, show validation errors inline in the form, instead of in modals ([\element-hq#7113](matrix-org/matrix-react-sdk#7113)). Contributed by @psrpinto.
* Implement more meta-spaces ([\element-hq#7077](matrix-org/matrix-react-sdk#7077)). Fixes element-hq#18634 element-hq#17295 and element-hq#18634.
* Expose power level control for m.space.child ([\#7120](matrix-org/matrix-react-sdk#7120)).
* Forget member-list query when switching out of a room ([\element-hq#7093](matrix-org/matrix-react-sdk#7093)). Fixes element-hq#19432 and element-hq#19432. Contributed by @SimonBrandner.
* Do pre-submit availability check on username during registration ([\#6978](matrix-org/matrix-react-sdk#6978)). Fixes element-hq#9545 and element-hq#9545.
* Adjust recovery key button sizes depending on text width ([\element-hq#7134](matrix-org/matrix-react-sdk#7134)). Fixes element-hq#19511 and element-hq#19511. Contributed by @weeman1337.
* Fix bulk invite button getting a negative count ([\element-hq#7122](matrix-org/matrix-react-sdk#7122)). Fixes element-hq#19466 and element-hq#19466. Contributed by @renancleyson-dev.
* Fix maximised / pinned widget state being loaded correctly ([\element-hq#7146](matrix-org/matrix-react-sdk#7146)). Fixes element-hq#19768 and element-hq#19768.
* Don't reload the page when user hits enter when entering ban reason ([\element-hq#7145](matrix-org/matrix-react-sdk#7145)). Fixes element-hq#19763 and element-hq#19763.
* Fix timeline text when sharing room layout ([\element-hq#7140](matrix-org/matrix-react-sdk#7140)). Fixes element-hq#19622 and element-hq#19622.
* Fix look of emoji verification ([\element-hq#7133](matrix-org/matrix-react-sdk#7133)). Fixes element-hq#19740 and element-hq#19740. Contributed by @SimonBrandner.
* Fixes element not remembering widget hidden state per room ([\#7136](matrix-org/matrix-react-sdk#7136)). Fixes element-hq#16672, matrix-org/element-web-rageshakes#4407, element-hq#15718 element-hq#15768 and element-hq#16672.
* Don't keep spinning if joining space child failed ([\element-hq#7129](matrix-org/matrix-react-sdk#7129)). Fixes matrix-org/element-web-rageshakes#6813 and matrix-org/element-web-rageshakes#6813.
* Guard around SpaceStore onAccountData handler prevEvent ([\element-hq#7123](matrix-org/matrix-react-sdk#7123)). Fixes element-hq#19705 and element-hq#19705.
* Fix missing spaces in threads copy ([\element-hq#7119](matrix-org/matrix-react-sdk#7119)). Fixes element-hq#19702 and element-hq#19702.
* Fix hover tile border ([\element-hq#7117](matrix-org/matrix-react-sdk#7117)). Fixes element-hq#19698 and element-hq#19698. Contributed by @SimonBrandner.
* Fix quote button ([\element-hq#7096](matrix-org/matrix-react-sdk#7096)). Fixes element-hq#19659 and element-hq#19659. Contributed by @SimonBrandner.
* Fix space panel layout edge cases ([\#7101](matrix-org/matrix-react-sdk#7101)). Fixes element-hq#19668 and element-hq#19668.
* Update powerlevel/role when the user changes in the user info panel ([\element-hq#7099](matrix-org/matrix-react-sdk#7099)). Fixes element-hq#19666 and element-hq#19666. Contributed by @SimonBrandner.
* Fix avatar disappearing when setting a room topic ([\element-hq#7092](matrix-org/matrix-react-sdk#7092)). Fixes element-hq#19226 and element-hq#19226. Contributed by @SimonBrandner.
* Fix possible infinite loop on widget start ([\#7071](matrix-org/matrix-react-sdk#7071)). Fixes element-hq#15494 and element-hq#15494.
* Use device IDs for nameless devices in device list ([\element-hq#7081](matrix-org/matrix-react-sdk#7081)). Fixes element-hq#19608 and element-hq#19608.
* Don't re-sort rooms on no-op RoomUpdateCause.PossibleTagChange ([\element-hq#7053](matrix-org/matrix-react-sdk#7053)). Contributed by @bradtgmurray.
su-ex added a commit to SchildiChat/element-web that referenced this issue Nov 24, 2021
* Make double-clicking the PiP take you to the call room ([\element-hq#7142](matrix-org/matrix-react-sdk#7142)). Fixes element-hq#18421 element-hq#15920 and element-hq#18421. Contributed by @SimonBrandner.
* Add maximise widget functionality ([\element-hq#7098](matrix-org/matrix-react-sdk#7098)). Fixes element-hq#19619, element-hq#19621 element-hq#19760 and element-hq#19619.
* Add rainfall effect ([\element-hq#7086](matrix-org/matrix-react-sdk#7086)). Contributed by @justjosias.
* Add root folder to zip file created by export chat feature ([\element-hq#7097](matrix-org/matrix-react-sdk#7097)). Fixes element-hq#19653 and element-hq#19653. Contributed by @aaronraimist.
* Improve VoIP UI/UX ([\element-hq#7048](matrix-org/matrix-react-sdk#7048)). Fixes element-hq#19513 and element-hq#19513. Contributed by @SimonBrandner.
* Unified room context menus ([\element-hq#7072](matrix-org/matrix-react-sdk#7072)). Fixes element-hq#19527 and element-hq#19527.
* In forgot password screen, show validation errors inline in the form, instead of in modals ([\element-hq#7113](matrix-org/matrix-react-sdk#7113)). Contributed by @psrpinto.
* Implement more meta-spaces ([\element-hq#7077](matrix-org/matrix-react-sdk#7077)). Fixes element-hq#18634 element-hq#17295 and element-hq#18634.
* Expose power level control for m.space.child ([\#7120](matrix-org/matrix-react-sdk#7120)).
* Forget member-list query when switching out of a room ([\element-hq#7093](matrix-org/matrix-react-sdk#7093)). Fixes element-hq#19432 and element-hq#19432. Contributed by @SimonBrandner.
* Do pre-submit availability check on username during registration ([\#6978](matrix-org/matrix-react-sdk#6978)). Fixes element-hq#9545 and element-hq#9545.
* Adjust recovery key button sizes depending on text width ([\element-hq#7134](matrix-org/matrix-react-sdk#7134)). Fixes element-hq#19511 and element-hq#19511. Contributed by @weeman1337.
* Fix bulk invite button getting a negative count ([\element-hq#7122](matrix-org/matrix-react-sdk#7122)). Fixes element-hq#19466 and element-hq#19466. Contributed by @renancleyson-dev.
* Fix maximised / pinned widget state being loaded correctly ([\element-hq#7146](matrix-org/matrix-react-sdk#7146)). Fixes element-hq#19768 and element-hq#19768.
* Don't reload the page when user hits enter when entering ban reason ([\element-hq#7145](matrix-org/matrix-react-sdk#7145)). Fixes element-hq#19763 and element-hq#19763.
* Fix timeline text when sharing room layout ([\element-hq#7140](matrix-org/matrix-react-sdk#7140)). Fixes element-hq#19622 and element-hq#19622.
* Fix look of emoji verification ([\element-hq#7133](matrix-org/matrix-react-sdk#7133)). Fixes element-hq#19740 and element-hq#19740. Contributed by @SimonBrandner.
* Fixes element not remembering widget hidden state per room ([\#7136](matrix-org/matrix-react-sdk#7136)). Fixes element-hq#16672, matrix-org/element-web-rageshakes#4407, element-hq#15718 element-hq#15768 and element-hq#16672.
* Don't keep spinning if joining space child failed ([\element-hq#7129](matrix-org/matrix-react-sdk#7129)). Fixes matrix-org/element-web-rageshakes#6813 and matrix-org/element-web-rageshakes#6813.
* Guard around SpaceStore onAccountData handler prevEvent ([\element-hq#7123](matrix-org/matrix-react-sdk#7123)). Fixes element-hq#19705 and element-hq#19705.
* Fix missing spaces in threads copy ([\element-hq#7119](matrix-org/matrix-react-sdk#7119)). Fixes element-hq#19702 and element-hq#19702.
* Fix hover tile border ([\element-hq#7117](matrix-org/matrix-react-sdk#7117)). Fixes element-hq#19698 and element-hq#19698. Contributed by @SimonBrandner.
* Fix quote button ([\element-hq#7096](matrix-org/matrix-react-sdk#7096)). Fixes element-hq#19659 and element-hq#19659. Contributed by @SimonBrandner.
* Fix space panel layout edge cases ([\#7101](matrix-org/matrix-react-sdk#7101)). Fixes element-hq#19668 and element-hq#19668.
* Update powerlevel/role when the user changes in the user info panel ([\element-hq#7099](matrix-org/matrix-react-sdk#7099)). Fixes element-hq#19666 and element-hq#19666. Contributed by @SimonBrandner.
* Fix avatar disappearing when setting a room topic ([\element-hq#7092](matrix-org/matrix-react-sdk#7092)). Fixes element-hq#19226 and element-hq#19226. Contributed by @SimonBrandner.
* Fix possible infinite loop on widget start ([\#7071](matrix-org/matrix-react-sdk#7071)). Fixes element-hq#15494 and element-hq#15494.
* Use device IDs for nameless devices in device list ([\element-hq#7081](matrix-org/matrix-react-sdk#7081)). Fixes element-hq#19608 and element-hq#19608.
* Don't re-sort rooms on no-op RoomUpdateCause.PossibleTagChange ([\element-hq#7053](matrix-org/matrix-react-sdk#7053)). Contributed by @bradtgmurray.
su-ex added a commit to SchildiChat/element-desktop that referenced this issue Nov 24, 2021
* Make double-clicking the PiP take you to the call room ([\#7142](matrix-org/matrix-react-sdk#7142)). Fixes element-hq/element-web#18421 element-hq/element-web#15920 and element-hq/element-web#18421. Contributed by @SimonBrandner.
* Add maximise widget functionality ([\#7098](matrix-org/matrix-react-sdk#7098)). Fixes element-hq/element-web#19619, element-hq/element-web#19621 element-hq/element-web#19760 and element-hq/element-web#19619.
* Add rainfall effect ([\#7086](matrix-org/matrix-react-sdk#7086)). Contributed by @justjosias.
* Add root folder to zip file created by export chat feature ([\#7097](matrix-org/matrix-react-sdk#7097)). Fixes element-hq/element-web#19653 and element-hq/element-web#19653. Contributed by @aaronraimist.
* Improve VoIP UI/UX ([\#7048](matrix-org/matrix-react-sdk#7048)). Fixes element-hq/element-web#19513 and element-hq/element-web#19513. Contributed by @SimonBrandner.
* Unified room context menus ([\#7072](matrix-org/matrix-react-sdk#7072)). Fixes element-hq/element-web#19527 and element-hq/element-web#19527.
* In forgot password screen, show validation errors inline in the form, instead of in modals ([\#7113](matrix-org/matrix-react-sdk#7113)). Contributed by @psrpinto.
* Implement more meta-spaces ([\#7077](matrix-org/matrix-react-sdk#7077)). Fixes element-hq/element-web#18634 element-hq/element-web#17295 and element-hq/element-web#18634.
* Expose power level control for m.space.child ([\#7120](matrix-org/matrix-react-sdk#7120)).
* Forget member-list query when switching out of a room ([\#7093](matrix-org/matrix-react-sdk#7093)). Fixes element-hq/element-web#19432 and element-hq/element-web#19432. Contributed by @SimonBrandner.
* Do pre-submit availability check on username during registration ([\#6978](matrix-org/matrix-react-sdk#6978)). Fixes element-hq/element-web#9545 and element-hq/element-web#9545.
* Adjust recovery key button sizes depending on text width ([\#7134](matrix-org/matrix-react-sdk#7134)). Fixes element-hq/element-web#19511 and element-hq/element-web#19511. Contributed by @weeman1337.
* Fix bulk invite button getting a negative count ([\#7122](matrix-org/matrix-react-sdk#7122)). Fixes element-hq/element-web#19466 and element-hq/element-web#19466. Contributed by @renancleyson-dev.
* Fix maximised / pinned widget state being loaded correctly ([\#7146](matrix-org/matrix-react-sdk#7146)). Fixes element-hq/element-web#19768 and element-hq/element-web#19768.
* Don't reload the page when user hits enter when entering ban reason ([\#7145](matrix-org/matrix-react-sdk#7145)). Fixes element-hq/element-web#19763 and element-hq/element-web#19763.
* Fix timeline text when sharing room layout ([\#7140](matrix-org/matrix-react-sdk#7140)). Fixes element-hq/element-web#19622 and element-hq/element-web#19622.
* Fix look of emoji verification ([\#7133](matrix-org/matrix-react-sdk#7133)). Fixes element-hq/element-web#19740 and element-hq/element-web#19740. Contributed by @SimonBrandner.
* Fixes element not remembering widget hidden state per room ([\#7136](matrix-org/matrix-react-sdk#7136)). Fixes element-hq/element-web#16672, matrix-org/element-web-rageshakes#4407, element-hq/element-web#15718 element-hq/element-web#15768 and element-hq/element-web#16672.
* Don't keep spinning if joining space child failed ([\#7129](matrix-org/matrix-react-sdk#7129)). Fixes matrix-org/element-web-rageshakes#6813 and matrix-org/element-web-rageshakes#6813.
* Guard around SpaceStore onAccountData handler prevEvent ([\#7123](matrix-org/matrix-react-sdk#7123)). Fixes element-hq/element-web#19705 and element-hq/element-web#19705.
* Fix missing spaces in threads copy ([\#7119](matrix-org/matrix-react-sdk#7119)). Fixes element-hq/element-web#19702 and element-hq/element-web#19702.
* Fix hover tile border ([\#7117](matrix-org/matrix-react-sdk#7117)). Fixes element-hq/element-web#19698 and element-hq/element-web#19698. Contributed by @SimonBrandner.
* Fix quote button ([\#7096](matrix-org/matrix-react-sdk#7096)). Fixes element-hq/element-web#19659 and element-hq/element-web#19659. Contributed by @SimonBrandner.
* Fix space panel layout edge cases ([\#7101](matrix-org/matrix-react-sdk#7101)). Fixes element-hq/element-web#19668 and element-hq/element-web#19668.
* Update powerlevel/role when the user changes in the user info panel ([\#7099](matrix-org/matrix-react-sdk#7099)). Fixes element-hq/element-web#19666 and element-hq/element-web#19666. Contributed by @SimonBrandner.
* Fix avatar disappearing when setting a room topic ([\#7092](matrix-org/matrix-react-sdk#7092)). Fixes element-hq/element-web#19226 and element-hq/element-web#19226. Contributed by @SimonBrandner.
* Fix possible infinite loop on widget start ([\#7071](matrix-org/matrix-react-sdk#7071)). Fixes element-hq/element-web#15494 and element-hq/element-web#15494.
* Use device IDs for nameless devices in device list ([\#7081](matrix-org/matrix-react-sdk#7081)). Fixes element-hq/element-web#19608 and element-hq/element-web#19608.
* Don't re-sort rooms on no-op RoomUpdateCause.PossibleTagChange ([\#7053](matrix-org/matrix-react-sdk#7053)). Contributed by @bradtgmurray.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-Performance A-Widgets P1 S-Major Severely degrades major functionality or product features, with no satisfactory workaround T-Defect
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants