Снимаю данные с ком порта, как только накопилось нужное количество, высылается сигнал, что типа "все, хватит":
if (QVector::size() == need)
emit finished();
Этот сигнал соединен со слотом, который выключает устройство и сохраняет данные в файл. Пока отработает слот проходит какое-то время и обычно сохраняет на 100мс больше чем надо. Но, просматривая снятые файлы, случайно обнаружил, что в одном файле не хватает 100мс (одного пакета данных или одного элемента того QVector).
Вот просто интересно, как это могло произойти? Проверка размера QVector - единственное место, где этот сигнал мог быть выслан и это единственное условие, т.е. QVector::size() все таки вернул need и сигнал выслан был. Просмотрел кучу файлов с парой сотен часов съема - только в одном файле такая штука.
Или другой вариант: сохраняю в файл через qCompress, может тут что-то случилось...
Сейчас весь съем данных идет с параллельно работающим PortMon, но сомневаюсь, что это повторится. Рабочая версия программы не менялась. Логов и всего остального - разумеется нет.
Я, конечно, сомневаюсь что поймал страшный баг Windows/Qt/zlib, но и у себя проблем не вижу. Код приводить не вижу смысла, его там много и местами "для служебного пользования", логика тупа: если QVector::size() возвратил need, то послать сигнал слоту, который сохранит данные.