🛠️ 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👍56🔥26❤12🥰2
Рынку нужны айтишники. Но, давайте честно, не все.
Самое грустное — смотреть, как резюме реально стоящих кандидатов отправляются в корзину под столом HR и грустно гниют в анналах hh, потому что их резюме выглядит как «Делал LLM, делал пайплайны, вывел в прод сайт про рост моркови». Как это помогло бизнесу, непонятно.
Что обычно не так с этими резюме:
— Проекты выглядят как описание обязанностей типа «работал работу, пил латте из кофемашины»
— Результаты отсутствуют или звучат так, как будто вы разрабатывали весь Яндекс с нуля
— Непонятно, в чём вы реально хороши, кроме как в стрессоустойчивости и коммуникабельности на основе собственных ощущений
— Оно не продает вас. Какой смысл в том, что вы тащили в прод сумасшедшие продукты и инженерили на уровне боженьки, если вы не можете ответить бизнесу четко на вопрос, зачем вы нужны.
Отдельная проблема — защита этого резюме на собесе. За классных спецов компании готовы драться, но никто не будет угадывать, какой вы классный, если вы не научитесь себя продавать.
Самостоятельно это сделать сложно, поэтому я советую обратить внимание на Карьерный Цех — это топовые карьерные консультанты, которые уже съели собаку на том, чтобы учить крутых ребят продавать себя бизнесу и уходить на хорошие деньги и позиции.
В программе карьерной поддержки Цеха:
— стратегические консультации с HR и хард-экспертами;
— создание резюме, на которое клюют рекрутеры и пишут первыми;
— мок-интервью, чтобы убрать все затыки;
— втягивают в комьюнити, которое реально решает на рынке.
Если вы давно хотели навести порядок в профессиональной самооценке — сходите на бесплатную консультацию.
Ребята уже там дадут первые конкретные рекомендации.
Самое грустное — смотреть, как резюме реально стоящих кандидатов отправляются в корзину под столом HR и грустно гниют в анналах hh, потому что их резюме выглядит как «Делал LLM, делал пайплайны, вывел в прод сайт про рост моркови». Как это помогло бизнесу, непонятно.
Что обычно не так с этими резюме:
— Проекты выглядят как описание обязанностей типа «работал работу, пил латте из кофемашины»
— Результаты отсутствуют или звучат так, как будто вы разрабатывали весь Яндекс с нуля
— Непонятно, в чём вы реально хороши, кроме как в стрессоустойчивости и коммуникабельности на основе собственных ощущений
— Оно не продает вас. Какой смысл в том, что вы тащили в прод сумасшедшие продукты и инженерили на уровне боженьки, если вы не можете ответить бизнесу четко на вопрос, зачем вы нужны.
Отдельная проблема — защита этого резюме на собесе. За классных спецов компании готовы драться, но никто не будет угадывать, какой вы классный, если вы не научитесь себя продавать.
Самостоятельно это сделать сложно, поэтому я советую обратить внимание на Карьерный Цех — это топовые карьерные консультанты, которые уже съели собаку на том, чтобы учить крутых ребят продавать себя бизнесу и уходить на хорошие деньги и позиции.
В программе карьерной поддержки Цеха:
— стратегические консультации с HR и хард-экспертами;
— создание резюме, на которое клюют рекрутеры и пишут первыми;
— мок-интервью, чтобы убрать все затыки;
— втягивают в комьюнити, которое реально решает на рынке.
Если вы давно хотели навести порядок в профессиональной самооценке — сходите на бесплатную консультацию.
Ребята уже там дадут первые конкретные рекомендации.
😁33🔥7🤬7❤6👍4🤯3🥰2😱2🤔1
GoCraft - это мощный генератор бэкенда на Go, который позволяет быстро создавать современные микросервисы с использованием предпочтительных фреймворков и баз данных. Он обеспечивает создание полностью структурированных приложений с учетом лучших практик и встроенной безопасности.
- Быстрое создание готовых к производству бэкендов
- Модульная архитектура с возможностью выбора функций
- Встроенные механизмы безопасности и валидации
- Полная документация и примеры использования
- Поддержка множества технологий и интеграций
#go
Please open Telegram to view this post
VIEW IN TELEGRAM
❤31🔥11👍8🤔8😁6
Resterm — это клиент для работы с REST API в терминале, предлагающий удобный интерфейс и мощные функции. Он поддерживает работу с .http и .rest файлами, а также позволяет выполнять запросы прямо из редактора. Включает поддержку аутентификации, переменных и тестирования запросов с помощью JavaScript.
🚀Основные моменты:
- Модальный редактор с поддержкой Vim-стиля
- Встроенные запросы без необходимости в файлах
- Поддержка gRPC и GraphQL
- Сохранение сессий и истории запросов
- Настраиваемый транспорт и параметры окружения
📌 GitHub: https://github.com/unkn0wn-root/resterm
#go
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26❤8👍7🥰1😁1
🚀 GoMLX: ML Framework for Go
GoMLX — это мощный фреймворк для машинного обучения на Go, предлагающий удобные библиотеки и инструменты для работы с ML. Он поддерживает дифференцируемые операторы и предоставляет средства для визуализации метрик в процессе обучения. GoMLX работает на различных платформах, включая браузеры с помощью WASM.
🚀 Основные моменты:
- Полноценная поддержка машинного обучения с использованием Go.
- Оптимизированный движок на базе OpenXLA для быстрой компиляции.
- Простота в использовании и расширяемости для экспериментов с ML.
- Поддержка различных известных компонентов ML.
- Документация и полезные сообщения об ошибках.
📌 GitHub: https://github.com/gomlx/gomlx
@golang_google
GoMLX — это мощный фреймворк для машинного обучения на Go, предлагающий удобные библиотеки и инструменты для работы с ML. Он поддерживает дифференцируемые операторы и предоставляет средства для визуализации метрик в процессе обучения. GoMLX работает на различных платформах, включая браузеры с помощью WASM.
🚀 Основные моменты:
- Полноценная поддержка машинного обучения с использованием Go.
- Оптимизированный движок на базе OpenXLA для быстрой компиляции.
- Простота в использовании и расширяемости для экспериментов с ML.
- Поддержка различных известных компонентов ML.
- Документация и полезные сообщения об ошибках.
📌 GitHub: https://github.com/gomlx/gomlx
@golang_google
👍15❤7🔥7🤯3
16 октября пройдёт совместный митап 2ГИС и Lamoda Tech — офлайн и онлайн. Доклады, факапы, еда, пиво и люди, которые говорят на одном языке — Go.
📍 Москва, Новоданиловская наб., 12, офис 2ГИС, 14 этаж
🕖 19:00 — 23:00
В программе:
— Дмитрий Буров, Lamoda Tech: «За кулисами асинхронности: корутины, горутины и правда между ними»
— Павел Шнель, 2ГИС: «Интеграции под нагрузкой: практики и последствия решений»
— Разгоны факапов от спикеров и участников. За лучшие факапы — фирменный мерч.
После — афтерпати и нетворкинг. Скучно не будет!
👉 Регистрация
Реклама. ООО "ДУБЛЬГИС" ИНН: 5405276278 Erid: 2RanymgKstm
📍 Москва, Новоданиловская наб., 12, офис 2ГИС, 14 этаж
🕖 19:00 — 23:00
В программе:
— Дмитрий Буров, Lamoda Tech: «За кулисами асинхронности: корутины, горутины и правда между ними»
— Павел Шнель, 2ГИС: «Интеграции под нагрузкой: практики и последствия решений»
— Разгоны факапов от спикеров и участников. За лучшие факапы — фирменный мерч.
После — афтерпати и нетворкинг. Скучно не будет!
👉 Регистрация
Реклама. ООО "ДУБЛЬГИС" ИНН: 5405276278 Erid: 2RanymgKstm
🔥6🤬1
🚀 Высокопроизводительный движок полнотекстового поиска на Go
Blaze — это мощный движок для быстрого полнотекстового поиска с использованием инвертированных индексов. Он идеально подходит для приложений, которые требуют эффективного поиска по текстовым документам без зависимости от внешних поисковых систем.
🚀 Основные моменты:
- Инвертированный индекс для мгновенного поиска
- Поддержка булевых запросов и фразового поиска
- Алгоритм BM25 для оценки релевантности
- Безопасный для потоков с поддержкой конкурентного индексирования
- Компактное бинарное хранилище для данных
📌 GitHub: https://github.com/wizenheimer/blaze
Blaze — это мощный движок для быстрого полнотекстового поиска с использованием инвертированных индексов. Он идеально подходит для приложений, которые требуют эффективного поиска по текстовым документам без зависимости от внешних поисковых систем.
🚀 Основные моменты:
- Инвертированный индекс для мгновенного поиска
- Поддержка булевых запросов и фразового поиска
- Алгоритм BM25 для оценки релевантности
- Безопасный для потоков с поддержкой конкурентного индексирования
- Компактное бинарное хранилище для данных
📌 GitHub: https://github.com/wizenheimer/blaze
👍12🔥9❤7
1 ноября пройдёт Я.Субботник по Go — митап для разработчиков и энтузиастов Go. Встречаемся в офисе Яндекса в Москве и онлайн, чтобы в комфортной атмосфере обсудить, что волнует комьюнити: от недавних релизов и инструментов до архитектурных решений и производительности сервисов 🚀
Игорь Панасюк, разработчик бэкенда Плюса и Финтеха, разберёт, какие подходы применяются в управлении памятью и как устроен garbage collector в Go. Александр Никитин, старший разработчик Яндекс Маркета, расскажет про трассировку логики с помощью Debug Tree — удобного способа логирования для поиска багов в сложной кодовой базе прямо в продакшене. И это не всё: в программе выступления старшего разработчика бэкенда Yandex Cloud Александра Демиденко и СТО Яндекс Игр Степана Пестерникова.
Помимо докладов участников ждут круглые столы про использование AI-инструментов, highload и нетипичное применение Golang.
Узнать больше об ивенте и зарегистрироваться тут
Игорь Панасюк, разработчик бэкенда Плюса и Финтеха, разберёт, какие подходы применяются в управлении памятью и как устроен garbage collector в Go. Александр Никитин, старший разработчик Яндекс Маркета, расскажет про трассировку логики с помощью Debug Tree — удобного способа логирования для поиска багов в сложной кодовой базе прямо в продакшене. И это не всё: в программе выступления старшего разработчика бэкенда Yandex Cloud Александра Демиденко и СТО Яндекс Игр Степана Пестерникова.
Помимо докладов участников ждут круглые столы про использование AI-инструментов, highload и нетипичное применение Golang.
Узнать больше об ивенте и зарегистрироваться тут
😁4❤1
📊 Удобный мониторинг контейнеров с ctop
🚀Основные моменты:
- Реальное время отображения метрик для нескольких контейнеров
- Поддержка Docker и runC, с планами на расширение
- Удобный интерфейс с возможностью фильтрации и сортировки
- Легкая настройка и сохранение конфигураций
📌 GitHub: https://github.com/bcicen/ctop
#go
ctop
— это интерфейс для отображения метрик контейнеров в реальном времени. Он поддерживает Docker и runC, предлагая как общий, так и детализированный просмотр контейнеров. Идеально подходит для быстрого анализа состояния ваших контейнеров.🚀Основные моменты:
- Реальное время отображения метрик для нескольких контейнеров
- Поддержка Docker и runC, с планами на расширение
- Удобный интерфейс с возможностью фильтрации и сортировки
- Легкая настройка и сохранение конфигураций
📌 GitHub: https://github.com/bcicen/ctop
#go
GitHub
GitHub - bcicen/ctop: Top-like interface for container metrics
Top-like interface for container metrics. Contribute to bcicen/ctop development by creating an account on GitHub.
👍5❤3🔥3