2011-09-23 20 views
10

Tôi nhận ra có một vài câu hỏi khác về lý do Cygwin rõ ràng là chậm, nhưng trường hợp này có vẻ là duy nhất.Bash của Cygwin trở nên cực kỳ chậm sau khi lỗi

Tôi đã gặp một số sự cố khi mọi thứ báo cáo nhiều lỗi và sau đó khởi động lại bất kỳ quá trình nào được khởi chạy từ bash cực kỳ chậm. Tôi thành thật không có ý tưởng gì có thể gây ra điều này (tôi đã kiểm tra ưu tiên quá trình trong taskmgr; nó vẫn bình thường).

chi tiết:

tôi đã chạy một ngâm thử nghiệm của một số mã ổ cắm qua đêm và trở lại vào buổi sáng để tìm màn hình của tôi tràn ngập lỗi (DialogBoxes - chủ yếu là cố gắng truy cập vào con trỏ NULL) cũng như khá một vài thứ được gửi tới dòng lệnh. Có khá nhiều văn bản tôi không thể chụp được (máy tính hầu như không phản hồi; tôi phải khởi động lại bằng tay). Tôi nhớ một số văn bản được tham chiếu "Lỗi Win32 6" (mà tôi giả định có nghĩa là INVALID HANDLE).

Sau khi khởi động lại, hầu hết mọi thứ đều tốt, nhưng Cygwin/bash vẫn khá không phản hồi. Tôi chạy sau, như đề xuất trong một câu hỏi khác:

$ time for i in {1..10} ; do bash -c "echo Hello" ; done 
... 
real 1m12.244s 
user 0m3.522s 
sys  0m34.460s 

Gọi một ví dụ bash là không cần thiết cho tốc độ khủng khiếp:

$ time for i in {1..10}; do ls ; done  
# nb there are about 6 entries in pwd 
.... 
real 0m47.718s 
user 0m2.568s 
sys  0m23.411s 

Mặc dù builtins dường như đi nhanh chóng đủ:

$ time for i in {1..10} ; do echo Hello ; done 
.... 
real 0m0.001s 
user 0m0.000s 
sys  0m0.000s 

Cập nhật: Tôi vừa mới nhận ra bản cập nhật Windows được cài đặt từ đó đến nay. Tôi mừng vì điều này không quá phức tạp hay gì cả. (Mặc dù, tôi tin rằng các đồng nghiệp khác đã cài đặt bản cập nhật và không gặp sự cố).

Cập nhật 2:

Để trả lời một bình luận dưới đây, các tập tin trong/bin thực thi mà không bất kỳ vấn đề từ CMD. Ngoài ra, tôi hoàn toàn loại bỏ và tải lại thư mục cài đặt Cygwin của mình và sự cố vẫn xảy ra.

Tôi [vẫn] không hoàn toàn chắc chắn cách sử dụng strace của Cygwin, nhưng tôi nghĩ cột đầu tiên có thể là đồng bằng thời gian. Với ý nghĩ đó, đây là một vài dòng mà trông có vấn đề (các 0xDEADBEEF chắc chắn là không khuyến khích):

4100175 4101564 [main] bash 5664 _cygtls::remove: wait 0xFFFFFFFF 
4278898 4279724 [main] bash 5612 child_copy: dll bss - hp 0x628 low 0x611DC000, high 0x612108D0, res 1 
2210923 25635973 [proc_waiter] bash 5664 pinfo::maybe_set_exit_code_from_windows: pid 5400, exit value - old 0x8000000, windows 0xDEADBEEF, cygwin 0x8000000 
3595425 16085618 [proc_waiter] bash 5612 pinfo::maybe_set_exit_code_from_windows: pid 5376, exit value - old 0x8000000, windows 0xDEADBEEF, cygwin 0x8000000 
3057452 19149209 [proc_waiter] bash 5664 pinfo::maybe_set_exit_code_from_windows: pid 5612, exit value - old 0x8000000, windows 0xDEADBEEF, cygwin 0x8000000 
2631997 38835042 [proc_waiter] bash 5716 pinfo::maybe_set_exit_code_from_windows: pid 5720, exit value - old 0x8000000, windows 0xDEADBEEF, cygwin 0x8000000 
2610852 38836658 [main] bash 4624 _cygtls::remove: wait 0xFFFFFFFF 
3708283 42556365 [proc_waiter] bash 5716 pinfo::maybe_set_exit_code_from_windows: pid 4624, exit value - old 0x8000000, windows 0xDEADBEEF, cygwin 0x8000000 
3666884 42562053 [main] bash 5664 fhandler_base_overlapped::wait_overlapped: GetOverLappedResult failed, bytes 0 
2742397 45305871 [proc_waiter] bash 5664 pinfo::maybe_set_exit_code_from_windows: pid 5716, exit value - old 0x8000000, windows 0xDEADBEEF, cygwin 0x8000000 
45322195 45322997 [main] bash 3996 child_copy: dll bss - hp 0x62C low 0x611DC000, high 0x612108D0, res 1 
4247577 49581019 [main] bash 3996 _cygtls::remove: wait 0xFFFFFFFF 
4266690 49581325 [main] bash 5664 child_info::sync: pid 3996, WFMO returned 0, res 1 
49622099 49623318 [main] bash 4840 child_copy: dll bss - hp 0x690 low 0x611DC000, high 0x612108D0, res 1 
4225718 53860809 [main] bash 4840 _cygtls::remove: wait 0xFFFFFFFF 
4248491 53861119 [main] bash 3996 child_info::sync: pid 4840, WFMO returned 0, res 1 
2167422 2169463 [main] bash 1412 _cygtls::remove: wait 0xFFFFFFFF 
10369 2205831 [main] bash 1412 pwdgrp::load: \etc\passwd curr_lines 4082 
10313 2237148 [main] bash 1412 cygwin_gethostname: name A119894 
14720 2251868 [main] bash 1412 stat64: entering 
+0

Nó có phải là từ 'bash'? Điều gì sẽ xảy ra nếu bạn chạy 'ls.exe' từ Explorer? (Không biết nếu đó là có thể ...) – Thomas

+0

Bạn cũng có thể thử sử dụng 'strace' để tìm ra nếu đó là một cuộc gọi hệ thống đang chậm. – Thomas

+0

@Thomas - Tôi không quen với 'strace' và đầu ra hơi dài dòng. Tôi đang tìm gì ở đây? –

Trả lời

0

Vì vậy, tôi không bao giờ thực sự giải quyết này. Thay vào đó, có một máy tính mới.

Sự cố tương tự đã được khắc phục ở đó cuối cùng và vấn đề là trình điều khiển NVIDIA phần mềm - không phải là trình điều khiển thực.

Vì vậy, con đường là:

  • Install NDIVIA Drivers
  • Hủy bỏ Phần mềm NVIDIA từ appwiz.cpl
  • Sử dụng phần cứng Manager để tìm các tập tin .inf còn sót lại xung quanh
0

Tôi có ít kinh nghiệm với điều này, nhưng tôi ít nhất có thể cung cấp cho bạn quan điểm của tôi về những gì nó trông như thế nào.

Tôi thấy rất nhiều [proc_wiater] dòng, mỗi dòng trên 5000 ... dài hơn danh sách thư mục thực của bạn:/Có vẻ như vấn đề ở đây là "ls là một chương trình". Tôi đặt cược nếu bạn hẹn giờ dir bạn không nhận thấy một thời gian vô lý như vậy.

-Một người không biết gì về strace.

0

Nó tạo tệp nhật ký bẩn, sử dụng awk.

Các vấn đề liên quan