Ошибка в фоновых рабочих потоках: почему основной процесс может ждать бесконечно? В PR Reth #28313 объясняется: после panic в задаче доказательства результат не отправлялся, а координатор всё ещё удерживал отправитель, поэтому канал не закрывался сам по себе и ожидающий не получал явного сигнала о завершении. Решение преобразует panic каждой задачи в ProofJobError::Panicked и отправляет результат через единый канал ровно один раз, после чего рабочий поток продолжает обслуживать задачи. Обратите внимание на область действия: panic, возникающие до того, как поток получает задачу, или при открытии provider, этим изменением не охватываются. Для узла $ETH или сервиса, зависящего от его результатов, путь обработки ошибки должен быть полным так же, как и путь обработки успешного ответа.