【技術ログ】XRDP+Wine+MT5 が再びクラッシュした原因と、再発防止策まとめ

自動売買

■ 今日の状況

今朝確認したところ、MT5 が再びクラッシュしていた。 原因はほぼ確実に、以下の “Ubuntu+XRDP+Wine+MT5” 特有の連鎖によるもの。

■ クラッシュの原因(再発パターン)

以下の4つが連続して発生すると、MT5 は高確率で落ちる。

  1. xrdp-sesman は同一ユーザーの複数ログインを許可しない
  2. 既存セッションが残留すると、新しい DISPLAY=:10 が正常に割り当てられない
  3. Wine は DISPLAY が壊れていると即クラッシュする
  4. 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クラッシュ という流れが非常に起きやすい。

上記の ①〜② を導入すると、クラッシュ再発率は低下する。

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