Hello,
On šeštadienis 30 Balandis 2011 17:47:39 Modestas Vainius wrote:
> Package: libqtcore4
> Version: 4:4.7.2-3
> Severity: grave
>
> Hello,
>
> QProcess::waitForFinished(timeout) with timeout > 0 (however, big enough)
> seems to return false when the process has not finished yet (leaving
> QProcess::state() in QProcess::Running). However,
> QProcess::waitForFinished(-1) works fine.
>
> This appears to be a regression in 4.7 (4.6.3 works fine). The bug triggers
> quite a few random FTBFSes like [1], [2].
This happens because Qt on kfreebsd is compiled without monotonic clock
support [1] (or at least Qt thinks so). select() is interrupted by SIGCHLD [2]
and then qt_safe_select() code kicks in with its bogus calculation of timeout
during EINT [3] (basically, no monotonic clock -> you're screwed). Such
fragileness is a bug by itself, I don't care about too much at moment as
_POSIX_MONOTONIC_CLOCK is defined [4] so something is wrong with Qt checks.
[1] QElapsedTimer::isMonotonic() returns 0
[2]
55109 minifail RET write 24/0x18
55109 minifail CALL gettimeofday(0x7fffffffe3b0,0)
55109 minifail RET gettimeofday 0
55109 minifail CALL gettimeofday(0x7fffffffe3a0,0)
55109 minifail RET gettimeofday 0
55109 minifail CALL gettimeofday(0x7fffffffe2e0,0)
55109 minifail RET gettimeofday 0
55109 minifail CALL
select(0x14,0x7fffffffe470,0x7fffffffe3f0,0,0x7fffffffe350)
55109 minifail RET select 1
55109 minifail CALL ioctl(0xd,0x4004667f ,0x7fffffffe34c)
55109 minifail RET ioctl 0
55109 minifail CALL close(0xd)
55109 minifail RET close 0
55109 minifail CALL gettimeofday(0x7fffffffe3a0,0)
55109 minifail RET gettimeofday 0
55109 minifail CALL gettimeofday(0x7fffffffe2e0,0)
55109 minifail RET gettimeofday 0
55109 minifail CALL
select(0x14,0x7fffffffe470,0x7fffffffe3f0,0,0x7fffffffe350)
55109 minifail RET select 1
55109 minifail CALL ioctl(0xf,0x4004667f ,0x7fffffffe34c)
55109 minifail RET ioctl 0
55109 minifail CALL close(0xf)
55109 minifail RET close 0
55109 minifail CALL gettimeofday(0x7fffffffe3a0,0)
55109 minifail RET gettimeofday 0
55109 minifail CALL gettimeofday(0x7fffffffe2e0,0)
55109 minifail RET gettimeofday 0
55109 minifail CALL
select(0x14,0x7fffffffe470,0x7fffffffe3f0,0,0x7fffffffe350)
55109 minifail RET select -1 errno 4 Interrupted system call
55109 minifail PSIG SIGCHLD caught handler=0x8017b51a0 mask=0x80000000
code=0x0
55109 minifail CALL write(0x6,0x800a49a0a,0x1)
55109 minifail GIO fd 6 wrote 1 byte
"\0"
55109 minifail RET write 1
55109 minifail CALL sigreturn(0x7fffffffdeb0)
55109 minifail RET sigreturn JUSTRETURN
55109 minifail CALL break(0x645000)
55109 minifail RET break 0
55109 minifail CALL break(0x641000)
55109 minifail RET break 0
55109 minifail CALL write(0x2,0x7fffffffbcb0,0x34)
55109 minifail GIO fd 2 wrote 52 bytes
"exit code=0, exitcode=0, state=2, error=2. Aborting
"
[3]
http://qt.gitorious.org/qt/qt/blobs/4.7/src/corelib/kernel/qcore_unix.cpp#line91
[4] /usr/include/bits/posix_opt.h:156:#define _POSIX_MONOTONIC_CLOCK
200809L
--
Modestas Vainius <modax@debian.org>
Attachment:
signature.asc
Description: This is a digitally signed message part.