Ситуация:

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

Mono 2.4.3

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

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

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

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

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