TGViewer
BASCODE BASCODE @bascodech · 140 subscribers
Post #129 137
Одна переменная окружения возвращает Go в 2013 год.

Вышла вторая часть серии про рантайм. Первая была про то, почему поток дорогой, а горутина нет. Эта про механизмы, которых из кода не видно: стек, который переезжает по памяти целиком, вытеснение сигналом ОС и полный жизненный цикл горутины.

Шесть лет в Go существовал цикл, который невозможно было прервать. Крутится без вызовов функций, вытеснять нечем, а сборщику мусора нужна остановка мира. Вот все и вставало насмерть. Приехало это в 1.2, починили сигналом только в 1.14.

Потрогать можно прямо сейчас, современным компилятором:

GODEBUG=asyncpreemptoff=1 go run ./preempt


Программа виснет до первой строчки вывода. Без переменной отрабатывает за миллисекунды.

Что еще в статье:
- Вытеснение прилетает сигналом SIGURG, а обработчик подделывает вызов функции, которого в коде не было. Увидишь под strace ливень SIGURG, это не сломанная сеть и не атака, это планировщик работает.
- Дамп горутин разобран построчно: номер, причина ожидания, минуты зависания, created by с точным местом рождения. Самый практичный навык из всей серии, окупается на первом же инциденте.
- Детектор дедлоков в проде не сработает никогда. Он считает живые потоки, а не разбирает граф ожиданий, поэтому сотня зависших горутин при работающем HTTP-сервере для него невидима.

Третья часть через неделю... Я надеюсь :-)

https://habr.com/ru/articles/1073044/
  • 👍 2
  • ⚡ 1
  • 🔥 1
More from @bascodech
  1. Sep 18, 2026Мысли про дебаггинг и IDE в 2026 Вот интересная история... Расс Кокс выложил пять сессий,…
  2. Sep 14, 2026Кодить без AI сейчас как заниматься айкидо. Красиво и глубоко и десять лет до черного пояс…
  3. Sep 7, 2026Выложил свой statusline для claude code в публичный репозиторий. Лимитов у подписки три: п…
  4. Sep 5, 2026Рубрика "лысая мудрость" Как я больше года храбро готовился, но так ничего и не сделал. Вт…
  5. Sep 2, 2026Распаковал 30 релизов Go подряд, 2.9 ГБ исходников. Ради одного вопроса. Вопрос такой: поч…
  6. Aug 29, 2026Сегодня у кого-то будет распаковка :-)
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →