[Interest] tryLock for QSystemSemaphore

Thiago Macieira thiago.macieira at intel.com
Sat Oct 21 19:16:21 CEST 2017


On Saturday, 21 October 2017 10:01:26 PDT Konstantin Shegunov wrote:
> Assuming my test is failing, which would be the whole reason of writing
> tests to check the implementation, right, I would likely end up a situation
> where a sibling process waiting for a message from the root process, while
> at the same time the root process waits on `acquire` for the sibling
> process to signal the semaphore. Ultimately, I'd just end up deadlocking
> without a means to tell the root process to run the MPI abort routines
> (i.e. stop the whole MPI thing) because the root process is simply waiting
> on the system semaphore. That's what I mean by it "doesn't free the thread"
> - I'd end up with a deadlocked test program.

Ah, I see your issue.

In this case, I'd just have the test harness kill the processes that 
deadlocked and report the failure.

The Qt Continuous Integration system has a timeout of 15 minutes for any test, 
except tst_QNetworkReply (that one is allowed to run for longer). That way, we 
don't depend on any internal state being consistent. Like you said, in the 
case of a failing test, quite by definition the internal state of the 
application is not what we expected it to be.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center




More information about the Interest mailing list