On Wed, Nov 18, 2015 at 9:47 AM, Stuart Haslam <[email protected]> wrote:
> The scheduler validation test occasionally deadlocks due to a missing > ticketlock unlock. > > Signed-off-by: Stuart Haslam <[email protected]> > Reviewed-by: Bill Fischofer <[email protected]> > --- > test/validation/scheduler/scheduler.c | 15 ++++++++++----- > 1 file changed, 10 insertions(+), 5 deletions(-) > > diff --git a/test/validation/scheduler/scheduler.c > b/test/validation/scheduler/scheduler.c > index f8effb3..2bd180c 100644 > --- a/test/validation/scheduler/scheduler.c > +++ b/test/validation/scheduler/scheduler.c > @@ -593,6 +593,7 @@ static void *schedule_common_(void *arg) > queue_context *qctx; > buf_contents *bctx, *bctx_cpy; > odp_pool_t pool; > + int locked; > > globals = args->globals; > sync = args->sync; > @@ -608,7 +609,6 @@ static void *schedule_common_(void *arg) > odp_buffer_t buf, buf_cpy; > odp_queue_t from = ODP_QUEUE_INVALID; > int num = 0; > - int locked; > > odp_ticketlock_lock(&globals->lock); > if (globals->buf_count == 0) { > @@ -747,9 +747,12 @@ static void *schedule_common_(void *arg) > if (args->num_workers > 1) > odp_barrier_wait(&globals->barrier); > > - if (sync == ODP_SCHED_SYNC_ORDERED && > - odp_ticketlock_trylock(&globals->lock) && > - globals->buf_count_cpy > 0) { > + if (sync == ODP_SCHED_SYNC_ORDERED) > + locked = odp_ticketlock_trylock(&globals->lock); > + else > + locked = 0; > + > + if (locked && globals->buf_count_cpy > 0) { > odp_event_t ev; > odp_queue_t pq; > uint64_t seq; > @@ -787,9 +790,11 @@ static void *schedule_common_(void *arg) > } > CU_ASSERT(bcount == buf_count); > globals->buf_count_cpy = 0; > - odp_ticketlock_unlock(&globals->lock); > } > > + if (locked) > + odp_ticketlock_unlock(&globals->lock); > + > return NULL; > } > > -- > 2.1.1 > > _______________________________________________ > lng-odp mailing list > [email protected] > https://lists.linaro.org/mailman/listinfo/lng-odp >
_______________________________________________ lng-odp mailing list [email protected] https://lists.linaro.org/mailman/listinfo/lng-odp
