Cygwin's bash стал очень медленным после ошибок - PullRequest
10 голосов
/ 23 сентября 2011

Я понимаю, что есть еще несколько вопросов о том, почему 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

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

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

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

Я [до сих пор] не совсем уверен, как использовать косы 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

Ответы [ 4 ]

1 голос
/ 24 февраля 2012

У меня была похожая проблема, исправленная удалением отключенных сетевых ресурсов.

http://cygwin.com/faq/faq-nochunks.html#faq.using.slow
http://cygwin.com/ml/cygwin/2010-06/msg00510.html (читать все ответы)

Вы также можете посмотреть на это:

http://cygwin.com/acronyms/#BLODA

гл

0 голосов
/ 22 марта 2012

Так что я никогда не решал это на самом деле. Вместо этого получил новый компьютер.

Подобная проблема возникла там со временем, и проблема была в драйвере NVIDIA программное обеспечение , а не в самих драйверах.

Итак, путь был:

  • Установка драйверов NDIVIA
  • Удалить программное обеспечение NVIDIA из AppWiz.cpl
  • Используйте Менеджер оборудования, чтобы найти INF-файлы, которые остались вокруг
0 голосов
/ 25 декабря 2011

Создает грязный файл журнала, используйте awk.

0 голосов
/ 12 ноября 2011

У меня мало опыта с этим, но я могу, по крайней мере, высказать свое мнение о том, как это выглядит.

Я вижу много [proc_wiater] строк, каждая из которых превышает 5000 ...больше, чем фактический листинг каталога: / Похоже, проблема в том, что "ls - это программа".Бьюсь об заклад, если бы вы рассчитали, dir, вы бы не заметили такого смешного времени.

- Кто-то, кто ничего не знает о strace.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...