Skip to content

CFE_ES_ScanAppTable() possible race conditions #295

@skliper

Description

@skliper

The CFE_ES_ScanAppTable() is called from the ES message processing thread, but it does not lock the global ES data structure when reading/writing from the global data.

ES software bus command messages are safe because this function is called by the same thread that is processing those messages, therefore concurrency is not possible here.

But other functions, like CFE_ES_DeleteApp() and CFE_ES_ReloadApp() are part of the public API and these also update the same fields within the app state data structure that CFE_ES_ScanAppTable() is reading. CFE_ES_RunLoop() can also modify fields within this structure and this is called by pretty much every app in the system.

This issue was noted while reviewing the fix for a similar issue in #279.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions