This is the mail archive of the mailing list for the eCos project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: timed condition variable patch

Wade Jensen wrote:

There is a very rare condition in Cyg_Condition_Variable::wait_inner(
Cyg_Mutex *mx, cyg_tick_count timeout ) that causes the "Unnecessary call to
unlock_inner()" assertion to fail.
This looks familiar.

Nick, I seem to recall I discussed this with you IRL in the Red Hat office about this, or something similar - i.e. what happens about timers that trigger "now" or in the past, and I think it was also in the context of select(). Do you remember what the outcome was? I can't find any kernel change resulting certainly, but then I can't remember the problem :-).

Here is a patch for this problem.  It is based off of the 2.0 snapshot
I'd probably prefer to include the if conditional in the " if( self->get_wake_reason() == Cyg_Thread::NONE )" test further up. But I can change that later, depending on what Nick says.

--[ "You can complain because roses have thorns, or you ]--
--[ can rejoice because thorns have roses." -Lincoln ]-- Opinions==mine

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]