Details
Description
When a select is interrupted, we re-calculate the timeout and restart the select. It seems that the recalculation is not correct, so that the timeout value we passed to select causes EINVAL error.
Strace log:
select(8, [3 7], [], [],
) = ? ERESTARTNOHAND (To be restarted)
— SIGIO (I/O possible) @ 0 (0) —
rt_sigreturn(0x1d) = -1 EINTR (Interrupted system call)
clock_gettime(CLOCK_MONOTONIC,
) = 0
select(8, [3 7], [], [],
) = -1 EINVAL (Invalid argument)
Problem seems to be in corelib/kernal/qcore_unix.cpp, time_update function.
This did not happen against qt-4.5.3