#4546 closed defect (fixed)

A thread restart does not update the priority of related threads

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

Description

Consider the following scenario. Let a high priority task H wait on a priority inheritance mutex M owned by a low priority task L. Restart task H. This should remove the priority inherited by H from L. This is currently not the case.

Change History (6)

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

In cd791039/rtems:

score: Remove thread timer earlier

The earlier we remove the thread timer the less likely is a superfluous
thread timeout processing.

Update #4546.

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

In 50aef135/rtems:

score: Add _Thread_MP_Extract_proxy()

Remove _Thread_queue_Extract_with_proxy() and move the proxy extraction
to _Thread_MP_Extract_proxy(). Move similar code blocks of the previous
caller of _Thread_queue_Extract_with_proxy() to helper functions.

Update #4546.

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

In e429e97/rtems:

score: Simplify thread wait state handling

Remove the THREAD_WAIT_STATE_READY_AGAIN and simply use the initial value to
indicate that a thread does not wait on something. Rename
THREAD_WAIT_FLAGS_INITIAL to THREAD_WAIT_STATE_READY. This change is necessary
so that _Thread_Continue() can be called for threads which never waited on
something (for example dormant threads).

Update #4546.

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

In 2e56aab/rtems:

score: Move _Thread_queue_Extract()

Move _Thread_queue_Extract() since this function is not used by the core
services (threads, semaphores, mutexes, message queues).

Update #4546.

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

In 3b6e263a/rtems:

score: _Thread_queue_Surrender_no_priority()

Simplify _Thread_queue_Surrender_no_priority() and use
_Thread_queue_Resume().

Update #4546.

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

Resolution: fixed
Status: assignedclosed

In 5468464/rtems:

score: Properly continue the thread during restart

The _Thread_queue_Extract() does not deal with potential priority
updates and the SMP locking protocol handling. Use
_Thread_queue_Continue(). For the POSIX signals processing this is
currently probably unnecessary, however, the use case is similar to the
restart so use the same appoach.

Close #4546.

Note: See TracTickets for help on using tickets.