[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