Skip to content

[Linux, Keyboard] Pressing AltRight-ShiftLeft repeatedly crashes the app #93278

@dkwingsmt

Description

@dkwingsmt

App: Any app with a text field.

Reproduction:

  1. Run with flutter run -d linux
  2. Press ShiftLeft-AltRight repeatedly
  3. The terminal first starts to show errors related to synchronize_pressed_states_loop_body, then eventually crashes.
** (test_app:2003431): CRITICAL **: 12:45:00.738: void synchronize_pressed_states_loop_body(gpointer, gpointer, gpointer): assertion 'pressed_logical_key_before_event == 0 || pressed_logical_key_before_event == logical_key' failed

** (test_app:2003431): CRITICAL **: 12:45:00.773: void synchronize_pressed_states_loop_body(gpointer, gpointer, gpointer): assertion 'pressed_logical_key_before_event == 0 || pressed_logical_key_before_event == logical_key' failed

** (test_app:2003431): CRITICAL **: 12:45:00.773: void synchronize_pressed_states_loop_body(gpointer, gpointer, gpointer): assertion 'pressed_logical_key_before_event == 0 || pressed_logical_key_before_event == logical_key' failed

** (test_app:2003431): CRITICAL **: 12:45:00.793: void synchronize_pressed_states_loop_body(gpointer, gpointer, gpointer): assertion 'pressed_logical_key_before_event == 0 || pressed_logical_key_before_event == logical_key' failed

** (test_app:2003431): WARNING **: 12:45:00.947: Unable to retrieve framework response: Message is not valid JSON

══╡ EXCEPTION CAUGHT BY SERVICES LIBRARY ╞══════════════════════════════════════════════════════════
The following assertion was thrown during a platform message callback:
Attempted to send a key down event when no keys are in keysPressed. This state can occur if the key
event being sent doesn't properly set its modifier flags. This was the event:
RawKeyDownEvent#b50a1(logicalKey: LogicalKeyboardKey#00105(keyId: "0x200000105", keyLabel: "Alt
Right", debugName: "Alt Right"), physicalKey: PhysicalKeyboardKey#700e6(usbHidUsage: "0x000700e6",
debugName: "Alt Right")) and its data: RawKeyEventDataLinux#2cf6e(toolkit: GTK, unicodeScalarValues:
0, scanCode: 108, keyCode: 65027, modifiers: 33562624, isDown: true)
'package:flutter/src/services/raw_keyboard.dart':
Failed assertion: line 668 pos 7: 'event is! RawKeyDownEvent || _keysPressed.isNotEmpty'

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.md

When the exception was thrown, this was the stack:
#2      RawKeyboard.handleRawKeyEvent (package:flutter/src/services/raw_keyboard.dart:668:7)
#3      KeyEventManager.handleRawKeyMessage (package:flutter/src/services/hardware_keyboard.dart:818:33)
#4      BasicMessageChannel.setMessageHandler.<anonymous closure> (package:flutter/src/services/platform_channel.dart:77:49)
#5      BasicMessageChannel.setMessageHandler.<anonymous closure> (package:flutter/src/services/platform_channel.dart:76:47)
#6      _DefaultBinaryMessenger.setMessageHandler.<anonymous closure> (package:flutter/src/services/binding.dart:389:35)
#7      _DefaultBinaryMessenger.setMessageHandler.<anonymous closure> (package:flutter/src/services/binding.dart:386:46)
#8      _invoke2.<anonymous closure> (dart:ui/hooks.dart:189:15)
#12     _invoke2 (dart:ui/hooks.dart:188:10)
#13     _ChannelCallbackRecord.invoke (dart:ui/channel_buffers.dart:42:5)
#14     _Channel.push (dart:ui/channel_buffers.dart:132:31)
#15     ChannelBuffers.push (dart:ui/channel_buffers.dart:329:17)
#16     PlatformDispatcher._dispatchPlatformMessage (dart:ui/platform_dispatcher.dart:544:22)
#17     _dispatchPlatformMessage (dart:ui/hooks.dart:83:31)
(elided 5 frames from class _AssertionError and dart:async)
════════════════════════════════════════════════════════════════════════════════════════════════════

** (test_app:2003431): WARNING **: 12:45:01.125: Unable to retrieve framework response: Message is not valid JSON

Another exception was thrown: Attempted to send a key down event when no keys are in keysPressed. This state can occur if the key event being sent doesn't properly set its modifier flags. This was the event: RawKeyDownEvent#dcac4(logicalKey:
LogicalKeyboardKey#00105(keyId: "0x200000105", keyLabel: "Alt Right", debugName: "Alt Right"), physicalKey: PhysicalKeyboardKey#700e6(usbHidUsage: "0x000700e6", debugName: "Alt Right")) and its data: RawKeyEventDataLinux#2cf6e(toolkit: GTK,
unicodeScalarValues: 0, scanCode: 108, keyCode: 65027, modifiers: 33562624, isDown: true)

Environment: (Linux over Chrome remote desktop from macOS)

Details
[✓] Flutter (Channel master, 2.6.0-12.0.pre.641, on Debian GNU/Linux rodete 5.10.46-5rodete1-amd64, locale en_US.UTF-8)
    • Flutter version 2.6.0-12.0.pre.641 at /usr/local/google/home/tongmu/dev/flutter
    • Upstream repository git@github.com:flutter/flutter.git
    • Framework revision f4f23ecb59 (21 minutes ago), 2021-11-08 12:27:14 -0800
    • Engine revision 469d6f1a09
    • Dart version 2.15.0 (build 2.15.0-285.0.dev)

[!] Android toolchain - develop for Android devices (Android SDK version 29.0.0)
• Android SDK at /usr/local/google/home/tongmu/Android/Sdk
✗ cmdline-tools component is missing
Run path/to/sdkmanager --install "cmdline-tools;latest"
See https://developer.android.com/studio/command-line for more details.
✗ Android license status unknown.
Run flutter doctor --android-licenses to accept the SDK licenses.
See https://flutter.dev/docs/get-started/install/linux#android-setup for more details.

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

[✓] Linux toolchain - develop for Linux desktop
• Debian clang version 11.1.0-4+build1
• cmake version 3.21.3
• ninja version 1.8.2
• pkg-config version 0.29.2

[✓] Android Studio (version 3.5)
• Android Studio at /usr/local/google/home/tongmu/src/android-studio
• Flutter plugin version 43.0.1
• Dart plugin version 191.8593
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)

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

[✓] Connected device (2 available)
• Linux (desktop) • linux • linux-x64 • Debian GNU/Linux rodete 5.10.46-5rodete1-amd64
• Chrome (web) • chrome • web-javascript • Google Chrome 95.0.4638.69

! Doctor found issues in 1 category

Metadata

Metadata

Assignees

Labels

P1High-priority issues at the top of the work lista: desktopRunning on desktopa: text inputEntering text in a text field or keyboard related problemsplatform-linuxBuilding on or for Linux specifically

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions