Explorer crash ngẫu nhiên khi đóng nhiều tab trên Microsoft Edge

Không rõ lỗi này bắt đầu xuất hiện từ khi nào, nhưng mình nhận thấy một tình huống khá kỳ lạ, khi sử dụng Microsoft Edge, nếu liên tục đóng nhiều tab bằng phím tắt Ctrl + W, đôi lúc mọi thứ vẫn bình thường, nhưng có lúc Windows Explorer (explorer.exe) bị crash rồi tự khởi động lại

Hiện tượng này xảy ra ngẫu nhiên nên khá khó xác định nguyên nhân

Kiểm tra Event Viewer

Mở Event Viewer thì thấy hai lỗi xuất hiện cùng thời điểm

  • Lỗi đầu tiên:
Application: explorer.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: exception code c0000005, exception address 00007FFDBFADB86C
  • Và ngay sau đó là:
Faulting application name: explorer.exe, version: 10.0.19041.7548, time stamp: 0xd203369f
Faulting module name: twinui.pcshell.dll, version: 10.0.19041.7548, time stamp: 0xb52c92a9
Exception code: 0xc0000005
Fault offset: 0x00000000000eb86c
Faulting process id: 0x7e44
Faulting application start time: 0x01dd16fc529380d5
Faulting application path: C:\Windows\explorer.exe
Faulting module path: C:\Windows\system32\twinui.pcshell.dll
Report Id: 2703d261-bb2b-4848-9c4b-eb37c7517f88
Faulting package full name: 
Faulting package-relative application ID:

twinui.pcshell.dll là một thành phần của Windows Shell, vì vậy ban đầu mình đoán có lẽ hệ điều hành đã dùng nhiều năm nên phát sinh lỗi

Thử cài lại Windows

Tiện thể thấy Windows cũng không còn mượt như trước, mình quyết định cài mới hoàn toàn, nhưng lỗi vẫn xuất hiện y hệt

Lúc này mình chuyển sang nghi ngờ DisplayFusion, vì Event Viewer có nhắc tới .NET Runtime, trong khi DisplayFusion cũng sử dụng .NET và tích hợp rất sâu vào Explorer

  • Gỡ DisplayFusion, Directory Opus
  • Quay về phiên bản cũ ra mắt từ vài năm trước
  • Thay thế bằng các ứng dụng khác Actual Multiple Monitors …
  • Gỡ/tắt tất cả ứng dụng có thích hợp menu vào Explorer qua shexview

Kết quả là tần suất crash có vẻ giảm, nhưng vẫn không hết, đến đây mình quyết định kiểm tra theo cách triệt để hơn

  • Cài mới hoàn toàn Windows một lần nữa, chỉ cài duy nhất Microsoft Edge, không cài bất kỳ phần mềm nào khác

Kết quả vẫn không thay đổi, crash vẫn ngẫu nhiên xuất hiện, điều thú vị là:

  • Chỉ Microsoft Edge mới tái hiện được lỗi
  • Chrome, Firefox và các trình duyệt Chromium khác đều hoạt động bình thường

Lúc này mình bắt đầu nghi ngờ vấn đề nằm ở chính Edge hoặc cơ chế tích hợp giữa Edge và Windows, do Edge là trình duyệt chính mình dùng hàng ngày, tình huống lỗi thế này thì không ổn, thử dùng ProcDump để tạo dump file khi Explorer crash, sau đó mở bằng WinDbg và chạy lệnh !analyze -v

Sau đó lấy toàn bộ log và nhờ AI phân tích call stack, kết quả cho thấy chuỗi xử lý như sau

Chuỗi sự kiện khi nhấn Ctrl+W trên Edge

  • Đóng một tab trong Edge
  • Edge thông báo cho Explorer rằng danh sách tab của cửa sổ đã thay đổi thông qua cơ chế COM/RPC (IWindowTabExtensionWindowTabsChanged)
  • Explorer nhận sự kiện, cập nhật WindowTabDataModel và xác định tab đang hoạt động (ActiveTab)
  • Trong quá trình lấy Id của tab đang hoạt động (IWindowTabView::Id()), Explorer nhận được một con trỏ NULL (rcx = 0)
  • Lệnh mov rax, [rcx] cố đọc dữ liệu từ địa chỉ 0x0000000000000000, dẫn tới lỗi 0xC0000005 (Access Violation) và Explorer bị crash

Khả năng cao đây là race condition hoặc trạng thái dữ liệu không đồng bộ, khiến Explorer nhận được một IWindowTabView không còn hợp lệ (NULL) khi cập nhật tab đang hoạt động, ngắn gọn thì Explorer đang cố truy cập vào một đối tượng tab không còn hợp lệ

Cách khắc phục tạm thời

Vì call stack đều xoay quanh Window Tabs, mình thử tắt toàn bộ các tính năng liên quan đến Tab giữa Windows và Edge

  • Windows tìm kiếm Multitasking

Chỉnh mục “Alt + Tab” thành “Open windows only” (Chỉ mở các cửa sổ)

  • Edge đi tới AppearanceTabs

Tắt Show tab preview on hoverShow tab groups in favorites bar

Kết quả

Sau khi tắt các tính năng liên quan đến tab trên Windows và Edge, đến thời điểm hiện tại mình chưa gặp lại hiện tượng Explorer crash khi liên tục nhấn Ctrl + W để đóng tab

Đây mới chỉ là workaround, chưa thể khẳng định đã tìm được nguyên nhân gốc hoặc Microsoft đã sửa lỗi, nếu bạn cũng gặp hiện tượng Explorer tự khởi động lại khi đóng nhiều tab trên Edge, có thể thử cách trong bài xem có hiệu quả không, đây là lỗi khá lạ, vì nó xảy ra trên Windows và Edge mới nhất, trong khi trước đây mình dùng Windows và Edge cũ hơn thì chưa gặp tình huống này bao giờ

Bài viết này sẽ được cập nhập, nếu tình huống crash Explorer xuất hiện lại


Related Posts

Chính sách bình luận: Chúng tôi rất trân trọng các bình luận của bạn và cảm ơn thời gian bạn dành để chia sẻ ý tưởng và phản hồi.
Ghi chú: Những bình luận được xác định là spam hoặc chỉ mang tính quảng cáo sẽ bị xóa.

• Để cải thiện trải nghiệm bình luận, chúng tôi khuyến khích bạn tạo một tài khoản Gravatar. Thêm avatar vào tài khoản Gravatar sẽ giúp bình luận của bạn dễ nhận diện hơn đối với các thành viên khác.

✂️ Sao chép và 📋 Dán Emoji 💪 giúp bình luận thêm sinh động và thú vị!