Skip to content

[BUG] Incorrect argument to portRESET_READY_PRIORITY macro in vTaskPriorityDisinheritAfterTimeout() #1337

@wirelinker

Description

@wirelinker

Describe the bug
I found in vTaskPriorityDisinheritAfterTimeout(), tasks.c Line 6909,
after a uxListRemove(), there is a portRESET_READY_PRIORITY macro.

The argument be passed to the macro is pxTCB->uxPriority, which
should be uxPriorityUsedOnEntry.

Because the pxTCB was removed from pxReadyTasksLists[ uxPriorityUsedOnEntry ].
Then the portRESET_READY_PRIORITY() will be called if the pxReadyTasksLists[uxPriorityUsedOnEntry] became empty after the remove.
And pxTCB->uxPriority had already been changed to another higher/lower task priority.
That is : uxPriorityUsedOnEntry != pxTCB->uxPriority.

Thank you.

Target
Ports with optimized task selection implementation.

Host

  • Host OS: Ubuntu
  • Version: 24.04

To Reproduce
I have no idea how to reproduce. It only effects customized scheduler ports. I am using pi-pico
as target which is not the case.

Expected behavior
Should reset ready priority with the priority of the actually empty ready list.

Additional context

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions