🛠️ Cloudflare нашла редкий баг в компиляторе Go для ARM64 — ошибка повреждала стек и вызывала краши
Инженеры Cloudflare заметили странные fatal panics на ARM64-серверах, сопровождающиеся сообщениями вроде *“traceback did not unwind completely”*.
Ошибки указывали на то, что Go runtime не может корректно «размотать» стек после паники, а значит — стек повреждён.
После длительного расследования выяснилось: проблема была в самом компиляторе Go для ARM64.
Он иногда разбивал инструкцию на две отдельные операции:
Если между ними происходило асинхронное прерывание (async preemption), например, от планировщика или сборщика мусора, указатель стека (RSP) переходил в некорректное состояние.
В результате, когда Go runtime пытался «размотать» стек для трассировки ошибки, он сталкивался с повреждёнными адресами и завершался крашем.
Cloudflare смогла воспроизвести баг на минимальном примере: функция с большим стеком вызывала panic, и если прерывание происходило ровно между двумя частями инструкции, процесс завершался segmentation fault.
✅ Исправление уже включено в версии Go 1.23.12, 1.24.6 и 1.25.0.
Теперь компилятор избегает разбиения инструкции, используя промежуточный регистр — это гарантирует, что стек всегда корректен даже при прерывании выполнения.
Cloudflare подчёркивает: подобные ошибки встречаются крайне редко и проявляются только под высокой нагрузкой на ARM-серверах.
Но этот случай показывает, насколько сложно отлавливать низкоуровневые race condition-баги, которые могут оставаться незаметными годами, пока не сойдутся «идеальные» условия.
📌Подробнее: https://blog.cloudflare.com/how-we-found-a-bug-in-gos-arm64-compiler/
@Golang_google
Инженеры Cloudflare заметили странные fatal panics на ARM64-серверах, сопровождающиеся сообщениями вроде *“traceback did not unwind completely”*.
Ошибки указывали на то, что Go runtime не может корректно «размотать» стек после паники, а значит — стек повреждён.
После длительного расследования выяснилось: проблема была в самом компиляторе Go для ARM64.
Он иногда разбивал инструкцию на две отдельные операции:
ADD $framesize, RSP, RSP
Если между ними происходило асинхронное прерывание (async preemption), например, от планировщика или сборщика мусора, указатель стека (RSP) переходил в некорректное состояние.
В результате, когда Go runtime пытался «размотать» стек для трассировки ошибки, он сталкивался с повреждёнными адресами и завершался крашем.
Cloudflare смогла воспроизвести баг на минимальном примере: функция с большим стеком вызывала panic, и если прерывание происходило ровно между двумя частями инструкции, процесс завершался segmentation fault.
✅ Исправление уже включено в версии Go 1.23.12, 1.24.6 и 1.25.0.
Теперь компилятор избегает разбиения инструкции, используя промежуточный регистр — это гарантирует, что стек всегда корректен даже при прерывании выполнения.
Cloudflare подчёркивает: подобные ошибки встречаются крайне редко и проявляются только под высокой нагрузкой на ARM-серверах.
Но этот случай показывает, насколько сложно отлавливать низкоуровневые race condition-баги, которые могут оставаться незаметными годами, пока не сойдутся «идеальные» условия.
📌Подробнее: https://blog.cloudflare.com/how-we-found-a-bug-in-gos-arm64-compiler/
@Golang_google
1👍49🔥22❤10🥰2
Рынку нужны айтишники. Но, давайте честно, не все.
Самое грустное — смотреть, как резюме реально стоящих кандидатов отправляются в корзину под столом HR и грустно гниют в анналах hh, потому что их резюме выглядит как «Делал LLM, делал пайплайны, вывел в прод сайт про рост моркови». Как это помогло бизнесу, непонятно.
Что обычно не так с этими резюме:
— Проекты выглядят как описание обязанностей типа «работал работу, пил латте из кофемашины»
— Результаты отсутствуют или звучат так, как будто вы разрабатывали весь Яндекс с нуля
— Непонятно, в чём вы реально хороши, кроме как в стрессоустойчивости и коммуникабельности на основе собственных ощущений
— Оно не продает вас. Какой смысл в том, что вы тащили в прод сумасшедшие продукты и инженерили на уровне боженьки, если вы не можете ответить бизнесу четко на вопрос, зачем вы нужны.
Отдельная проблема — защита этого резюме на собесе. За классных спецов компании готовы драться, но никто не будет угадывать, какой вы классный, если вы не научитесь себя продавать.
Самостоятельно это сделать сложно, поэтому я советую обратить внимание на Карьерный Цех — это топовые карьерные консультанты, которые уже съели собаку на том, чтобы учить крутых ребят продавать себя бизнесу и уходить на хорошие деньги и позиции.
В программе карьерной поддержки Цеха:
— стратегические консультации с HR и хард-экспертами;
— создание резюме, на которое клюют рекрутеры и пишут первыми;
— мок-интервью, чтобы убрать все затыки;
— втягивают в комьюнити, которое реально решает на рынке.
Если вы давно хотели навести порядок в профессиональной самооценке — сходите на бесплатную консультацию.
Ребята уже там дадут первые конкретные рекомендации.
Самое грустное — смотреть, как резюме реально стоящих кандидатов отправляются в корзину под столом HR и грустно гниют в анналах hh, потому что их резюме выглядит как «Делал LLM, делал пайплайны, вывел в прод сайт про рост моркови». Как это помогло бизнесу, непонятно.
Что обычно не так с этими резюме:
— Проекты выглядят как описание обязанностей типа «работал работу, пил латте из кофемашины»
— Результаты отсутствуют или звучат так, как будто вы разрабатывали весь Яндекс с нуля
— Непонятно, в чём вы реально хороши, кроме как в стрессоустойчивости и коммуникабельности на основе собственных ощущений
— Оно не продает вас. Какой смысл в том, что вы тащили в прод сумасшедшие продукты и инженерили на уровне боженьки, если вы не можете ответить бизнесу четко на вопрос, зачем вы нужны.
Отдельная проблема — защита этого резюме на собесе. За классных спецов компании готовы драться, но никто не будет угадывать, какой вы классный, если вы не научитесь себя продавать.
Самостоятельно это сделать сложно, поэтому я советую обратить внимание на Карьерный Цех — это топовые карьерные консультанты, которые уже съели собаку на том, чтобы учить крутых ребят продавать себя бизнесу и уходить на хорошие деньги и позиции.
В программе карьерной поддержки Цеха:
— стратегические консультации с HR и хард-экспертами;
— создание резюме, на которое клюют рекрутеры и пишут первыми;
— мок-интервью, чтобы убрать все затыки;
— втягивают в комьюнити, которое реально решает на рынке.
Если вы давно хотели навести порядок в профессиональной самооценке — сходите на бесплатную консультацию.
Ребята уже там дадут первые конкретные рекомендации.
😁26🤬7🔥5🤯3👍2🥰2😱2🤔1
GoCraft - это мощный генератор бэкенда на Go, который позволяет быстро создавать современные микросервисы с использованием предпочтительных фреймворков и баз данных. Он обеспечивает создание полностью структурированных приложений с учетом лучших практик и встроенной безопасности.
- Быстрое создание готовых к производству бэкендов
- Модульная архитектура с возможностью выбора функций
- Встроенные механизмы безопасности и валидации
- Полная документация и примеры использования
- Поддержка множества технологий и интеграций
#go
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18🔥10🤔8👍5😁5