Các ứng dụng bắt đầu nhưng không hiển thị UI


1

Tôi đã cố gắng khởi động các ứng dụng như bình thường từ menu bắt đầu của Windows. Trong hơn 30 phút, tôi đã nhận được các hiệu ứng sau:

  • các ứng dụng có GUI không được hiển thị nữa.
  • Tôi có thể tiếp tục sử dụng các ứng dụng GUI đã được mở
  • Tôi có thể mở các ứng dụng không phải GUI / console (như cmd).
  • Từ dấu nhắc dòng lệnh, tôi có thể thấy rằng các ứng dụng GUI được bắt đầu sử dụng tasklist

Đây là một ví dụ:

>tasklist | find "taskmgr"
taskmgr.exe                   4352 Console                    1      7.216 K
taskmgr.exe                   7824 Console                    1      7.216 K
taskmgr.exe                   7232 Console                    1      7.232 K

Như bạn có thể tưởng tượng, tôi đã cố gắng khởi động Trình quản lý tác vụ để chẩn đoán sự cố 3 lần. Nhưng không có cửa sổ Trình quản lý tác vụ nào hiển thị.

Theo giả định tasklisthiển thị các quy trình theo thứ tự chúng đã được bắt đầu, tôi đã xác định rõ vấn đề:

...
openAgent.exe                 7012 Console                    1    592.440 K Not Responding
...
WerFault.exe                  3592 Console                    1     10.112 K Unknown
...

openAgentlà một ứng dụng tôi đã đóng (hoặc ít nhất là đã cố gắng đóng, vì dường như nó vẫn đang chạy). Một cái gì đó đã bị hỏng do sự hiện diện của WerFault, nhưng tôi không thể thấy hộp thoại Báo cáo Lỗi Windows.

Chấm dứt openAgentứng dụng bằng cách sử dụng mạnh mẽ taskkill /pid 7012 /f, tất cả các ứng dụng tôi cố gắng bắt đầu đột nhiên xuất hiện.

Nhìn vào hộp thoại Báo cáo Lỗi Windows bây giờ, nó cho thấy ngoại lệ 80000003, đó là một điểm dừng (gỡ lỗi).

Điều gì đã xảy ra ở đây? Tôi muốn hiểu tình hình từ quan điểm của Windows Internals. Về lý thuyết, tôi hy vọng rằng sự cố của ứng dụng chế độ người dùng sẽ không thể ảnh hưởng đến các ứng dụng khác.

Thật không may, tôi không có kết xuất kernel của tình huống cũng như kết xuất của chế độ người dùng openAgent, vì vậy đây là tất cả thông tin tôi có thể cung cấp cho bạn.

Hệ thống của tôi là Windows 7 SP1 x64 Enterprise, không có bản cập nhật Windows đang chờ xử lý, CPU Intel Core i7. openAgentlà một công cụ thực thi của SilkTest bởi MicroF Focus, một công cụ tự động hóa thử nghiệm.


1
Bạn chưa cung cấp đủ thông tin để giải thích những gì xảy ra.
Ramhound

Câu trả lời:


0

Tôi có thể tái tạo vấn đề một lần nữa và hóa ra là openAgentcài đặt một hook được gọi OsHookDll_x86từ cùng một công ty.

Móc này áp dụng cho DispatchHookW():

2:010> k
...
0049f2b0 75a86381 OsHookDll_x86!GetMessageHook+0x37
0049f2cc 75a780a9 USER32!DispatchHookW+0x38
...
0049f544 5eff5709 USER32!PeekMessageW+0x108

ảnh hưởng đến vòng lặp Windows Message. Bất kỳ ứng dụng GUI nào cũng cần vòng lặp thông báo windows để chạy.

Móc gửi Tin nhắn Windows đến openAgentthông qua USER32!SendMessageW()nhưng openAgentđã bị treo bởi Windows Error Reporting ( WerFault) và do đó không thể xử lý các tin nhắn đó, dẫn đến thời gian chờ:

1:009> k
ChildEBP RetAddr  
00138f90 75a79886 USER32!NtUserMessageCall+0x15
00138fcc 75a797f3 USER32!SendMessageTimeoutWorker+0xa6
00138ff4 59d6066c USER32!SendMessageTimeoutW+0x21
...

Tôi không thể phân tích đầy đủ phần còn lại vì trong phiên gỡ lỗi của tôi, mọi thứ khác cũng bắt đầu đóng băng. Tôi giả định rằng hook cố gắng gửi lại tin nhắn thay vì quay lại, do đó dẫn đến một vòng lặp vô tận.

!analyze -vđã không hoạt động do thiếu biểu tượng chontdll .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.