#1458 closed defect (fixed)

removing an ASR with rtems_signal_catch() effectively changes task mode to RTEMS_ASR

Reported by: strauman Owned by: Joel Sherrill
Priority: normal Milestone: 4.10
Component: score Version: 4.10
Severity: normal Keywords:
Cc: Blocked By:
Blocking:

Description

Assume a task with mode-flag RTEMS_NO_ASR
first installs an ASR and later uninstalls it
with

rtems_signal_catch(NULL, RTEMS_DEFAULT_MODES);

this results in

_ASR_Initialize()

being evaluated/executed on the executing task's Signal member
of API_Extensions[ THREAD_API_RTEMS ].

However, _ASR_Initialize() sets 'asr->is_enabled' even
if the executing task originally had the RTEMS_NO_ASR
mode flag set.

Thus,

rtems_signal_catch( some_asr, SOME_MODES );
rtems_signal_catch( 0, SOME_MODES);

effectively does

rtems_task_mode( RTEMS_ASR, RTEMS_ASR_MASK, &old_mode );

which is most likely a bug.

Attachments (1)

pr1458.diff (693 bytes) - added by Joel Sherrill on Mar 11, 2010 at 2:39:14 PM.
Patch for 4.10

Download all attachments as: .zip

Change History (2)

Changed on Mar 11, 2010 at 2:39:14 PM by Joel Sherrill

Attachment: pr1458.diff added

Patch for 4.10

comment:1 Changed on Mar 11, 2010 at 2:40:24 PM by Joel Sherrill

Resolution: fixed
Status: newclosed

Patch applied to head. Thanks for spotting this.

Note: See TracTickets for help on using tickets.