
Как устранить ошибку Segmentation fault при майнинге Ethereum
При майнинге на алгоритме Ethash в операционной системе Linux иногда появляется ошибка Segmentation fault (core dumped, или Segfault, ошибка сегментирования памяти):
В операционной системе Windows аналогичная ошибка проявляется сообщением “программа выполнила недопустимую операцию и будет закрыта” (This program has performed an illegal operation…).
Эта проблема возникает при попытке майнера (или другой программы) получить доступ или записать данные в сегмент памяти без наличия на это достаточных прав.
Она появляется в разных майнерах и обычно связана с некорректной работой подсистемы памяти, вызванной разными причинами, в том числе “случайно возникающими багами” (Heisenbug). В этом случае ошибка может исчезнуть сама по себе в случае изменения набора работающих программ, при запуске графического окружения на сервере (включении lightdm в системе xubuntu, работающей в консольном режиме) и т.д.
Возникновение fatal error в майнере иногда происходит из-за слишком агрессивного разгона, который особенно сильно проявляется при майнинге на пределе возможностей видеокарты, например, при полном заполнении ее физической памяти. При этом майнер с включенным watchdog пытается перезапустить процесс:
Другие видеокарты в майнере после появления ошибки сегментации также могут начинать давать ошибки:
На малых эпохах DAG проблема сегфолт у проблемной видеокарты может не появляться, но при заполнении всей ее видеопамяти, особенно если она некачественная, и работает на пределе возможностей, может возникать уже через несколько минут после запуска майнера.
Что делать при появлении ошибки Segmentation fault?
Для устранения проблем, связанных с появлением ошибки segmentation fault, нужно снизить разгон по памяти и, возможно, немного увеличить напряжение ядра видеокарты.
Кроме того, может помочь понижение интенсивности майнинга для конкретной видеокарты. В Phoenix miner понизить интенсивность можно, используя в командной строке параметр:
-mi
В случае, если даже значительное понижение разгона и увеличение напряжения питания не помогает, нужно перейти на другой майнер, менее агрессивно использующий ресурсы GPU. Если замена майнера не помогает, то можно попробовать другую версию драйверов.
Если майнинг запускается в режиме zombie mode, когда дополнительно задействуется оперативная память компьютера, нужно убедиться, что ее хватает для всех процессов и майнеров.
Иногда стоит пожертвовать увеличенным хешрейтом при майнинге на процессоре на алгоритме RandomX (SFX и других) и отключить опцию резервирования оперативной памяти (большие страницы), а также randomx-1gb-pages в Linux.
Кроме того, на больших DAG в Phoenix miner некоторые видеокарты не работают с установленным по умолчанию значением daglim. В этом случае помогает уменьшение резерва для проблемной карты.
Например, можно установить 4076 Мб вместо 4078 и т.д. В других майнерах нужно использовать такую же тактику, например, для teamredminer это подгонка численного аргумента у параметра eth_4g_max_alloc.
Пример скрипта для майнинга на Ethash с DAG, близким к пределу доступной видеопамяти в Phoenix miner (в данном случае проблемы у четвертой видеокарты на 4 Гб):
sudo ./PhoenixMiner -pool eu1.ethermine.org:4444 -pool2 us1.ethermine.org:4444 -wal адрес.worker -eres 0 -r 1 -powlim 0 -proto 1 -cdm 1 -gwtime 100 -tt 56 -tstop 65 -ttli 62 -tstart 55 -fcm 2 -fanmin 55,40,40,40,40 -clkernel 1,1,1,1,1 -cdmport 3333 -acm -log 0 -gser 1 -lidag 2 -amd -rxboost 1 -stales 0 -daglim 4076,4076,4076,4064,4076
Проблема Windows, связанная с выполнением недопустимой операции и последующим закрытием программы-майнера решается аналогичным образом.

