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

Fuchsia: _rectIsValid assert #11586

Closed
apwilson opened this issue Aug 10, 2017 · 8 comments
Closed

Fuchsia: _rectIsValid assert #11586

apwilson opened this issue Aug 10, 2017 · 8 comments
Labels
c: regression It was better in the past than it is now engine flutter/engine repository. See also e: labels.

Comments

@apwilson
Copy link
Contributor

I get this assert while booting fuchsia. I'm not sure if I'm doing something wrong, the engine is, or something in between.

[00029.255] 03675.03821> EXCEPTION CAUGHT BY RENDERING LIBRARY
[00029.263] 03675.03821> The following assertion was thrown during paint():
[00029.263] 03675.03821> 'file:////fuchsia/flutter/lib/ui/painting.dart': Failed assertion:
[00029.263] 03675.03821> line 1817: '_rectIsValid(src)': is not true.
[00029.272] 03675.03821>
[00029.273] 03675.03821> Either the assertion indicates an error in the framework itself, or we should provide substantially
[00029.273] 03675.03821> more information in this error message to help you determine and fix the underlying cause.
[00029.273] 03675.03821> In either case, please report this assertion by filing a bug on GitHub:
[00029.273] 03675.03821> https://github.com/flutter/flutter/issues/new
[00029.273] 03675.03821>
[00029.273] 03675.03821> When the exception was thrown, this was the stack:
[00029.283] 03675.03821> #2 Canvas.drawImageRect (file:////fuchsia/flutter/lib/ui/painting.dart:1817)
[00029.283] 03675.03821> #3 paintImage (package:flutter/src/painting/box_painter.dart:1304)
[00029.283] 03675.03821> #4 RenderImage.paint (package:flutter/src/rendering/image.dart:249)
[00029.285] 03675.03821> #5 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2340)
[00029.286] 03675.03821> #6 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:137)
[00029.286] 03675.03821> #7 RenderBox&ContainerRenderObjectMixin&RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2169)
[00029.286] 03675.03821> #8 RenderStack.paintStack (package:flutter/src/rendering/stack.dart:511)
[00029.286] 03675.03821> #9 RenderStack.paint (package:flutter/src/rendering/stack.dart:519)
[00029.286] 03675.03821> #10 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2340)
[00029.286] 03675.03821> #11 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:137)
[00029.286] 03675.03821> #12 RenderShiftedBox.paint (package:flutter/src/rendering/shifted_box.dart:68)
[00029.286] 03675.03821> #13 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2340)
[00029.286] 03675.03821> #14 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:137)
[00029.286] 03675.03821> #15 RenderBox&ContainerRenderObjectMixin&RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2169)
[00029.286] 03675.03821> #16 RenderStack.paintStack (package:flutter/src/rendering/stack.dart:511)
[00029.286] 03675.03821> #17 RenderStack.paint (package:flutter/src/rendering/stack.dart:519)
[00029.286] 03675.03821> #18 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2340)
[00029.286] 03675.03821> #19 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:137)
[00029.286] 03675.03821> #20 RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:124)
[00029.286] 03675.03821> #21 _RenderInkFeatures.paint (package:flutter/src/material/material.dart:329)
[00029.287] 03675.03821> #22 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2340)
[00029.287] 03675.03821> #23 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:137)
[00029.287] 03675.03821> #24 RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:124)
[00029.287] 03675.03821> #25 PaintingContext.pushLayer (package:flutter/src/rendering/object.dart:314)
[00029.287] 03675.03821> #26 RenderPhysicalModel.paint (package:flutter/src/rendering/proxy_box.dart:1335)
[00029.287] 03675.03821> #27 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2340)
[00029.287] 03675.03821> #28 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:137)
[00029.287] 03675.03821> #29 RenderBox&ContainerRenderObjectMixin&RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2169)
[00029.287] 03675.03821> #30 RenderStack.paintStack (package:flutter/src/rendering/stack.dart:511)
[00029.287] 03675.03821> #31 RenderStack.paint (package:flutter/src/rendering/stack.dart:519)
[00029.287] 03675.03821> #32 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2340)
[00029.287] 03675.03821> #33 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:137)
[00029.287] 03675.03821> #34 RenderBox&ContainerRenderObjectMixin&RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2169)
[00029.287] 03675.03821> #35 RenderStack.paintStack (package:flutter/src/rendering/stack.dart:511)
[00029.287] 03675.03821> #36 RenderStack.paint (package:flutter/src/rendering/stack.dart:519)
[00029.287] 03675.03821> #37 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2340)
[00029.287] 03675.03821> #38 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:137)
[00029.287] 03675.03821> #39 RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:124)
[00029.287] 03675.03821> #40 RenderDecoratedBox.paint (package:flutter/src/rendering/proxy_box.dart:1499)
[00029.287] 03675.03821> #41 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2340)
[00029.287] 03675.03821> #42 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:137)
[00029.287] 03675.03821> #43 RenderShiftedBox.paint (package:flutter/src/rendering/shifted_box.dart:68)
[00029.287] 03675.03821> #44 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2340)
[00029.287] 03675.03821> #45 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:137)
[00029.287] 03675.03821> #46 RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:124)
[00029.287] 03675.03821> #47 RenderDecoratedBox.paint (package:flutter/src/rendering/proxy_box.dart:1499)
[00029.287] 03675.03821> #48 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2340)
[00029.287] 03675.03821> #49 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:137)
[00029.287] 03675.03821> #50 RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:124)
[00029.287] 03675.03821> #51 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2340)
[00029.287] 03675.03821> #52 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:137)
[00029.287] 03675.03821> #53 _RenderLayoutBuilder.paint (package:flutter/src/widgets/layout_builder.dart:224)
[00029.288] 03675.03821> #54 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2340)
[00029.288] 03675.03821> #55 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:137)
[00029.288] 03675.03821> #56 RenderBox&ContainerRenderObjectMixin&RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2169)
[00029.288] 03675.03821> #57 RenderStack.paintStack (package:flutter/src/rendering/stack.dart:511)
[00029.288] 03675.03821> #58 PaintingContext.pushLayer (package:flutter/src/rendering/object.dart:314)
[00029.288] 03675.03821> #59 PaintingContext.pushClipRect (package:flutter/src/rendering/object.dart:331)
[00029.288] 03675.03821> #60 RenderStack.paint (package:flutter/src/rendering/stack.dart:517)
[00029.288] 03675.03821> #61 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2340)
[00029.288] 03675.03821> #62 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:137)
[00029.288] 03675.03821> #63 RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:124)
[00029.288] 03675.03821> #64 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2340)
[00029.288] 03675.03821> #65 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:137)
[00029.288] 03675.03821> #66 RenderBox&ContainerRenderObjectMixin&RenderBoxContainerDefaultsMixin.defaultPaint (package:flutter/src/rendering/box.dart:2169)
[00029.288] 03675.03821> #67 RenderStack.paintStack (package:flutter/src/rendering/stack.dart:511)
[00029.288] 03675.03821> #68 RenderStack.paint (package:flutter/src/rendering/stack.dart:519)
[00029.288] 03675.03821> #69 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2340)
[00029.288] 03675.03821> #70 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:137)
[00029.288] 03675.03821> #71 RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:124)
[00029.288] 03675.03821> #72 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2340)
[00029.288] 03675.03821> #73 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:137)
[00029.288] 03675.03821> #74 RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:124)
[00029.288] 03675.03821> #75 RenderCustomPaint.paint (package:flutter/src/rendering/proxy_box.dart:2255)
[00029.288] 03675.03821> #76 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2340)
[00029.288] 03675.03821> #77 PaintingContext.paintChild (package:flutter/src/rendering/object.dart:137)
[00029.288] 03675.03821> #78 RenderView.paint (package:flutter/src/rendering/view.dart:173)
[00029.288] 03675.03821> #79 RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2340)
[00029.288] 03675.03821> #80 PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:117)
[00029.288] 03675.03821> #81 PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:1128)
[00029.288] 03675.03821> #82 BindingBase&SchedulerBinding&GestureBinding&ServicesBinding&RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:253)
[00029.288] 03675.03821> #83 BindingBase&SchedulerBinding&GestureBinding&ServicesBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:504)
[00029.288] 03675.03821> #84 BindingBase&SchedulerBinding&GestureBinding&ServicesBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:189)
[00029.288] 03675.03821> #85 BindingBase&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:695)
[00029.288] 03675.03821> #86 BindingBase&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:643)
[00029.288] 03675.03821> #87 _invoke (file:////fuchsia/flutter/lib/ui/hooks.dart:86)
[00029.289] 03675.03821> #88 _drawFrame (file:////fuchsia/flutter/lib/ui/hooks.dart:75)
[00029.289] 03675.03821> (elided 2 frames from class _AssertionError)
[00029.313] 03675.03821>
[00029.313] 03675.03821> The following RenderObject was being processed when the exception was fired:
[00029.313] 03675.03821> RenderImage#9ddb5
[00029.313] 03675.03821> creator: RawImage Image Stack FractionallySizedBox Stack Container DefaultTextStyle
[00029.313] 03675.03821> AnimatedDefaultTextStyle _InkFeatures-[GlobalKey#92c32 ink renderer]
[00029.313] 03675.03821> NotificationListener PhysicalModel AnimatedPhysicalModel
[00029.313] 03675.03821> parentData: not positioned; offset=Offset(0.0, 0.0) (can use size)
[00029.313] 03675.03821> constraints: BoxConstraints(w=0.0, h=0.0)
[00029.313] 03675.03821> size: Size(0.0, 0.0)
[00029.313] 03675.03821> image: [21401427]
[00029.313] 03675.03821> fit: cover
[00029.313] 03675.03821> This RenderObject has no descendants.
[00029.313] 03675.03821>
[00029.400] 04257.04277> [INFO:scene_manager_app.cc(30)] Accepting connection to SceneManagerImpl
[00029.400] 04257.04277> [INFO:scene_manager_app.cc(30)] Accepting connection to SceneManagerImpl
[00029.401] 04257.04277> [INFO:scene_manager_app.cc(30)] Accepting connection to SceneManagerImpl
[00029.430] 03675.03821> Another exception was thrown: 'file:////fuchsia/flutter/lib/ui/painting.dart': Failed assertion: line 1817: '_rectIsValid(src)': is not true.

@Hixie
Copy link
Contributor

Hixie commented Aug 10, 2017

We should make the error message nicer but I suspect you have a NaN infection somewhere.

@eseidelGoogle
Copy link
Contributor

This looks like flutter/engine#3975?

@Hixie
Copy link
Contributor

Hixie commented Aug 15, 2017

I think we discovered recently that we were also firing this for Infinity values. @jason-simmons Did that get resolved?

@Hixie Hixie added the engine flutter/engine repository. See also e: labels. label Aug 15, 2017
@Hixie Hixie added this to the 3: Current Milestone milestone Aug 15, 2017
@Hixie Hixie added the c: regression It was better in the past than it is now label Aug 15, 2017
@jason-simmons
Copy link
Member

Currently the engine's Skia wrappers allow infinity values on cull rects but not coordinates passed to draw() APIs.

Is the framework passing infinity to Canvas.drawImageRect? I'm not sure if Skia specifies the intended behavior in that case.

@Hixie
Copy link
Contributor

Hixie commented Aug 15, 2017

Ah, see my comment on flutter/engine#3975 (comment).

I think what we actually want to do is allow infinities, but disallow null and NaN values. Infinities happen all the time in graphics code, and Skia usually handles them fine (at least, doesn't crash, like it does with NaNs sometimes).

@jason-simmons
Copy link
Member

We can change the asserts in painting.dart to only check for null and NaN.

But I'm wondering what the framework expects Skia to do when an infinity value is passed to something like drawImageRect.

Should it ignore the draw command? If not, then what should it render? Does Skia reserve the right to change its behavior or start asserting in debug mode on an infinity?

@Hixie
Copy link
Contributor

Hixie commented Aug 15, 2017

Depends on the argument, but e.g. for the src argument I would hope the same thing would happen if you passed infinity as would happen if you passed any value that was out of range. There's only a finite range of values that are valid for that argument.

@github-actions
Copy link

github-actions bot commented Sep 4, 2021

This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Sep 4, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
c: regression It was better in the past than it is now engine flutter/engine repository. See also e: labels.
Projects
None yet
Development

No branches or pull requests

4 participants