[cmake-developers] [CMake 0012904]: Parallel ctest starts too many tests when a test depends on another test that uses the RUN_SERIAL property

Mantis Bug Tracker mantis at public.kitware.com
Fri Jan 20 11:54:39 EST 2012


The following issue has been SUBMITTED. 
====================================================================== 
http://www.cmake.org/Bug/view.php?id=12904 
====================================================================== 
Reported By:                Casey B Goodlett
Assigned To:                
====================================================================== 
Project:                    CMake
Issue ID:                   12904
Category:                   CTest
Reproducibility:            always
Severity:                   major
Priority:                   normal
Status:                     new
====================================================================== 
Date Submitted:             2012-01-20 11:54 EST
Last Modified:              2012-01-20 11:54 EST
====================================================================== 
Summary:                    Parallel ctest starts too many tests when a test
depends on another test that uses the RUN_SERIAL property
Description: 
Parallel ctest can start too many tests (unbounded number) when a test that can
be run in parallel depends on a test that uses the RUN_SERIAL property.  This
can cause an unbounded number of tests to spawn which will hang the test machine
if not caught right away.

Here is the case I debugged

Parallel level for ctest = 4 
Current # tests running = 1

Try to start a new test A which should take only 1 processor so it should be
able to start in parallel with the current 1 processors test.
However when trying to start test A the dependencies are checked; instead of
starting A the dependent test B is started which takes 4 processors becuse it is
set to RUN_SERIAL=true.

The check on whether the test can be started only checks the number of
processors required by test A (cmCTestMultiProcessHandler.cxx:265) so test B is
allowed to start in place of test A.

As a result test B is started and now there are 5 processors in use even though
the parallel level is supposed to be 4.  This causes unsigned overflow when
looking for the number of tests to run in the next step (
cmCTestMultiProcessHandler::StartNextTests() first line)

Steps to Reproduce: 
I do not have a simple CMakeLists to reproduce the problem.  I can only
reproduce this in cmake 2.8.4 before the switch from sort -> stable_sort as the
tests get reordered which prevents this bug from being triggered.  Based on code
inspection, it looks like this bug still exists in master although I no longer
have a reproducing case.
====================================================================== 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2012-01-20 11:54 Casey B GoodlettNew Issue                                    
======================================================================




More information about the cmake-developers mailing list