Абтин Форузанде нашел ошибку реализация in go для 32-битной платформы Windows. Самая простая программа запускается и сразу вылетает. По результатам расследования ошибки выяснилось, что проблема заключалась в выделении памяти средой выполнения go. В 32-разрядной системе Windows доступно всего 4 ГБ виртуального адресного пространства, 2 верхних из которых зарезервированы для системы, а нижние 2 гигабайта оставлены для процесса.
При запуске программы Go, скомпилированной компилятором 8g, среда выполнения пытается выделить 512 мегабайт виртуального адресного пространства для нужд сборщика мусора.
Проблема в том, что память требуется цельная.
Однако в этой реализации языка библиотека KERNELBASE.DLL загружается в середине адресного пространства, система не может выделить расширенный участок памяти и выходит из строя.
вперед, разработчики уведомлен о проблеме, но ошибка установлена на «Приоритет-Позже» и в версии go 1 она не исправлена.
Решения по исправлению ситуации сводятся к «Перейти на 64-разрядную версию» и «Перейти на Unix» и вопросам вроде «Как мы это пропустилиЭ» Автор исходного сообщения решил перейти с перехода на C. UPD: Как правильно указано atd Даже если вы перейдете на 32битный Linux, проблемы со сборщиком мусора не исчезнут. Это ошибка показывает, что для определенных структур данных сборщик мусора не справляется со своей задачей.
Для долго работающих и ресурсоемких программ это означает постоянные сбои.
Рекомендации разработчиков — это черная магия типа «Распределить долгоживущие и короткоживущие данные по разным структурам» или опять же «Перейти на 64 бита».
Ошибка не будет исправлена в ближайшее время.
Теги: #Go #bug #bug #Windows #linux #32 бит #32 бит хватит всем #программирование #Go
-
Потери В Несогласованной Строке
19 Oct, 24 -
Экономическое Чудо В Сингапуре
19 Oct, 24 -
Twitter Тестирует Новые Функции Поиска
19 Oct, 24 -
Еще Один Алгоритм Расчета Чисел Фибоначчи
19 Oct, 24 -
Стрим: Хорошо Ли Сделан Пиар?
19 Oct, 24 -
Спираль. Приключения В Металле
19 Oct, 24