Boost logo

Boost :

Subject: Re: [boost] [thread]Forever sleeping
From: Vicente J. Botet Escriba (vicente.botet_at_[hidden])
Date: 2017-03-01 07:11:21


Le 28/02/2017 à 21:50, Vicente J. Botet Escriba via Boost a écrit :
> Le 28/02/2017 à 10:20, Niklas Angare via Boost a écrit :
>> "Vicente J. Botet Escriba wrote:
>>> Le 24/02/2017 à 13:46, Vicente J. Botet Escriba a écrit :
>>>> Le 22/02/2017 à 23:39, Niklas Angare via Boost a écrit :
>>>>> Recent runs of my regression test runner NA-QNX660-x86 leave a lot
>>>>> of Boost.Thread test executables stuck in nanosleep, waiting for a
>>>>> condition variable, or both.
>> ...
>>>>> https://github.com/boostorg/thread/commit/544eda51bdf0c62b2f29dea6fe1cf935ad62580e
>>>>>
>>>>>
>>>> I'll rollback it and analyze more deeply the change.
>>>>
>>> Done.
>>>
>>> https://github.com/boostorg/thread/commit/9bbf9bed80836282263ec0bdea0adf5c1fa3621b
>>>
>>>
>>> Please, let me know if it works again.
>>
>> The latest run failed with similar symptoms. I noticed you made
>> another change so I decided to run the Boost.Thread tests manually.
>>
>> Commit c7348b29 left seven stuck test processes and b2 reported
>> "failed updating 85 targets".
>> Commit 9bbf9bed did not leave any stuck test processes and b2
>> reported "failed updating 16 targets".
>>
>> The following test processes got stuck:
>> test_2741
>> test_2741_lib
>> ex_tennis
>> ex_tennis_lib
>> ex_xtime
>> ex_xtime_lib
>> test_thread_lib
>>
>> It looks like these test are failing for other test runners as well
>> but I don't know if it's for the same reason.
>>
>> I may not be able to help or tend to the runners for the next two weeks.
> I'm taking a look just now.
>
> I've an hint.
> https://github.com/boostorg/thread/commit/c7348b29cf8bfa1272645d04784419d37e1e7db5
>
>
> Must be more restrictive.
>
> // old behavior was fine for monotonic
> - return do_wait_until(lock,
> boost::detail::timespec_plus(timeout, boost::detail::timespec_now()));
> + return do_wait_until(lock,
> boost::detail::timespec_plus(timeout,
> boost::detail::timespec_now_realtime()));
>
>
> -#ifdef CLOCK_MONOTONIC
> +#if defined CLOCK_MONOTONIC && defined BOOST_THREAD_USEFIXES_TIMESPEC
> if ( ::clock_gettime( CLOCK_MONOTONIC, &ts ) )
>
> I'll commit these changes soon.
>
Done. I would say this fix the regression.

Vicente


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk