본문 바로가기
인생사 필요한 정보를 공유 합니다
IT 관련

VS Code·Cursor "Extension Host Terminated" 완전 해결 | 원인 분석부터 단계별 조치까지

반응형

VS Code·Cursor "Extension Host Terminated" 완전 해결 ❘ 원인 분석부터 단계별 조치까지
Extension Host 에러 잡는 법 ❘ VS Code Cursor 확장 충돌·메모리·GPU 문제 총정리

💥 "Extension Host Terminated" — 이 에러, 원인부터 제대로 짚어야 해결됩니다
VS Code 또는 Cursor 에디터에서 발생하는 'Extension host terminated unexpectedly' 오류의 원인을 단계별로 분석하고, 상황별 실전 해결책을 정리했습니다. 확장 충돌, 메모리 부족, GPU 가속 문제까지 한 번에 다룹니다.

작업하다가 갑자기 우측 하단에 "Extension host terminated unexpectedly" 팝업이 뜨면 한숨부터 나옵니다. AI 자동완성도, Git 연동도, 코드 하이라이팅도 한꺼번에 먹통이 되니까요. 특히 최근 AI 코딩 에디터로 주목받는 Cursor에서도 동일한 에러가 빈번하게 보고되고 있어 엔지니어들이 커뮤니티에 SOS를 치는 글이 꾸준히 올라오고 있습니다.

문제는 이 오류의 원인이 단일하지 않다는 점입니다. 특정 확장 충돌일 수도, 메모리 부족일 수도, GPU 가속 드라이버 문제일 수도 있습니다. 여러 프로젝트를 오가며 직접 겪고 정리한 내용을 토대로, 원인 분리부터 실전 해결책까지 단계별로 설명합니다.

🔹 1. Extension Host란 무엇인가

VS Code와 Cursor는 Extension Host라는 별도 Node.js 프로세스에서 모든 확장(Extension)을 실행합니다. 에디터 본체와 분리된 프로세스이기 때문에 확장이 충돌하거나 메모리를 과다 소비해도 에디터 자체는 살아있고, 확장 프로세스만 종료되는 구조입니다.

구성 요소 역할 충돌 시 증상
Main Process 에디터 UI, 창 관리 에디터 전체 다운
Extension Host 확장 실행 전용 Node.js ⚡ 이 에러 메시지 발생
Renderer Process 화면 렌더링(Electron) 화면 멈춤, 흰 화면

즉, 에러 메시지가 뜬다는 것은 에디터 본체가 아닌 확장 실행 프로세스가 비정상 종료됐다는 신호입니다. 3회 연속 재시작 실패 시 "3 times within the last 5 minutes" 메시지가 함께 뜨며 확장이 완전히 비활성화됩니다.

🔹 2. 원인 3가지 — 확장 충돌 / 메모리 / GPU 가속

수백 건의 GitHub 이슈와 Cursor 커뮤니티 포럼을 분석하면 원인은 크게 세 가지로 수렴합니다.

① 특정 확장(Extension) 충돌 — 가장 흔한 원인
Python, C/C++, Live Server, AI 자동완성 계열 확장은 백그라운드에서 별도 프로세스를 스폰(spawn)합니다. 이 자식 프로세스가 비정상 종료되거나 무한 루프에 빠지면 Extension Host 전체를 끌고 내려옵니다. 특히 VS Code와 Cursor를 동시 설치한 환경에서 같은 확장이 두 에디터 간 설정을 공유하며 충돌하는 사례가 최근 급증했습니다.
② 시스템 리소스 부족 — 메모리·CPU 과부하
Node.js 기반의 Extension Host는 메모리 제한에 민감합니다. 대형 모노레포 프로젝트, Docker 컨테이너 내 Remote Extension, 또는 Python 분석 작업이 동시에 돌아가는 환경에서 OS가 Extension Host 프로세스를 OOM Killer로 강제 종료시키는 경우가 있습니다. 이 경우 에러 메시지는 같아도 확장을 비활성화해도 재발합니다.
③ GPU 가속 / 드라이버 충돌 — Electron 계층 문제
VS Code는 Electron(Chromium 기반) 위에서 동작합니다. GPU 드라이버와 Chromium 렌더러 간 충돌이 Extension Host 프로세스까지 전파되는 경우가 있으며, 특히 구형 GPU 드라이버를 사용하는 리눅스 환경이나 macOS 업데이트 직후에 빈번하게 발생합니다.

🔹 3. 1단계: 확장 비활성화 모드로 원인 분리

가장 먼저 할 일은 확장이 원인인지 아닌지 확인하는 것입니다. 아래 명령으로 모든 확장을 비활성화한 상태로 실행합니다.

터미널에서 실행 (VS Code)
code --disable-extensions
Cursor 에디터
cursor --disable-extensions
진단 결과 해석
  • 에러가 사라졌다 → 확장이 원인. 다음 단계(Bisect)로 범인 특정
  • 에러가 계속 발생 → 확장 외 원인(메모리, GPU, 설정 파일 손상). 3단계로 이동
👤 현장에서 겪은 케이스
"VS Code와 Cursor를 둘 다 설치해서 쓰다가 Cursor에서 에러가 났습니다. --disable-extensions로 실행하니 괜찮았고, Bisect를 돌려보니 범인은 Python 확장이었습니다. 알고 보니 Cursor 설치 시 VS Code의 확장 경로를 그대로 참조하면서 Python Language Server가 두 에디터 간 소켓 충돌을 일으킨 것이었습니다."

🔹 4. 2단계: Extension Bisect로 범인 찾기

확장이 원인임을 확인했다면, 하나씩 비활성화하는 수작업 대신 Extension Bisect 기능을 사용합니다. 이진 탐색 방식으로 확장 목록을 절반씩 좁혀 범인을 자동으로 찾아줍니다.

Extension Bisect 사용 방법
  1. F1 또는 Ctrl+Shift+P로 커맨드 팔레트 열기
  2. Start Extension Bisect 검색 후 실행
  3. 에디터가 확장의 절반을 비활성화하고 재시작 — 에러가 여전히 발생하는지 확인
  4. Good(문제 없음) 또는 Bad(문제 있음) 선택
  5. 범인이 특정될 때까지 반복 (보통 5~7회)

범인 확장을 찾았다면 해당 확장의 최신 버전으로 업데이트하거나, 동일 기능의 대안 확장으로 교체합니다. 확장 페이지에서 GitHub Issues를 확인하면 같은 오류를 겪은 다른 사용자의 해결책을 참고할 수 있습니다.

🔹 5. 3단계: 고질적 오류 — GPU·캐시·설정 초기화

확장을 모두 비활성화해도 에러가 사라지지 않는다면 아래 방법을 순서대로 시도합니다.

① GPU 가속 비활성화
VS Code/Cursor 설정 파일 settings.json에 아래 항목 추가, 또는 실행 시 플래그로 지정합니다.
// settings.json
"window.titleBarStyle": "custom",
"disable-hardware-acceleration": true
또는 터미널 실행 플래그
code --disable-gpu
cursor --disable-gpu
② 캐시 및 설치 파일 초기화
손상된 캐시 파일이 Extension Host 시작을 막는 경우가 있습니다. OS별 캐시 경로는 다음과 같습니다.
  • Windows: %APPDATA%\Code\Cache%APPDATA%\Code\CachedData 삭제
  • macOS: ~/Library/Application Support/Code/Cache 삭제
  • Linux: ~/.config/Code/Cache~/.config/Code/CachedData 삭제
③ 사용자 설정 초기화 (최후 수단)
settings.json, keybindings.json 등 사용자 설정 파일 자체가 손상된 경우입니다. 파일을 임시로 다른 곳에 백업해두고 삭제 후 VS Code를 재실행하면 기본값으로 시작됩니다. 에러가 사라지면 백업 파일에서 설정을 하나씩 옮겨 어느 설정이 문제였는지 확인합니다.
⚠️ Remote Extension 환경 주의
SSH Remote, Dev Container 환경에서 발생하는 경우 원인이 원격 서버의 리소스 부족인 경우가 많습니다. 서버 측 메모리와 디스크 여유 공간을 먼저 확인하고, remote.SSH.useLocalServer 설정을 false로 바꿔보는 것이 효과적입니다.

🔹 6. Cursor AI 에디터 특화 해결법

Cursor는 VS Code 포크(fork)지만 AI 기능이 Extension Host 내부에 깊이 통합되어 있어, 일반 VS Code와 다른 트리거로 에러가 발생하기도 합니다.

Cursor 전용 체크리스트
  • Shell 커맨드 재등록: Ctrl+Shift+P"Shell command: Install 'cursor' command" 실행 후 터미널에서 재실행
  • VS Code 동시 설치 시 확장 경로 충돌 확인: ~/.cursor/extensions~/.vscode/extensions 경로 분리 확인
  • AI 기능 비활성화 테스트: Cursor Settings → AI → "Enable AI features" 일시 비활성화 후 에러 재현 여부 확인
  • Cursor 완전 재설치: 앱 삭제 → ~/.cursor 폴더 완전 삭제 → 재설치 (설정 초기화 포함)
💡 로그로 정확한 원인 확인하기
에러 발생 직후 Help → Toggle Developer Tools → Console 탭을 열면 Extension Host가 어떤 오류를 내뿜고 종료됐는지 상세 스택 트레이스를 확인할 수 있습니다. 이 로그를 GitHub Issues나 Cursor Forum에 첨부하면 빠른 피드백을 받을 수 있습니다.

"해당 배너는 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

❓ 7. 자주 묻는 질문

Q. 확장을 전부 비활성화해도 에러가 납니다.

확장이 원인이 아니므로 캐시 삭제와 GPU 비활성화 옵션을 먼저 시도하세요. 그래도 안 되면 완전 재설치(설정 폴더 포함 삭제)가 가장 확실한 방법입니다.

Q. 에러가 간헐적으로만 발생합니다.

간헐적 발생은 대부분 리소스 문제입니다. 에러 발생 시 OS의 메모리 사용량을 확인해보고, 대형 프로젝트에서 발생한다면 VS Code의 "files.watcherExclude" 설정으로 불필요한 파일 감시 범위를 줄이는 것이 도움이 됩니다.

Q. Docker Dev Container 안에서 에러가 납니다.

컨테이너 내부의 Node.js 버전이 VS Code Extension Host와 호환되지 않는 경우가 있습니다. 컨테이너 이미지의 Node.js 버전을 VS Code 권장 버전(LTS)으로 맞추고, 컨테이너에 충분한 메모리(최소 2GB)를 할당했는지 확인하세요.

Q. macOS 업데이트 후 갑자기 에러가 납니다.

macOS 업데이트로 GPU 드라이버나 시스템 라이브러리가 변경되어 Electron 레이어와 충돌하는 패턴입니다. --disable-gpu 플래그로 우선 해소하고, VS Code/Cursor 업데이트를 기다리는 것이 현실적인 방법입니다.

📋 핵심 요약 — 이 순서로 진단하세요

  1. --disable-extensions로 실행 → 확장이 원인인지 확인
  2. 확장이 원인이면 → Extension Bisect로 범인 특정 후 제거/업데이트
  3. 확장과 무관하면 → GPU 비활성화캐시 삭제설정 초기화
  4. Cursor 사용자라면 → Shell 커맨드 재등록, 확장 경로 충돌 확인
  5. 모두 안 되면 → Developer Tools 로그 확인 후 GitHub Issues 제보

Extension Host 에러는 메시지는 같아도 원인이 제각각이라 한 방 해결책이 없습니다. 진단을 단계별로 쪼개어 원인을 좁히는 것이 가장 빠른 길이고, 로그를 직접 보는 습관을 들이면 다음번에는 훨씬 빠르게 해결할 수 있습니다.

728x90
반응형