Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Conversation

jason-simmons
Copy link
Member

SkiaUnrefQueue should be empty at destruction time. If the queue is nonempty,
then there will be a pending drain task that will hold a reference to the
queue. The queue can only be destructed after the drain completes and the
reference is dropped.

Drains must only be done on the queue's task runner thread, which may not be
the thread where the queue is destructed.

@Hixie
Copy link
Contributor

Hixie commented Oct 18, 2019

test?

@jason-simmons
Copy link
Member Author

This assertion will be checked whenever any engine test destructs the Shell

@Hixie
Copy link
Contributor

Hixie commented Oct 18, 2019

The test would be to verify that the assert actually throws in the case you're trying to catch, so that e.g. someone could refactor this code with confidence knowing that their refactor still tests the same thing.

@jason-simmons jason-simmons force-pushed the io_thread_skia_queue branch 2 times, most recently from 6209d30 to 56d3fe3 Compare October 19, 2019 00:44
@jason-simmons
Copy link
Member Author

Added a test for SkiaUnrefQueue

SkiaUnrefQueue should be empty at destruction time.  If the queue is nonempty,
then there will be a pending drain task that will hold a reference to the
queue.  The queue can only be destructed after the drain completes and the
reference is dropped.

Drains must only be done on the queue's task runner thread, which may not be
the thread where the queue is destructed.
@Hixie
Copy link
Contributor

Hixie commented Oct 19, 2019

thanks!

@jason-simmons jason-simmons merged commit 4f85010 into flutter:master Oct 21, 2019
engine-flutter-autoroll added a commit to flutter/flutter that referenced this pull request Oct 22, 2019
[email protected]:flutter/engine.git/compare/8882bf3c73f5...39e6901

git log 8882bf3..39e6901 --no-merges --oneline
2019-10-21 [email protected] Add recipe changelog (flutter/engine#13270)
2019-10-21 [email protected] fix NPE in accessibility bridge (flutter/engine#13255)
2019-10-21 [email protected] Roll src/third_party/skia 9889d509ed9f..56f569d9bec2 (21 commits) (flutter/engine#13266)
2019-10-21 [email protected] Roll fuchsia/sdk/core/mac-amd64 from hc4p_... to hALu4... (flutter/engine#13252)
2019-10-21 [email protected] [web] Support input action (flutter/engine#13268)
2019-10-21 [email protected] [web] Support -j to use goma in felt build (flutter/engine#13259)
2019-10-21 [email protected] Roll fuchsia/sdk/core/linux-amd64 from 30Ua7... to _e7Up... (flutter/engine#13254)
2019-10-21 [email protected] Hold a reference to the Skia unref queue in UIDartState (flutter/engine#13239)
2019-10-21 [email protected] Do not attempt to drain the SkiaUnrefQueue in the destructor (flutter/engine#13237)
2019-10-21 [email protected] Updated license script to ignore testdata directories, which often contain object files and other compilation results (flutter/engine#13261)
2019-10-21 [email protected] Add templates to generate fuchsia host bundles (flutter/engine#13158)
2019-10-21 [email protected] Update ui.instantiateImageCodec docs to reflect what it does. (flutter/engine#13233)
2019-10-21 [email protected] Update CanvasKit to 0.7.0 and flesh out painting (flutter/engine#13240)
2019-10-19 [email protected] Roll fuchsia/sdk/core/linux-amd64 from CYDvx... to 30Ua7... (flutter/engine#13251)
2019-10-19 [email protected] Roll fuchsia/sdk/core/mac-amd64 from 0JpMS... to hc4p_... (flutter/engine#13250)
2019-10-19 [email protected] Roll fuchsia/sdk/core/linux-amd64 from bdTv5... to CYDvx... (flutter/engine#13249)
2019-10-19 [email protected] Roll src/third_party/skia c65eb34d2f37..9889d509ed9f (1 commits) (flutter/engine#13248)
2019-10-19 [email protected] Roll fuchsia/sdk/core/mac-amd64 from SevlL... to 0JpMS... (flutter/engine#13244)
2019-10-19 [email protected] Roll src/third_party/skia 7605c89c00f7..c65eb34d2f37 (3 commits) (flutter/engine#13243)
2019-10-19 [email protected] Ignore *.obj files when gathering licenses (flutter/engine#13241)
2019-10-18 [email protected] Roll buildroot to 994c6 (flutter/engine#13236)


If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC [email protected] on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
Inconnu08 pushed a commit to Inconnu08/flutter that referenced this pull request Nov 26, 2019
[email protected]:flutter/engine.git/compare/8882bf3c73f5...39e6901

git log 8882bf3..39e6901 --no-merges --oneline
2019-10-21 [email protected] Add recipe changelog (flutter/engine#13270)
2019-10-21 [email protected] fix NPE in accessibility bridge (flutter/engine#13255)
2019-10-21 [email protected] Roll src/third_party/skia 9889d509ed9f..56f569d9bec2 (21 commits) (flutter/engine#13266)
2019-10-21 [email protected] Roll fuchsia/sdk/core/mac-amd64 from hc4p_... to hALu4... (flutter/engine#13252)
2019-10-21 [email protected] [web] Support input action (flutter/engine#13268)
2019-10-21 [email protected] [web] Support -j to use goma in felt build (flutter/engine#13259)
2019-10-21 [email protected] Roll fuchsia/sdk/core/linux-amd64 from 30Ua7... to _e7Up... (flutter/engine#13254)
2019-10-21 [email protected] Hold a reference to the Skia unref queue in UIDartState (flutter/engine#13239)
2019-10-21 [email protected] Do not attempt to drain the SkiaUnrefQueue in the destructor (flutter/engine#13237)
2019-10-21 [email protected] Updated license script to ignore testdata directories, which often contain object files and other compilation results (flutter/engine#13261)
2019-10-21 [email protected] Add templates to generate fuchsia host bundles (flutter/engine#13158)
2019-10-21 [email protected] Update ui.instantiateImageCodec docs to reflect what it does. (flutter/engine#13233)
2019-10-21 [email protected] Update CanvasKit to 0.7.0 and flesh out painting (flutter/engine#13240)
2019-10-19 [email protected] Roll fuchsia/sdk/core/linux-amd64 from CYDvx... to 30Ua7... (flutter/engine#13251)
2019-10-19 [email protected] Roll fuchsia/sdk/core/mac-amd64 from 0JpMS... to hc4p_... (flutter/engine#13250)
2019-10-19 [email protected] Roll fuchsia/sdk/core/linux-amd64 from bdTv5... to CYDvx... (flutter/engine#13249)
2019-10-19 [email protected] Roll src/third_party/skia c65eb34d2f37..9889d509ed9f (1 commits) (flutter/engine#13248)
2019-10-19 [email protected] Roll fuchsia/sdk/core/mac-amd64 from SevlL... to 0JpMS... (flutter/engine#13244)
2019-10-19 [email protected] Roll src/third_party/skia 7605c89c00f7..c65eb34d2f37 (3 commits) (flutter/engine#13243)
2019-10-19 [email protected] Ignore *.obj files when gathering licenses (flutter/engine#13241)
2019-10-18 [email protected] Roll buildroot to 994c6 (flutter/engine#13236)


If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC [email protected] on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
@knopp
Copy link
Member

knopp commented May 12, 2021

The assumption in original comment is not always true. When scheduling delayed tasks, the MessageLoop will dispose tasks without executing them, causing ~SkiaUnrefQueue being destroyed with non empty objects_.

See flutter/flutter#82353.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants