Skip to content

[Regression]: Hovering on a button in Overlay throws Cannot hit test a render box that has never been laid out #133545

@mrcsh

Description

@mrcsh

Is there an existing issue for this?

Steps to reproduce

I have a widget that creates a button bar in the overlay, with flutter 3.10.x it works fine. When built with flutter 3.13 the following exception is thrown when the mouse hovers over any of the buttons in the button bar.

Updated layout information required for RenderFollowerLayer#d5060 relayoutBoundary=up1 NEEDS-LAYOUT NEEDS-PAINT to calculate semantics.

The app then gets in a infinite loop spewing exceptions and is completely unresponsive.

This happens on desktop Linux and web (chrome on Linux)

I did confirm that downgrading flutter to 3.10.6 and running sample code works correctly.

Expected results

expect the tooltip to be shown when mouse is over button

Actual results

exception is thrown and overlay entry disappears

Code sample

Code sample
[code.zip](https://github.com/flutter/flutter/files/12464004/code.zip)

Screenshots or Video

No response

Logs

Logs
here is the full trace

═══════ Exception caught by scheduler library ═════════════════════════════════
The following assertion was thrown during a scheduler callback:
Updated layout information required for RenderFollowerLayer#d5060 relayoutBoundary=up1 NEEDS-LAYOUT NEEDS-PAINT to calculate semantics.
'package:flutter/src/rendering/object.dart':
object.dart:1
Failed assertion: line 3567 pos 12: '!_needsLayout'

2

Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
https://github.com/flutter/flutter/issues/new?template=2_bug.yml

When the exception was thrown, this was the stack
#2 RenderObject._getSemanticsForParent
object.dart:3567
#3 RenderObject._getSemanticsForParent.
object.dart:3583
#4 _RenderTheater.visitChildrenForSemantics
overlay.dart:1151
#5 RenderObject._getSemanticsForParent
object.dart:3581
#6 RenderObject._getSemanticsForParent.
object.dart:3583
#7 RenderObjectWithChildMixin.visitChildren
object.dart:4000
#8 RenderObject.visitChildrenForSemantics
object.dart:3724
#9 RenderAbsorbPointer.visitChildrenForSemantics
proxy_box.dart:3864
#10 RenderObject._getSemanticsForParent
object.dart:3581
#11 RenderObject._getSemanticsForParent.
object.dart:3583
#12 RenderObjectWithChildMixin.visitChildren
object.dart:4000
#13 RenderObject.visitChildrenForSemantics
object.dart:3724
#14 RenderObject._getSemanticsForParent
object.dart:3581
#15 RenderObject._getSemanticsForParent.
object.dart:3583
#16 RenderObjectWithChildMixin.visitChildren
object.dart:4000
#17 RenderObject.visitChildrenForSemantics
object.dart:3724
#18 RenderSemanticsAnnotations.visitChildrenForSemantics
proxy_box.dart:4284
#19 RenderObject._getSemanticsForParent
object.dart:3581
#20 RenderObject._getSemanticsForParent.
object.dart:3583
#21 RenderObjectWithChildMixin.visitChildren
object.dart:4000
#22 RenderObject.visitChildrenForSemantics
object.dart:3724
#23 RenderObject._getSemanticsForParent
object.dart:3581
#24 RenderObject._getSemanticsForParent.
object.dart:3583
#25 RenderObjectWithChildMixin.visitChildren
object.dart:4000
#26 RenderObject.visitChildrenForSemantics
object.dart:3724
#27 RenderSemanticsAnnotations.visitChildrenForSemantics
proxy_box.dart:4284
#28 RenderObject._getSemanticsForParent
object.dart:3581
#29 RenderObject._getSemanticsForParent.
object.dart:3583
#30 RenderObjectWithChildMixin.visitChildren
object.dart:4000
#31 RenderObject.visitChildrenForSemantics
object.dart:3724
#32 RenderSemanticsAnnotations.visitChildrenForSemantics
proxy_box.dart:4284
#33 RenderObject._getSemanticsForParent
object.dart:3581
#34 RenderObject._getSemanticsForParent.
object.dart:3583
#35 RenderObjectWithChildMixin.visitChildren
object.dart:4000
#36 RenderObject.visitChildrenForSemantics
object.dart:3724
#37 RenderObject._getSemanticsForParent
object.dart:3581
#38 RenderObject._getSemanticsForParent.
object.dart:3583
#39 RenderObjectWithChildMixin.visitChildren
object.dart:4000
#40 RenderObject.visitChildrenForSemantics
object.dart:3724
#41 RenderSemanticsAnnotations.visitChildrenForSemantics
proxy_box.dart:4284
#42 RenderObject._getSemanticsForParent
object.dart:3581
#43 RenderObject._getSemanticsForParent.
object.dart:3583
#44 RenderObjectWithChildMixin.visitChildren
object.dart:4000
#45 RenderObject.visitChildrenForSemantics
object.dart:3724
#46 RenderSemanticsAnnotations.visitChildrenForSemantics
proxy_box.dart:4284
#47 RenderObject._getSemanticsForParent
object.dart:3581
#48 RenderObject._getSemanticsForParent.
object.dart:3583
#49 RenderObjectWithChildMixin.visitChildren
object.dart:4000
#50 RenderObject.visitChildrenForSemantics
object.dart:3724
#51 RenderSemanticsAnnotations.visitChildrenForSemantics
proxy_box.dart:4284
#52 RenderObject._getSemanticsForParent
object.dart:3581
#53 RenderObject._getSemanticsForParent.
object.dart:3583
#54 RenderObjectWithChildMixin.visitChildren
object.dart:4000
#55 RenderObject.visitChildrenForSemantics
object.dart:3724
#56 RenderObject._getSemanticsForParent
object.dart:3581
#57 RenderObject._updateSemantics
object.dart:3533
#58 PipelineOwner.flushSemantics
object.dart:1265
#59 RendererBinding.drawFrame
binding.dart:499
#60 WidgetsBinding.drawFrame
binding.dart:918
#61 RendererBinding._handlePersistentFrameCallback
binding.dart:360
#62 SchedulerBinding._invokeFrameCallback
binding.dart:1297
#63 SchedulerBinding.handleDrawFrame
binding.dart:1227
#64 SchedulerBinding._handleDrawFrame
binding.dart:1085
#65 _invoke (dart:ui/hooks.dart:170:13)
#66 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:401:5)
#67 _drawFrame (dart:ui/hooks.dart:140:31)
(elided 2 frames from class _AssertionError)
════════════════════════════════════════════════════════════════════════════════

════════ Exception caught by gestures library ══════════════════════════════════
Cannot hit test a render box that has never been laid out.
════════════════════════════════════════════════════════════════════════════════

Flutter Doctor output

Doctor output
[✓] Flutter (Channel stable, 3.13.1, on Fedora Linux 38 (Thirty Eight) 6.4.6-200.fc38.x86_64, locale en_US.UTF-8)
    • Flutter version 3.13.1 on channel stable at /server/home/csh/lib/flutter3
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision e1e47221e8 (6 days ago), 2023-08-22 21:43:18 -0700
    • Engine revision b20183e040
    • Dart version 3.1.0
    • DevTools version 2.25.0

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at /home/csh/Android/Sdk
    • Platform android-33, build-tools 33.0.0
    • Java binary at: /server/home/csh/lib/android-studio/jbr/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • Chrome at google-chrome

[✓] Linux toolchain - develop for Linux desktop
    • clang version 16.0.6 (Fedora 16.0.6-2.fc38)
    • cmake version 3.27.2
    • ninja version 1.11.1
    • pkg-config version 1.8.0

[✓] Android Studio (version 2022.3)
    • Android Studio at /server/home/csh/lib/android-studio
    • Flutter plugin version 75.1.2
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)

[✓] VS Code (version 1.81.1)
    • VS Code at /usr/share/code
    • Flutter extension version 3.70.0

[✓] Connected device (3 available)
    • sdk gphone x86 64 (mobile) • emulator-5554 • android-x64    • Android 13 (API 33) (emulator)
    • Linux (desktop)            • linux         • linux-x64      • Fedora Linux 38 (Thirty Eight) 6.4.6-200.fc38.x86_64
    • Chrome (web)               • chrome        • web-javascript • Google Chrome 116.0.5845.96

[✓] Network resources
    • All expected network resources are available.

• No issues found!

Metadata

Metadata

Labels

P2Important issues not at the top of the work lista: desktopRunning on desktopa: error messageError messages from the Flutter frameworkc: regressionIt was better in the past than it is nowfound in release: 3.13Found to occur in 3.13found in release: 3.14Found to occur in 3.14frameworkflutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onplatform-webWeb applications specificallyr: fixedIssue is closed as already fixed in a newer versionteam-frameworkOwned by Framework teamtriaged-frameworkTriaged by Framework team

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions