[RTEMS Project] #4435: Thread cancellation may produce ready threads with an active thread timer
RTEMS trac
trac at rtems.org
Thu May 20 15:15:13 UTC 2021
#4435: Thread cancellation may produce ready threads with an active thread timer
------------------------------+-----------------------------
Reporter: Sebastian Huber | Owner: Sebastian Huber
Type: defect | Status: assigned
Priority: normal | Milestone: 6.1
Component: score | Version: 6
Severity: normal | Keywords:
Blocked By: | Blocking:
------------------------------+-----------------------------
The _Thread_Cancel() (in contrast to _Thread_Restart() which uses a
similar code block) may produce ready threads with an active timer in case
the thread to cancel has its thread life protection enabled. The problem
is this code block:
{{{#!c
Priority_Control priority;
_Thread_Add_life_change_request( the_thread );
if ( _Thread_Is_life_change_allowed( previous ) ) {
_Thread_State_release( the_thread, &lock_context );
_Thread_queue_Extract_with_proxy( the_thread );
_Thread_Timer_remove( the_thread );
} else {
_Thread_Clear_state_locked( the_thread, STATES_SUSPENDED );
_Thread_State_release( the_thread, &lock_context );
}
priority = _Thread_Get_priority( executing );
_Thread_Raise_real_priority( the_thread, priority );
_Thread_Remove_life_change_request( the_thread );
}}}
The life change request should only be added/removed if a life change is
allowed (see _Thread_Restart()).
--
Ticket URL: <http://devel.rtems.org/ticket/4435>
RTEMS Project <http://www.rtems.org/>
RTEMS Project
More information about the bugs
mailing list