Баш Cygwin стал чрезвычайно медленным после ошибок

Я понимаю, что есть еще несколько вопросов о том, почему Cygwin явно медленный, но этот случай кажется уникальным.

У меня были проблемы, когда вещи сообщали о большом количестве ошибок, а затем после перезагрузки любой процесс, запущенный из bash, работал очень медленно. Я, честно говоря, понятия не имею, что может быть причиной этого (я проверил приоритет процесса в taskmgr; это все еще нормально).

Подробности:

Я проводил тест на выдержку некоторого кода сокета в течение ночи и вернулся утром, чтобы обнаружить, что мой экран переполнен ошибками (DialogBoxes - в основном пытались получить доступ к указателям NULL), а также довольно много отправленных вещей в командную строку. Было довольно много текста, который я не смог захватить (компьютер в основном не отвечал; мне пришлось перезагрузить его вручную). Я помню, как упоминалось в тексте «Ошибка Win32 6» (что, как я полагаю, означает INVALID HANDLE ).

После перезагрузки все в порядке, но Cygwin / bash по-прежнему не отвечает. Я выполнил следующее, как было предложено в другом вопросе:

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

Вызов другого экземпляра bash не требуется из-за ужасной скорости:

$ 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

Хотя встроенные функции, похоже, работают достаточно быстро:

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

Обновление: {{1 }} Я только что понял, что между тем и сейчас был установлен Центр обновления Windows. Я рад, что это не стало слишком сложным или что-то в этом роде.(Хотя я считаю, что другие коллеги установили обновление и не видят проблем).

Обновление 2:

Чтобы ответить на комментарий ниже, файлы в / bin выполняются без каких-либо проблем из CMD. Кроме того, я полностью удалил и повторно загрузил свой установочный каталог cygwin, и проблема все еще возникает.

Я [все еще] не совсем уверен, как использовать Strace Cygwin, но я думаю, что первый столбец может быть дельтой времени. Имея это в виду, вот несколько строк, которые выглядят проблематично ( 0xDEADBEEF , конечно, не обнадеживает):

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

10
задан Clayton Hughes 26 September 2011 в 16:40
поделиться