LINUX.ORG.RU

General protection fault при вызове emerge

 , gpf


0

2

После обновления GCC до версии 10.1 и пересборки им питона (тоже обновление прилетело) я стал периодически ловить GPF при вызове emerge.

Да, процессор с памятью я разгонял, но не думаю что дело конкретно в этом - memtest86 после шестичасового прогона никаких ошибок не выдал, а стабильность разгона ЦП я давно проверил во всяких линпаках. К тому же, раньше-то такого не возникало.

Подскажите, в какую сторону копать, чтобы обнаружить причину этого бага.

★★★★★

memtest86 после шестичасового прогона никаких ошибок

это ни о чём не говорит, мемтест - говно

anonymous
()
Ответ на: комментарий от anonymous

это ни о чём не говорит, мемтест - говно

С древним memtest86+ не путаешь? Есть еще проприентарный (freeware) в виде EFI приложения.

Meyer ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Оно, кстати, не всегда падает. Просто трейс выкидывает в консоль. И до пересборки свежим GCC такого не было.

Meyer ★★★★★
() автор топика

Может быть gcc неподдерживаемые инструкции генерит - aes, avx. Какой проц, «-march» какой?

anonymous
()
Ответ на: комментарий от Meyer

Оно, кстати, не всегда падает

а ты думал всё будет просто

И до пересборки свежим GCC такого не было

совпадение

anonymous
()
Ответ на: комментарий от anonymous

Какой проц, «-march» какой?

Ryzen 7 2700, -march=znver1.

Meyer ★★★★★
() автор топика
Ответ на: комментарий от anonymous

И снова нечаянно скастовали world :)

anonymous
()
Ответ на: комментарий от anonymous

что ты хотел этим сказать?

Что gpf можно вызвать неправильной иструкцией.

Хотя тут, скорее, проблема в смене (версии) тулчейна.

anonymous
()
Ответ на: комментарий от anonymous

а баг компилятора

Или проца, или обоих, или еще микрокода, зашитого в биос или загружаемого.

gcc-10.1 в тестовой «~amd64».

anonymous
()
Ответ на: комментарий от anonymous

а в арче он уже месяц. если бы был такой баг, давно бы вонь подняли

максимум локальная поломка в генте

anonymous
()

Сделай полное обновление тулчейна, строго в такой же последовательности

# emerge -1 sys-devel/binutils
# emerge -1 sys-libs/glibc
# emerge -1 dev-libs/gmp dev-libs/mpc dev-libs/isl dev-libs/mpfr 
# emerge -1 sys-devel/gcc

Потом можешь еще сделать констрольный выстрел emerge @system

anonymous
()
Ответ на: комментарий от anonymous

юзеры сами компиляют код, у многих из них zen

Прям все пакеты компиляют: и системные, и несистемные? Или только то, что только один раз в жизни запускают?

anonymous
()
Ответ на: комментарий от anonymous

всё, ведь это одни из самых распространённых пакетов. кроме того свежий gcc есть не только в арче

anonymous
()
Ответ на: комментарий от anonymous

иногда нужно

Ты уж определись: «все, всё и всегда» или «иногда, когда нужно один раз в жизни»

anonymous
()
Ответ на: комментарий от anonymous

ты предполагаешь, что исключительно gcc/python/binutils/glibc сломаны, когда весь остальной софт работает? маловероятно

anonymous
()
Ответ на: комментарий от anonymous

Ах да. Покажи /etc/makepkg.conf . Посмотрим все вместе какого размера у тебя march

anonymous
()
Ответ на: комментарий от anonymous

значит теперь пробуй бинарный дистрибутив

Загрузил убунту с флешки, позапускал разные питоновские скрипты. Все ок.

Meyer ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Так уже. Вчера скачал интеловский линпак, погонял минут десять - все ок. Видимо, с оптимизацией под Zen в новом GCC что-то накосячили.

Meyer ★★★★★
() автор топика
Последнее исправление: Meyer (всего исправлений: 1)
Ответ на: комментарий от Meyer

Сравниваю ключи для -march=native и вычисленного -march следющим скриптом

#!/bin/bash

gcc_help_target() {
	gcc -march=${1} -Q --help=target
}

parse_arch() {
	while read -r l; do
		[[ "$l" =~ ^-march= ]] && echo ${l#-march=} && return 0
	done < <(gcc_help_target native)
	return 1
}

diff_opts() {
	while true; do
		read -r l1 <&3 || break
		read -r l2 <&4 || break
		[[ "$l1" != "$l2" ]] && printf '%s\n%s\n\n' "$l1" "$l2"
	done 3< <(gcc_help_target $1) 4< <(gcc_help_target $2)
}

arch=$(parse_arch)
printf '*** -march=%s ***\n' $arch
diff_opts $arch native
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.