不思議な不具合で時間を浪費 – 開発日記(88)

2024/04/13

マウスで操作しているとき、アイディア(TextField)のフォーカスが切り替わったタイミングで時々発生する不具合を発見した。

これが不思議な不具合。

デバッグモードでアイディアレーンを実行している状況で発生する。その不具合に遭遇すると突然Android Studioがアクティブになる。普通はこういうとき、問題箇所でカーソルが止まって「ソースのどこで問題が起きたか」が分かるのだが、これに関してはどこにも飛ばない。
つまりソースのどこで問題が起きたかは分からないが何かが起きている状態。
動作は一時停止になっているので「再開」ボタンが押せる状態になる。

そして再開すると「”The targeted input element must be the active input element”」というエラーがコンソールに出る。
target input elementって何だろう。きっとTextFieldだと思うのだが。
それにしても通常の不具合とは全く出方が違う。

手がかりがコンソールメッセージだけで、ソースのどこが問題なのか、何がきっかけで発生するのかも正直よくわからない。
TextFieldにマウスオーバーを何度か繰り返すと時々発生するのだが、パターンが掴めない。

いったい何がきっかけで起きるのだろう。

原因が長時間分からず苦戦することになった。

  • ネットでエラーを検索してもうまく見つからない。
  • いつからこの事象が発生し出したのもわからない。ソースを戻してみたりflutterのバージョンを変えたりしても治らず。少なくとも1ヶ月前のソースでも再現できた。それなりに以前から発生していたのかもしれない。
  • デバッグもできないしどうしたら良いものやら。続くメッセージからすると、エラーが関係しているのは下記の場所のようなのだが。。。。

Error: Assertion failed: org-dartlang-sdk:///lib/_engine/engine/pointer_binding/event_position_helper.dart:64:10 https://github.com/flutter/engine/blob/main/lib/web_ui/lib/src/engine/pointer_binding/event_position_helper.dart

次に描画状況を調べるためにFlutter InspectorのOverlayGuidelinesをONにしてみることに。
するとテキストを編集するタイミングで謎の大きな枠が出てきた。

なにか余計なものが全面に出ている感じ。。。

この謎の枠は何なのだろう。ただSelect Widget Modeにしても、謎の枠が掴めない。Widget Treeを丹念に追っても分からない。Widget Details Treeを見ても見当たらない。どうもTextFieldが作り出している特別な何かに見えるのだが……。実態が謎。

色々やっているうちに、テキストの選択が関係しているように思えた。しかし何なのかは分からない。不具合に関係しているかもわからない。

そして不思議なことに、別のPCでデバッグを始めたら全然エラーが起きなくなった。何なのだ。

エラーが起きるPCと起きないPCの環境を詳細に比べてみる。
両方ともWindowsで、Android Studio・Chrome・Windowsのバージョンはそれぞれ同じ。
Flutter は 若干バージョンが違ったので合わせたりしたが、事象は変わらず。
Flutter doctorも問題なし。

結局何も分からず!
これで何時間も使ったどころか、丸一日かかってもはっきりしたことは何も掴めなかった。

とりあえず、TextFieldからマウスが外れるときfocusNodeに必ずunfocusを投げることで発生率は減らすことができた。しかしまだ起きるし、解決はできていない。

完全な再現パターンが分からず。症状の説明もうまく言語化出来ないので、stack overflowへの投稿も難しい。

2024/04/14

昨日の謎エラー
Error: Assertion failed: org-dartlang-sdk:///lib/_engine/engine/pointer_binding/event_position_helper.dart:64:10 “The targeted input element must be the active input element
を再び追ってみたが手がかり得られず。かなり時間を使ってしまっている

謎エラーの調査と並行して様々な挙動改善や不具合修正を行った。

  • クリップボードからのペースト機能を引き続き実装。いくつかのパターンで挙動がイマイチだったので改善。アイディアの複数選択やUndo/Redoと組み合わせた場合など、なかなか複雑になってしまっている。
  • 気になっている色々な細かい挙動を修正。β公開に向けて様々な部分を整えないといけない


※開発日記は当時の記録をもとに作成し、必要に応じて加筆・補足しています

この記事はアイディア整理ソフト「idea Lane」の開発記録です

どなたでも、ユーザ登録だけで無料ですぐに使えます
テキストベースの思考整理ツール「idea Lane」


コメント

タイトルとURLをコピーしました