Звучит ужасно, но это чрезвычайная ситуация, когда это происходит. Итак, я предлагаю просмотреть все дескрипторы в вашем рабочем наборе опросов и попытаться выполнить операцию с этим дескриптором, которая вызовет эту ошибку, если дескриптор фальшивый. Например, вы можете создать новый временный набор опросов и попробовать неблокирующую операцию опроса с нулевым тайм-аутом и посмотреть, сможете ли вы получить ошибку.
Если у вас в наборе опросов больше, чем, скажем, дюжина дескрипторов, вы можете рассмотреть бинарный поиск вместо одноразового подхода. Вы можете поместить половину своих дескрипторов во временный набор опросов, а затем выполнить операцию. Если это не удается, вы знаете, что у вас есть фиктивный дескриптор в наборе, который вы пробовали; разделите на две части и попробуйте снова; если он не потерпит неудачу, вы можете предположить, что фиктивный дескриптор находится в другом наборе, и вы можете либо подтвердить, что другая половина не удалась, либо предположить, что это произойдет, и разделить остаток на две части и повторить попытку. Продолжайте, пока не изолируете один неисправный дескриптор. Очевидно, что если у вас есть несколько фиктивных дескрипторов, а не один, вам, возможно, придется повторить процесс несколько раз.
Имея один дескриптор, вы можете решить, что и как с ним делать. И если / когда проблема повторяется, вы можете повторить процесс изоляции. Ясно, что вы бы не попробовали это, если не обнаружили проблему в первую очередь. Но когда дела идут плохо, вам нужно изолировать проблему, и это должно (должно) достичь этого.