In offline mode, a timestamp is kept per thread, and the lowest
timestamp of the active threads is used. This was also considering the
non-packet threads, which could lead to the used timestamp being further
behind that needed. This would happen at the start of the program, as
the non-packet threads were set up the same way as the packet threads.
This patch both no longer sets up the timestamp for non-packet threads
as well as not considering non-packet threads during timestamp
retrieval.
Fixes: 6f560144c1b9 ("time: improve offline time handling")
Bug: #7034.
Thread *t = &thread_store.threads[s];
if (!t->in_use)
break;
+ if (t->type != TVT_PPT)
+ continue;
if (t->sys_sec_stamp == 0) {
ready = false;
break;
Thread *t = &thread_store.threads[s];
if (!t->in_use)
break;
+ if (t->type != TVT_PPT)
+ continue;
t->pktts = ts;
t->sys_sec_stamp = (uint32_t)systs.tv_sec;
}
Thread *t = &thread_store.threads[s];
if (t->in_use == 0)
break;
+ /* only packet threads set timestamps based on packets */
+ if (t->type != TVT_PPT)
+ continue;
struct timeval pkttv = { .tv_sec = SCTIME_SECS(t->pktts),
.tv_usec = SCTIME_USECS(t->pktts) };
if (!(timercmp(&pkttv, &nullts, ==))) {