[Economi] Moonlight 무응답 시 발생한 시스템 전역 입력 Grab 고착 — 원격 셸을 통한 강제 종료 대응 기록
초록
Moonlight AppImage 무응답이 단일 앱 창을 넘어 물리 머신 전체의 마우스 클릭·키보드 입력을 마비시키는 형태로 재발했다. 커서는 움직이지만 클릭이 전달되지 않는 증상을 디스플레이 서버 포인터/키보드 grab 고착으로 진단하고, 로컬 콘솔 조작 없이 hb5u 위 상시 동작 중인 에이전트 셸에서 pkill -9로 grab 보유 프로세스를 종료해 해결한 과정과, 원격 접근이 없는 경우의 대안(VT 전환 등)을 기록한다.
[Economi] Moonlight 무응답 시 발생한 시스템 전역 입력 Grab 고착 — 원격 셸을 통한 강제 종료 대응 기록
개요
2026-09-02, 앞선 논문(2026-09-02-economi-moonlight-appimage-wayland-hang-diagnosis)에서 다룬 Moonlight AppImage 무응답 증상이 재발했고, 이번에는 단순히 앱 창만 멈춘 것이 아니라 물리 머신(hb5u)의 마우스·키보드 입력 전체가 먹통이 되는 더 심각한 형태로 나타났다. 원격 세션(이 에이전트, Economi/Claude Code)을 통해 hb5u에 정상적으로 명령을 내릴 수 있었던 점을 활용해, 로컬 콘솔 조작 없이 문제를 해결한 과정을 기록한다.
증상
- OS가 애플리케이션 무응답을 감지해 "대기 / 강제 종료" 선택 팝업을 띄움
- 마우스 커서는 화면에서 움직이지만, 클릭이 어떤 요소에도 전달되지 않음(팝업 버튼 포함)
- 키보드 입력도 물리 콘솔에서는 반응 없음
- 반면 사령관은 hb5u에서 동작 중인 이 에이전트(Economi)와는 정상적으로 대화/명령이 가능했음 — 즉 OS와 네트워크 스택, 이 세션의 셸 접근은 살아 있고, 로컬 그래픽 입력 경로만 막혀 있는 상태였다.
진단
커서는 렌더링되지만 클릭이 전달되지 않고 키보드도 반응하지 않는 조합은, 특정 애플리케이션이 디스플레이 서버(X11/XWayland)의 포인터·키보드를 배타적으로 grab한 채 멈춘 상태의 전형적 증상이다. 원격 스트리밍/게임 클라이언트류(Moonlight 포함)는 정상 동작 시 원격 입력을 그대로 전달하기 위해 포인터를 캡처(relative motion / pointer confinement)하는데, 해당 프로세스가 응답 불능(hang) 상태에 빠지면 이 grab이 해제되지 않고 그대로 유지되어 grab을 쥔 프로세스 외의 모든 창·다이얼로그가 입력을 받지 못하는 시스템 전역 마비로 이어질 수 있다.
이 경우 물리 콘솔에서 마우스/키보드로 아무리 조작해도 소용이 없다 — 애초에 그 입력 이벤트가 디스플레이 서버 단계에서 해당 grab 보유 프로세스로만 라우팅되기 때문이다. "대기/강제 종료" 팝업조차 클릭이 통하지 않은 이유도 동일하다.
조치
로컬 물리 입력이 막힌 상황에서도, 이 에이전트가 hb5u 위에서 별도의 셸 세션(Claude Code)으로 살아있었기 때문에 사령관은 채팅으로 대응을 지시할 수 있었다. 조치는 다음과 같다:
pkill -9 -f Moonlight-6.1.0
디스플레이 서버(X11/XWayland)는 포인터/키보드 grab을 보유한 클라이언트가 연결을 잃으면(프로세스 종료) 자동으로 grab을 해제하도록 설계되어 있다. 따라서 원인 프로세스를 강제 종료하는 것만으로 grab이 해제되고, 이후 물리 콘솔의 마우스 클릭·키보드가 다시 다른 창들에 정상 전달된다.
물리 콘솔 접근이 아예 불가능한 경우를 위한 대안 (참고용)
이번 사례는 원격 셸이 살아있어 해결이 쉬웠지만, 만약 원격 접근 수단이 전혀 없는 상태였다면 다음이 표준 대응이다:
- VT(가상 터미널) 전환:
Ctrl+Alt+F3등으로 텍스트 콘솔로 전환 후Ctrl+Alt+F1(또는 그래픽 세션이 붙은 VT 번호)로 복귀 — DRM 마스터 재획득 과정에서 grab이 강제로 리셋되는 경우가 있다. - VT 전환으로 텍스트 콘솔에 진입했다면 그 안에서 직접 로그인 후
pkill -9 -f <프로세스명>으로 동일하게 강제 종료. - 그래도 복구되지 않으면 SSH 등 별도 네트워크 경로로 접속해 동일 명령 수행(이번 사례의 핵심 대응 방식과 동일).
- 최후 수단으로 디스플레이 서버 자체 재시작(
Ctrl+Alt+Backspace, 배포판/설정에 따라 비활성화되어 있을 수 있음) — 세션의 다른 작업 내용이 유실될 수 있어 우선순위가 가장 낮다.
시사점
- 원격 스트리밍류 앱은 입력 grab을 사용하는 특성상, hang 시 단일 앱 문제가 아니라 시스템 전역 입력 마비로 번질 수 있음을 인지해야 한다.
- 이런 상황에서는 GUI 조작(팝업의 "강제 종료" 버튼 포함)이 통하지 않을 가능성이 높으므로, 평소 별도 네트워크 경로(SSH, 혹은 이번처럼 상시 동작 중인 에이전트 세션)를 확보해두는 것이 실질적인 복구 수단이 된다.
- 앞선 논문에서 제안한
QT_QPA_PLATFORM=xcb우회가 근본 대책이 되려면, 이 grab 고착 증상 자체가 재발하지 않는지 후속 실행에서 재검증이 필요하다.
참고
- 선행 논문:
2026-09-02-economi-moonlight-appimage-wayland-hang-diagnosis - 실행 환경:
hb5u(Intel Arrow Lake-P + NVIDIA GeForce RTX 5060 Max-Q, GNOME/Wayland)
