thiago added a comment.
In D14302#297159 <https://phabricator.kde.org/D14302#297159>, @jtamate wrote: > (gdb) disass > Dump of assembler code for function _ZN9QLockFile7tryLockEi: > 0x00007f54be8bc752 <+2>: mov $0xffffffff,%eax > ... > 0x00007f54be8bc76d <+29>: test %esi,%esi > ... > 0x00007f54be8bc772 <+34>: cmovs %eax,%esi > ... > 0x00007f54be8bc78c <+60>: movslq %esi,%rsi > 0x00007f54be8bc78f <+63>: callq 0x7f54be962150 <QDeadlineTimer::QDeadlineTimer(long long, Qt::TimerType)> > This is entirely correct: in +29 it checks parameter (in %esi) and in +34 if it has the sign bit set (read: is negative), moves -1 to it. Then it does a sign extension from 32- to 64-bit in +60, before placing the call. qMax is working properly. > Dump of assembler code for function _ZN16KDEInitInterface20ensureKdeinitRunningEv: > ... > 0x00007f54c0a23ae1 <+497>: xor %esi,%esi > 0x00007f54c0a23ae3 <+499>: mov %r12,%rdi > 0x00007f54c0a23ae6 <+502>: callq 0x7f54c0a1e960 <_ZN9QLockFile7tryLockEi@plt> Also correct: this passed a zero as the parameter to tryLock(). Now here's the interesting thing: > 0x00007f54c0a23aeb <+507>: test %al,%al > 0x00007f54c0a23aed <+509>: jne 0x7f54c0a23b8d <_ZN16KDEInitInterface20ensureKdeinitRunningEv+669> > 0x00007f54c0a23af3 <+515>: mov %r12,%rdi > 0x00007f54c0a23af6 <+518>: callq 0x7f54c0a1e9c0 <_ZN9QLockFile4lockEv@plt> > => 0x00007f54c0a23afb <+523>: mov %rbx,%rdi Note where the => is pointing to. It's not to the return from tryLock(), but to the return to lock(). We've been looking at the wrong line. That also means the patch doesn't make sense, because it's changing the line that is already working. REPOSITORY R271 KDBusAddons REVISION DETAIL https://phabricator.kde.org/D14302 To: jtamate, dfaure, #frameworks, thiago Cc: lvsouza, kde-frameworks-devel, michaelh, ngraham, bruns