■ 今日の状況
今朝確認したところ、MT5 が再びクラッシュしていた。 原因はほぼ確実に、以下の “Ubuntu+XRDP+Wine+MT5” 特有の連鎖によるもの。
■ クラッシュの原因(再発パターン)
以下の4つが連続して発生すると、MT5 は高確率で落ちる。
- xrdp-sesman は同一ユーザーの複数ログインを許可しない
- 既存セッションが残留すると、新しい DISPLAY=:10 が正常に割り当てられない
- Wine は DISPLAY が壊れていると即クラッシュする
- MT5 は Wine の GUI 初期化に依存しているため巻き添えで落ちる
つまり、
セッション残り → DISPLAY破損 → Wineクラッシュ → MT5クラッシュ という流れで「またクラッシュしていた」が再発する。
■ 暫定対応
① zombie セッションを強制終了
SSH でログインして、残っているセッションを kill する。
コード
loginctl list-sessions
loginctl terminate-user ○○○○
これで 次回の XRDP ログイン時に DISPLAY が正常化し、クラッシュが止まる。
② rebootで再起動
① zombie セッションを強制終了をしても、状況が解消しない時は再起動。
■ 再発防止策
次の① XRDP の切断時に必ずセッションを終了させる設定、② Wine の DISPLAY 固定化(クラッシュ防止)を実施し、同事象が発生しないか様子見中。
① XRDP の切断時に必ずセッションを終了させる設定
/etc/xrdp/sesman.ini の [SessionVariables] に追加:
コード
KillDisconnected=true
DisconnectedTimeLimit=60
→ 切断後60秒で自動終了し、セッションが zombie 化しない。
② Wine の DISPLAY 固定化(クラッシュ防止)
~/.bashrc に追加:
コード
export DISPLAY=:10
→ XRDP の DISPLAY が毎回変わる問題を回避できる。
■ まとめ
Ubuntu+XRDP+Wine+MT5は、 セッション残り → DISPLAY破損 → Wineクラッシュ → MT5クラッシュ という流れが非常に起きやすい。
上記の ①〜② を導入すると、クラッシュ再発率は低下する。