Мы подозреваем, что это классическая гонка потерянного пробуждения в адаптере Linux: предикат/флаг «приостановлено» обновляется в одном контексте синхронизации, но ожидание/сигнал с переменной условием выполняется под другим (или без него) мьютексом, поэтому не существует единого цепочка «событие-прежде» между:
- установкой/очисткой флага приостановки и
- входом/выходом из cond_wait().
Вопрос (поскольку это симуляция, а не реальный поток продукта):
Каков рекомендуемый способ надежно воспроизвести эту гонку с помощью тестового оборудования? В частности, какую загрузку/тайминг/чередование вы предлагаете использовать в окне, в котором флаг обновляется, но ожидание еще не установлено, чтобы мы могли вызвать сбой «постоянной приостановки»?
Подробнее здесь: https://stackoverflow.com/questions/798 ... ue-to-unsy
Мобильная версия