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 <mo...@debian.org>
signature.asc
Description: This is a digitally signed message part.