Merged,
Maxim.

On 11/18/2015 18:51, Bill Fischofer wrote:


On Wed, Nov 18, 2015 at 9:47 AM, Stuart Haslam <[email protected] <mailto:[email protected]>> wrote:

    The scheduler validation test occasionally deadlocks due to a missing
    ticketlock unlock.

    Signed-off-by: Stuart Haslam <[email protected]
    <mailto:[email protected]>>


Reviewed-by: Bill Fischofer <[email protected] <mailto:[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] <mailto:[email protected]>
    https://lists.linaro.org/mailman/listinfo/lng-odp




_______________________________________________
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

Reply via email to