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
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
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
@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? –