-
Notifications
You must be signed in to change notification settings - Fork 30.2k
Windows ListView+Tooltip can trigger error: Failed to update ui::AXTree, error: 9 will not be in the tree and is not the new root #182444
Description
Steps to reproduce
- Create an empty flutter project in Windows.
- Replace main.dart with my repro code.
- run and mouse hovering between container marked as A and B.
Then you will see the errors in console.
It seems only impacting Windows.
Here is my own mechanism analysis, just for reference.
ListView's two-pane semantics: RenderViewport adds useTwoPaneSemantics tag, causing _RenderScrollSemantics.assembleSemanticsNode() to create a synthetic _innerNode. This extra indirection isolates tooltip children from direct semantics update propagation.
Tooltip's OverlayPortal traversal grafting: Each Tooltip's overlay child (_RenderDeferredLayoutBox) is physically a child of _RenderTheater but semantically "grafted" to the tooltip's child via traversalChildIdentifier/traversalParentIdentifier.
The Bug Sequence (hover A → B)
- _handleMouseEnter on B fires — starts B's show (immediate) and A's dismiss (animated, 75ms)
- B's _RenderDeferredLayoutBox is added to the theater → markNeedsSemanticsUpdate()
- During SemanticsOwner.sendSemanticsUpdate(), A's deferred box node is detached and filtered into _detachedNodes
- Critical bug: Because A's node is filtered out before the traversal parent notification code runs, Tooltip A's child (TC_A) is never told its grafted traversal child is gone
- TC_A is never added to updatedVisitedNodes, so it never calls _addToUpdate() — no update sent to the engine
- The Windows AXTree still thinks TC_A has A's overlay node as a child, but that node no longer exists
- AXTree::Unserialize() fails: "* will not be in the tree and is not the new root"
Expected results
No errors.
Actual results
Throwing errors, though feature seems still not impacted.
Code sample
Code sample
Create an empty project and put this in main.dart
// Repro: ListView + 2 Tooltips → AXTree error on hover (Windows)
//
// Steps:
// 1. flutter run -d windows
// 2. Hover mouse over box A, then move to box B
// 3. Watch console for:
// [ERROR:flutter/shell/platform/common/accessibility_bridge.cc(114)]
// Failed to update ui::AXTree
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'AXTree Tooltip Repro',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
useMaterial3: true,
),
home: const TooltipReproPage(),
);
}
}
class TooltipReproPage extends StatelessWidget {
const TooltipReproPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('AXTree Tooltip Repro')),
body: ListView(
children: [
Row(
children: [
Tooltip(
message: 'Tooltip A',
child: Container(
width: 100,
height: 100,
alignment: Alignment.center,
decoration: BoxDecoration(
color: const Color(0xFFE3F2FD),
borderRadius: BorderRadius.circular(8),
border: Border.all(
width: 1,
color: const Color(0xFF90CAF9),
),
),
child: const Text('A'),
),
),
const SizedBox(width: 16),
Tooltip(
message: 'Tooltip B',
child: Container(
width: 100,
height: 100,
alignment: Alignment.center,
decoration: BoxDecoration(
color: const Color(0xFFF5F5F5),
borderRadius: BorderRadius.circular(8),
border: Border.all(
width: 1,
color: const Color(0xFFE0E0E0),
),
),
child: const Text('B'),
),
),
],
),
],
),
);
}
}Screenshots or Video
Screenshots / Video demonstration
N/A
Logs
Logs
[ERROR:flutter/shell/platform/common/accessibility_bridge.cc(114)] Failed to update ui::AXTree, error: 9 will not be in the tree and is not the new root
6
[ERROR:flutter/shell/platform/common/accessibility_bridge.cc(114)] Failed to update ui::AXTree, error: 13 will not be in the tree and is not the new root
5
[ERROR:flutter/shell/platform/common/accessibility_bridge.cc(114)] Failed to update ui::AXTree, error: 17 will not be in the tree and is not the new root
6
[ERROR:flutter/shell/platform/common/accessibility_bridge.cc(114)] Failed to update ui::AXTree, error: 19 will not be in the tree and is not the new root
7
[ERROR:flutter/shell/platform/common/accessibility_bridge.cc(114)] Failed to update ui::AXTree, error: 23 will not be in the tree and is not the new root
8
[ERROR:flutter/shell/platform/common/accessibility_bridge.cc(114)] Failed to update ui::AXTree, error: 27 will not be in the tree and is not the new root
7
[ERROR:flutter/shell/platform/common/accessibility_bridge.cc(114)] Failed to update ui::AXTree, error: 31 will not be in the tree and is not the new root
21
[ERROR:flutter/shell/platform/common/accessibility_bridge.cc(114)] Failed to update ui::AXTree, error: 35 will not be in the tree and is not the new root
3
[ERROR:flutter/shell/platform/common/accessibility_bridge.cc(114)] Failed to update ui::AXTree, error: 47 will not be in the tree and is not the new root
CHAT
FLUTTER AXTREE UPDATE ERROR WITH MULTIPLE ATTACHMENTS
Flutter Doctor output
Doctor output
flutter doctor -v
[√] Flutter (Channel stable, 3.41.1, on Microsoft Windows [Version 10.0.26200.7781],
locale en-US) [590ms]
• Flutter version 3.41.1 on channel stable at C:\Repos\flutter\flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 582a0e7c55 (3 days ago), 2026-02-12 17:12:32 -0800
• Engine revision 3452d735bd
• Dart version 3.11.0
• DevTools version 2.54.1
• Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop,
enable-windows-desktop, enable-android, enable-ios, cli-animations,
enable-native-assets, omit-legacy-version-file, enable-lldb-debugging,
enable-uiscene-migration
[√] Windows Version (Windows 11 or higher, 25H2, 2009) [1,186ms]
[!] Android toolchain - develop for Android devices (Android SDK version 34.0.0) [478ms]
• Android SDK at C:\Users\yuanyang\AppData\Local\Android\sdk
• Emulator version 35.2.10.0 (build_id 12414864) (CL:N/A)
X cmdline-tools component is missing.
Try installing or updating Android Studio.
Alternatively, download the tools from
https://developer.android.com/studio#command-line-tools-only and make sure to set
the ANDROID_HOME environment variable.
See https://developer.android.com/studio/command-line for See https://developer.android.com/studio/command-line for more details.
X Android license status unknown.
Run `flutter doctor --android-licenses` to accept the SDK licenses.
See https://flutter.dev/to/windows-android-setup for more details.
[√] Chrome - develop for the web [138ms]
• Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe
[√] Visual Studio - develop Windows apps (Visual Studio Enterprise 2022 17.14.26)
[137ms]
• Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Enterprise
• Visual Studio Enterprise 2022 version 17.14.36930.0
• Windows 10 SDK version 10.0.26100.0
[√] Connected device (3 available) [399ms]
• Windows (desktop) • windows • windows-x64 • Microsoft Windows [Version
10.0.26200.7781]
• Chrome (web) • chrome • web-javascript • Google Chrome 144.0.7559.133
• Edge (web) • edge • web-javascript • Microsoft Edge 145.0.3800.58
[√] Network resources [782ms]
• All expected network resources are available.
! Doctor found issues in 1 category.