OberonCore
https://forum.oberoncore.ru/

Очередная дыра в Mono
https://forum.oberoncore.ru/viewtopic.php?f=27&t=2303
Страница 1 из 1

Автор:  Сергей Губанов [ Вторник, 02 Февраль, 2010 13:48 ]
Заголовок сообщения:  Очередная дыра в Mono

Ситуация:

Программа зависла. Жрёт 100% одного ядра процессора (всего ядер в системе восемь). Виртуальной памяти съето почти по максимуму - 3818m, физической нормально - 82m. Программа многопоточная, но все потоки зависли. Смотрим через top, видим следующее: да все потоки кроме одного спят, один жрёт 100% одного ядра.

Mono 2.4.3

Долго думали что за хрень приключилась. Ну не могли все потоки одновременно взять и зависнуть. Даже если что-то криво написано и один поток зациклился, то остальные 7 процессорных ядер же свободны, то есть все другие части программы должны работать как ни в чём не бывало. Но они не работают, спят.

Наконец дошло.

Когда бывает такое, чтобы все потоки кроме одного спали?

А такое бывает когда сборщик мусора всех остановил и пошёл мусор собирать!

Зациклился и завесил всю систему сам сборщик мусора Mono 2.4.3!!!!!!!!!!!! :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted:

Автор:  Info21 [ Вторник, 02 Февраль, 2010 14:24 ]
Заголовок сообщения:  Re: Очередная дыра в Mono

Сергей Губанов писал(а):
Зациклился и завесил всю систему сам сборщик мусора Mono 2.4.3!!!!!!!!!!!! :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted:
При таком-то номере версии ... -- удивительно мне это.

Надо запомнить -- отсылать сюда, когда кто будет обижаться на "партизан-рукосуев-ополченцев...".

Автор:  Trurl [ Вторник, 02 Февраль, 2010 17:31 ]
Заголовок сообщения:  Re: Очередная дыра в Mono

Сергей Губанов писал(а):
Когда бывает такое, чтобы все потоки кроме одного спали?

А такое бывает когда сборщик мусора всех остановил и пошёл мусор собирать!


Не только. Может, они все ждут Очень Важных Данных, которые один поток усердно добывает.

Автор:  Сергей Губанов [ Вторник, 02 Февраль, 2010 18:29 ]
Заголовок сообщения:  Re: Очередная дыра в Mono

Ждёт там только один поток (на блокирующем socker.Receive). Остальные потоки, если им становится нечего делать, засыпают на время от 4 до 50 миллисекунд, потом просыпаются и перепроверяют не надо ли чего-нибудь сделать, периодически кое-что делают.

То есть все сразу могут уснуть только по повелению сборщика мусора.

Автор:  Сергей Губанов [ Вторник, 02 Февраль, 2010 18:37 ]
Заголовок сообщения:  Re: Очередная дыра в Mono

Кстати, я не утверждаю что ошибка именно в моновском сборщике мусора. Наверняка где-то опять память запороли, а сборщик мусора из-за этого зациклился. Например, летом прошлого года во времена Mono 2.4.2 эти монистые-гении память портили (медицинский факт), в 2.4.2.3 исправили. А в 2.4.3 значит опять двадцать пять. Сейчас эти монстры уже выпустили версию 2.6.1 надо будет пробовать её.

Автор:  Peter Almazov [ Вторник, 02 Февраль, 2010 18:45 ]
Заголовок сообщения:  Re: Очередная дыра в Mono

А Вы что, можете это воспроизвести?

Автор:  Сергей Губанов [ Вторник, 02 Февраль, 2010 19:07 ]
Заголовок сообщения:  Re: Очередная дыра в Mono

Порчу памяти в моно 2.4.2 я воспроизводил регулярно после того как написал симулятор большой нагрузки (при малой нагрузке ждать падения в среднем надо было часов 6-12, хотя могло и через 20 минут упасть).

Сегодняшний случай с моно 2.4.3 обнаружили тестеры. Сегодня уже во второй раз. Какое-то время назад был первый раз, но тогда мы вообще не поняли что же это за ерунда такая стряслясь. Сегодня, когда это повторилось стали разбираться всерьёз.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/