Sửa lỗi "Extension Host Terminated Unexpectedly" trong VS Code

intermediate💻 VS Code2026-03-19| VS Code 1.80+ trên Windows 10/11, macOS 12+, Ubuntu 20.04+

Error Message

Extension host terminated unexpectedly. Please reload the window.
#vscode#extension#crash#reload

Lỗi Gặp Phải

Bạn đang làm việc giữa chừng, chỉnh sửa code, thì VS Code đột ngột đứng hình. Rồi thông báo này xuất hiện:

Extension host terminated unexpectedly. Please reload the window.

IntelliSense ngừng hoạt động. Syntax highlighting biến mất. Language server không còn nữa. Nhấn "Reload Window" thì tạm ổn — được một lúc. Rồi lại crash tiếp.

Nguyên Nhân Thực Sự

VS Code chạy tất cả extension trong một tiến trình Node.js riêng biệt gọi là extension host. Khi tiến trình đó chết — do exception không được xử lý, tràn bộ nhớ, hoặc lỗi native — VS Code không thể tự khôi phục và ném ra lỗi này.

Các nguyên nhân phổ biến:

  • Một extension có bug hoặc rò rỉ bộ nhớ từ từ
  • Hai extension xung đột với nhau
  • Extension host chạm giới hạn bộ nhớ Node.js trên workspace lớn
  • File extension bị hỏng do cập nhật thất bại
  • Các module Node.js native không tương thích được đóng gói bên trong extension
  • Workspace có 50.000+ file khiến file watcher bị quá tải

Cách Sửa 1: Đọc Log Extension Host Trước Tiên

Đừng vội tắt extension bừa bãi. Hãy tìm nguyên nhân crash thực sự. Mở panel Output:

Ctrl+Shift+U  (Windows/Linux)
Cmd+Shift+U   (macOS)

Chuyển dropdown từ "Tasks" sang "Extension Host". Tìm stack trace, dòng Error:, hoặc thông báo "out of memory". Chín trong mười trường hợp, đây sẽ cho bạn biết chính xác extension nào đang gây ra vấn đề.

Để đào sâu hơn, mở console Developer Tools:

Help → Toggle Developer Tools → Console tab

Lọc theo Errors và tìm tên extension nào xuất hiện trong output.

Cách Sửa 2: Cô Lập Vấn Đề — Tắt Tất Cả Extension

Khởi động VS Code với tất cả extension bị tắt:

# Từ terminal
code --disable-extensions

# Hoặc từ bên trong VS Code:
Ctrl+Shift+P → "Open New Window with Extensions Disabled"

Hết crash chưa? Nếu hết, chắc chắn do extension gây ra. Vẫn crash dù không có extension? Bỏ qua thẳng đến Cách Sửa 5.

Cách Sửa 3: Dùng Bisect Để Tìm Extension Xấu

Kiểm tra từng extension trong số 30+ cái thì rất mất thời gian. Bỏ qua cách thủ công và dùng tính năng bisect tích hợp sẵn của VS Code:

Ctrl+Shift+P → "Start Extension Bisect"

VS Code sẽ tắt một nửa số extension, rồi hỏi: vẫn còn lỗi không? Bạn trả lời có hoặc không. Công cụ này thu hẹp phạm vi theo O(log n) bước — thường chỉ 5–6 vòng để tìm ra thủ phạm trong 30+ extension.

Sau khi tìm ra, bạn có các lựa chọn:

  • Tắt vĩnh viễn extension đó
  • Kiểm tra trang GitHub Issues của nó để xem có bản sửa hoặc cách khắc phục đã biết không
  • Quay về phiên bản cũ qua panel Extensions → biểu tượng bánh răng → "Install Another Version"

Cách Sửa 4: Xóa Cache Extension

File extension bị hỏng có thể gây crash liên tục ngay cả sau khi cập nhật. Xóa thư mục cache của extension có vấn đề:

Windows:

%USERPROFILE%\.vscode\extensions

macOS/Linux:

~/.vscode/extensions

Tìm thư mục của extension cụ thể (ví dụ: ms-python.python-2024.x.x), xóa nó đi, rồi cài lại từ panel Extensions. Tránh xóa toàn bộ thư mục extensions trừ khi bạn sẵn sàng cài lại tất cả từ đầu.

Cache lỗi thời cũng đáng xóa:

# macOS/Linux
rm -rf ~/.vscode/extensions/.obsolete

# Windows (PowerShell)
Remove-Item "$env:USERPROFILE\.vscode\extensions\.obsolete" -Force

Cách Sửa 5: Cô Lập Extension và Tăng Bộ Nhớ

Hai giải pháp riêng biệt ở đây, đều hữu ích khi bạn đang chạy nhiều extension nặng cùng lúc.

Giải pháp A — Cô lập tiến trình với affinity. Mặc định, tất cả extension dùng chung một tiến trình extension host. Nếu một extension crash, toàn bộ host bị kéo theo. Cài đặt affinity sẽ chuyển các extension cụ thể vào tiến trình riêng, giúp crash được khoanh vùng lại:

{
  "extensions.experimental.affinity": {
    "vscodevim.vim": 1
  }
}

Thêm đoạn này vào settings.json cho bất kỳ extension nào thường xuyên gây sự cố. Số nhóm 1 đưa nó vào một host riêng; dùng 2, 3, v.v. để tạo thêm các nhóm cô lập khác.

Giải pháp B — Tăng giới hạn bộ nhớ Node.js. Với các extension như Pylance, GitHub Copilot, hoặc language server TypeScript lớn, extension host có thể chạm giới hạn bộ nhớ mặc định ~1,5 GB của Node.js. Tăng giới hạn bằng cách chỉnh argv.json:

Ctrl+Shift+P → "Configure Runtime Arguments"

Thêm vào:

{
  "js-flags": "--max-old-space-size=4096"
}

Giới hạn được đặt thành 4 GB. Khởi động lại VS Code hoàn toàn sau khi lưu — reload window thôi là không đủ.

Cách Sửa 6: Kiểm Tra Giới Hạn File Watcher (Chỉ Dành Cho Linux)

Trên Linux, workspace có hàng chục nghìn file có thể làm cạn kiệt giới hạn file watcher ở cấp hệ thống và làm mất ổn định extension host. Kiểm tra giới hạn hiện tại của bạn:

cat /proc/sys/fs/inotify/max_user_watches

Giá trị như 8192 là quá thấp cho các dự án lớn. Tăng lên vĩnh viễn:

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Kết hợp với cấu hình loại trừ trong .vscode/settings.json để VS Code không theo dõi các thư mục không cần thiết:

{
  "files.watcherExclude": {
    "**/node_modules/**": true,
    "**/.git/**": true,
    "**/dist/**": true,
    "**/__pycache__/**": true
  }
}

Cách Sửa 7: Cài Đặt Lại VS Code Sạch Hoàn Toàn

Vẫn còn crash sau tất cả những bước trên? Bản cài đặt VS Code của bạn có thể đã bị hỏng. Cài lại sạch tốn khoảng 10 phút và loại trừ mọi khả năng cùng lúc:

  • Gỡ cài đặt VS Code
  • Xóa các thư mục config còn sót lại: ~/.vscode~/.config/Code trên Linux/macOS, hoặc %APPDATA%\Code trên Windows
  • Tải và cài đặt phiên bản ổn định mới nhất từ code.visualstudio.com
  • Cài lại extension theo từng nhóm nhỏ, chạy thử vài phút giữa mỗi lần cài

Cách Xác Nhận Đã Sửa Được

Hãy làm việc thực tế ít nhất 15–20 phút trước khi kết luận đã sửa xong. Bạn cần kiểm tra:

  • IntelliSense và autocomplete phản hồi bình thường
  • Không còn thông báo "Extension host terminated"
  • Log Output → Extension Host sạch (không có lỗi màu đỏ)
  • Các language server (Python, TypeScript, v.v.) duy trì kết nối xuyên suốt

Trên Linux/macOS, bạn có thể theo dõi trực tiếp tiến trình extension host:

watch -n 5 'ps aux | grep extensionHost | grep -v grep'

Process ID ổn định không thay đổi sau vài phút có nghĩa là lỗi crash đã được khắc phục.

Phòng Ngừa

  • Luôn cập nhật VS Code — hầu hết lỗi crash được vá trong các bản phát hành nhỏ trong vòng vài ngày
  • Kiểm tra lại extension mỗi vài tháng — bất kỳ extension nào không dùng trong 3+ tháng là gánh nặng vô ích nên gỡ bỏ
  • Dùng Profiles (VS Code 1.75+) để tạo bộ extension riêng cho từng loại dự án — không mở extension Python trong dự án Go, không dùng công cụ Go trong dự án Python
  • Đọc changelog trước khi cập nhật extension — báo cáo lỗi từ cộng đồng thường xuất hiện trong vài giờ sau khi có bản phát hành lỗi
  • Loại trừ các thư mục được tạo tự động và có kích thước lớn khỏi file watcher ngay từ đầu — node_modules, dist, .git, môi trường ảo — trước khi vấn đề xảy ra

Related Error Notes