#4544 closed defect (fixed)

The last processor must not be removed if it is owned by a helping scheduler

Reported by: Sebastian Huber Owned by: Sebastian Huber
Priority: normal Milestone: 6.1
Component: score Version: 5
Severity: normal Keywords: SMP, qualification
Cc: Blocked By:
Blocking:

Description (last modified by Sebastian Huber)

The following error condition is currently not checked by rtems_scheduler_remove_processor(): While an attempt is made to remove a processor from a scheduler, while the processor is the only processor owned by the scheduler, if a thread exists which uses the scheduler as a helping scheduler, then shall not be removed.

The reason is that ask for help requests and withdraw node requests are processed asynchronously in any order. An ask for help request carried out on a scheduler without a processor is undefined behaviour.

Change History (3)

comment:1 Changed on 11/10/21 at 08:21:56 by Sebastian Huber

Description: modified (diff)
Summary: Incorrect state change in processor removal of SMP schedulerThe last processor must not be removed if it is owned by a helping scheduler

comment:2 Changed on 11/23/21 at 13:36:30 by Sebastian Huber <sebastian.huber@…>

In c69a70a/rtems:

rtems: Fix rtems_scheduler_remove_processor()

Return an error status for the following error condition in
rtems_scheduler_remove_processor():

While an attempt is made to remove a processor from a scheduler, while
the processor is the only processor owned by the scheduler, if a thread
exists which uses the scheduler as a helping scheduler, then the
processor shall not be removed.

The reason is that ask for help requests and withdraw node requests are
processed asynchronously in any order. An ask for help request carried
out on a scheduler without a processor is undefined behaviour.

Update error status description.

Update #4544.

comment:3 Changed on 11/23/21 at 13:49:07 by Sebastian Huber <sebastian.huber@…>

Resolution: fixed
Status: assignedclosed

In 513b90d/rtems-docs:

c-user: rtems_scheduler_remove_processor()

Update error status description.

Close #4544.

Note: See TracTickets for help on using tickets.