У меня есть демон, который я постоянно запускаю и выполняю команду «kill -9» в цикле, чтобы провести стресс-тестирование конкретного варианта использования. Этот демон загружает общую библиотеку, которая, в свою очередь, открывает fd. (открытие / закрытие fd находится в другом коде общей библиотеки, обработанном в ядре). Я заметил, что во время операций очистки в библиотеке ядра он проверяет значение PID из task_structs, (tgid) перед очисткой.
Теперь мое наблюдение: я иногда вижу, что когда демон убит, я не вижу соответствующего значения tgid, вместо этого я вижу странное значение идентификатора процесса, который из 'процесса связывания'. В результате мои операции очистки в коде ядра не вступают в силу для того идентификатора процесса, который был уничтожен командой 'kill -9'
Любой знает, почему значение current-> tgid является значением процесса связывания, а не демона, который был убит. Обратите внимание, что мой демон ссылается на libbinder. Не уверен, что это может иметь значение. Если я удалю ссылку на 'libbinder' и соответствующий код из моего демона, все будет нормально
Любые предложения / идеи, пожалуйста?