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

Made FlutterTextField that outlive FlutterTextPlatformNode not crash #37735

Merged
merged 2 commits into from
Nov 18, 2022

Conversation

gaaclarke
Copy link
Member

@gaaclarke gaaclarke commented Nov 18, 2022

The crash happens because there is a dangling pointer when the FlutterTextPlatformNode is deleted but the main event loop has a retain on the FlutterTextField. I'm not sure how problematic this is in practice but it affected tests.

fixes flutter/flutter#115599

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the Flutter Style Guide and the C++, Objective-C, Java style guides.
  • I listed at least one issue that this PR fixes in the description above.
  • I added new tests to check the change I am making or feature I am adding, or Hixie said the PR is test-exempt. See testing the engine for instructions on writing and running engine tests.
  • I updated/added relevant documentation (doc comments with ///).
  • I signed the CLA.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@gaaclarke gaaclarke marked this pull request as ready for review November 18, 2022 18:53
@chunhtai
Copy link
Contributor

the FlutterTextPlatformNode is deleted but the main event loop has a retain on the FlutterTextField

Do you have the error message of the test that failed? It feels weird that the even loop is holding and accessing the api of FlutterTextField even if the FlutterTextPlatformNode has been destroyed

@gaaclarke
Copy link
Member Author

Do you have the error message of the test that failed? It feels weird that the even loop is holding and accessing the api of FlutterTextField even if the FlutterTextPlatformNode has been destroyed

Yea, if you look at the linked issue I have all the debugging information there.

Copy link
Contributor

@chunhtai chunhtai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks for looking into this

@gaaclarke
Copy link
Member Author

@chunhtai no problem, do you think this represents a problem that in practical use of flutter on macos that should be hotfixed?

@gaaclarke gaaclarke merged commit 8e4a718 into flutter:main Nov 18, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 18, 2022
auto-submit bot pushed a commit to flutter/flutter that referenced this pull request Nov 18, 2022
…115672)

* a76ec9158 Roll Fuchsia Linux SDK from lnmSnyJi-2H07tBnV... to WdtwlLEce90PjFJ9z... (flutter/engine#37747)

* 44e2f5854 [Impeller] Change texture upload pipeline in Vulkan (flutter/engine#37623)

* 6a3ad3c14 Roll Skia from 345bceacd298 to 5270b1d26b5f (4 revisions) (flutter/engine#37748)

* 01271891c Do not abort if a MultiFrameCodec is unable to allocate a bitmap buffer (flutter/engine#37534)

* 54232a4c3 Roll Skia from 5270b1d26b5f to cf967e6b1c00 (5 revisions) (flutter/engine#37751)

* 30aa3cc38 [fuchsia][a11y] Set explicit hit regions in flatland embedder (flutter/engine#37338)

* da07c33d2 Make NotifyIdle reject close and past deadlines. (flutter/engine#37737)

* e3844cc1e Add third_party/dart/third_party/binaryen/src as a dependency (flutter/engine#37749)

* aeb2cd95b [Impeller] use SSBOs for gradients where supported (metal/vulkan) (flutter/engine#37654)

* e8aa1c192 Roll Skia from cf967e6b1c00 to f1f59de17204 (2 revisions) (flutter/engine#37756)

* 4311774fb [Impeller] register modern shaders on Vulkan too (flutter/engine#37757)

* 8e4a718d0 Made FlutterTextField that outlive FlutterTextPlatformNode not crash (flutter/engine#37735)

* 446a09dfc [macOS] Use consistent filenames for tests (flutter/engine#37755)

* 7a390f97c Roll Skia from f1f59de17204 to 12f01bc5b57e (1 revision) (flutter/engine#37760)
shogohida pushed a commit to shogohida/flutter that referenced this pull request Dec 7, 2022
…lutter#115672)

* a76ec9158 Roll Fuchsia Linux SDK from lnmSnyJi-2H07tBnV... to WdtwlLEce90PjFJ9z... (flutter/engine#37747)

* 44e2f5854 [Impeller] Change texture upload pipeline in Vulkan (flutter/engine#37623)

* 6a3ad3c14 Roll Skia from 345bceacd298 to 5270b1d26b5f (4 revisions) (flutter/engine#37748)

* 01271891c Do not abort if a MultiFrameCodec is unable to allocate a bitmap buffer (flutter/engine#37534)

* 54232a4c3 Roll Skia from 5270b1d26b5f to cf967e6b1c00 (5 revisions) (flutter/engine#37751)

* 30aa3cc38 [fuchsia][a11y] Set explicit hit regions in flatland embedder (flutter/engine#37338)

* da07c33d2 Make NotifyIdle reject close and past deadlines. (flutter/engine#37737)

* e3844cc1e Add third_party/dart/third_party/binaryen/src as a dependency (flutter/engine#37749)

* aeb2cd95b [Impeller] use SSBOs for gradients where supported (metal/vulkan) (flutter/engine#37654)

* e8aa1c192 Roll Skia from cf967e6b1c00 to f1f59de17204 (2 revisions) (flutter/engine#37756)

* 4311774fb [Impeller] register modern shaders on Vulkan too (flutter/engine#37757)

* 8e4a718d0 Made FlutterTextField that outlive FlutterTextPlatformNode not crash (flutter/engine#37735)

* 446a09dfc [macOS] Use consistent filenames for tests (flutter/engine#37755)

* 7a390f97c Roll Skia from f1f59de17204 to 12f01bc5b57e (1 revision) (flutter/engine#37760)
gspencergoog pushed a commit to gspencergoog/flutter that referenced this pull request Jan 19, 2023
…lutter#115672)

* a76ec9158 Roll Fuchsia Linux SDK from lnmSnyJi-2H07tBnV... to WdtwlLEce90PjFJ9z... (flutter/engine#37747)

* 44e2f5854 [Impeller] Change texture upload pipeline in Vulkan (flutter/engine#37623)

* 6a3ad3c14 Roll Skia from 345bceacd298 to 5270b1d26b5f (4 revisions) (flutter/engine#37748)

* 01271891c Do not abort if a MultiFrameCodec is unable to allocate a bitmap buffer (flutter/engine#37534)

* 54232a4c3 Roll Skia from 5270b1d26b5f to cf967e6b1c00 (5 revisions) (flutter/engine#37751)

* 30aa3cc38 [fuchsia][a11y] Set explicit hit regions in flatland embedder (flutter/engine#37338)

* da07c33d2 Make NotifyIdle reject close and past deadlines. (flutter/engine#37737)

* e3844cc1e Add third_party/dart/third_party/binaryen/src as a dependency (flutter/engine#37749)

* aeb2cd95b [Impeller] use SSBOs for gradients where supported (metal/vulkan) (flutter/engine#37654)

* e8aa1c192 Roll Skia from cf967e6b1c00 to f1f59de17204 (2 revisions) (flutter/engine#37756)

* 4311774fb [Impeller] register modern shaders on Vulkan too (flutter/engine#37757)

* 8e4a718d0 Made FlutterTextField that outlive FlutterTextPlatformNode not crash (flutter/engine#37735)

* 446a09dfc [macOS] Use consistent filenames for tests (flutter/engine#37755)

* 7a390f97c Roll Skia from f1f59de17204 to 12f01bc5b57e (1 revision) (flutter/engine#37760)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

macos embedder crashes when pumping the event loop with running engine
2 participants