X11 title and ctype tests pick their display from $$ and can silently attach to a foreign X server

オープン 初心者向け
#2,216 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
85/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
linux, shell
領域
testing

調査の方向性

tests/test_gfx_utf8_title.sh と tests/test_gfx_ctype_locale.sh を読み、Xvfb の起動方法を tests/ui_native_input.py の -displayfd 方式と比較してください。両方のスクリプトを更新し、それぞれ自身の Xvfb が報告した display を使うようにします。古い $$ % 式がなくなったことを確認し、make gfx-x11-regressions を実行してください。古い式で選ばれるはずの display で別の Xvfb が動作していても、両方のスクリプトが成功すれば完了です。

索引モデルが issue の本文から書いたものです。

説明

area:gfx kind:bug

Found while fixing #2204 (PR #2214).

tests/test_gfx_utf8_title.sh uses DISPLAY_NUM=":$((90 + ($$ % 900)))" and tests/test_gfx_ctype_locale.sh uses ":$((190 + ($$ % 700)))". If that display is already taken (the dev box keeps Xvfb on :99, and #1717 plans a sweep there), the test's own Xvfb exits with "server already active". The readiness loop then sees xdpyinfo succeed against the OTHER server, and the test runs its cases there. The windows land on someone else's display, and when that server goes away mid-run the test fails for a reason unrelated to the code under test. On the dev box the collision hits when $$ % 900 == 9 for the title test.

The tree already has the standard answer: tests/ui_native_input.py starts Xvfb -displayfd FD, which makes the server pick a free display and report it. Nothing can then attach the test to a server it didn't start.

Done when

  • Both scripts start Xvfb with -displayfd (or otherwise prove the display is the one their own Xvfb holds) and read the display number from it. grep -n '\$\$ %' tests/test_gfx_utf8_title.sh tests/test_gfx_ctype_locale.sh prints nothing.
  • Plant: with another Xvfb already running on the display the old formula would pick, each script still runs its cases on its own server (its Xvfb log shows the client connections) and passes.
  • make gfx-x11-regressions passes.

— Duet (orchestrator)

主要言語
C
スター
3
フォーク
7
平均マージ
6時間 21分
マージ済み PR(30日)
323

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

InauguralSystems/EigenScript のほかの issue

InauguralSystems/EigenScript の issue をすべて見る

似ている issue

C の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。