DFA (Dependent Failure Analysis)#
Persistency DFA
|
status: valid
security: NO
safety: ASIL_B
|
||||
The DFA applies the dependent failure initiators of gd_guidl__dfa_failure_initiators to the static view of Persistency KVS Feature Arc... (doc__persistency_kvs_architecture).
Dependent Failure Initiators#
Communication between the two elements#
Receiving function is affected by information that is false, lost, sent multiple times, or in the wrong order etc. from the sender.
ID |
Violation cause communication between elements |
Applicability |
Rationale |
|---|---|---|---|
CO_01_01 |
Information passed via argument through a function call, or via writing/reading a variable being global to the two software functions (data flow) |
no |
Only function arguments and return values within the calling thread; no shared globals. Corruption: see CO_01_02. |
CO_01_02 |
Data or message corruption / repetition / loss / delay / masquerading or incorrect addressing of information |
yes |
Corruption of persisted data (feat_saf_dfa__persistency__data_corruption) |
CO_01_03 |
Insertion / sequence of information |
no |
Data and hash files are written and read as a whole; see CO_01_02. |
CO_01_04 |
Corruption of information, inconsistent data |
yes |
Covered by Corruption of persisted data (feat_saf_dfa__persistency__data_corruption). |
CO_01_05 |
Asymmetric information sent from a sender to multiple receivers, so that not all defined receivers have the same information |
no |
No communication with multiple receivers. |
CO_01_06 |
Information from a sender received by only a subset of the receivers |
no |
Same as CO_01_05. |
CO_01_07 |
Blocking access to a communication channel |
no |
No communication channel used; blocking of the caller: see UI_01_06. |
Unintended impact#
Unintended impacts to function due to various failures.
ID |
Violation cause unintended impact |
Applicability |
Rationale |
|---|---|---|---|
UI_01_01 |
Memory miss-allocation and leaks |
no |
Allocation: see UI_01_11. Leaks are addressed by Rust ownership, C++ RAII and component verification. |
UI_01_02 |
Read/Write access to memory allocated to another software element |
no |
Only own instance memory and caller memory is accessed. Access by others is prevented by OS process isolation (platform DFA). |
UI_01_03 |
Stack/Buffer under-/overflow |
no |
Rust bounds checking, C++ standard containers. Overflows by others: platform DFA. |
UI_01_04 |
Deadlocks |
no |
One mutex per instance (Rust additionally one for the instance pool in the builder); never more than one lock is held at a time. Rust waits for the lock; C++ does not wait and returns MutexLockFailed. |
UI_01_05 |
Livelocks |
no |
Same as UI_01_04; no retry loops. |
UI_01_06 |
Blocking of execution |
yes |
Persistency execution blocking (feat_saf_dfa__persistency__execution_blocking) |
UI_01_07 |
Incorrect allocation of execution time |
no |
No own execution context; see UI_01_06. |
UI_01_08 |
Incorrect execution flow |
no |
Execution flow defined by the dynamic views; corruption: see UI_01_02. |
UI_01_09 |
Incorrect synchronization between software elements |
yes |
Access to a KVS instance fr... (feat_saf_dfa__persistency__multi_process) |
UI_01_10 |
CPU time depletion |
no |
No own execution context; see UI_01_06. |
UI_01_11 |
Memory depletion |
yes |
Memory depletion by the kvs (feat_saf_dfa__persistency__memory_depletion) |
UI_01_12 |
Other HW unavailability |
no |
Storage medium only, via file system; unavailability is reported and handled by aou_req__persistency__error_handling. |
DFA#
Persistency execution blocking
|
status: valid
|
||||
Persistency runs in the calling context; blocking (by the application or OS scheduling) leads to no or a too late response, handled by Persistency Error handling (aou_req__persistency__error_handling). |
|||||
Corruption of persisted data
|
status: valid
|
||||
Causes: storage medium, interrupted write, other software writing the files. Detected by the hash check (feat_req__persistency__integrity_check), writes are reset resistant (feat_req__persistency__reset_resistant), access by others is prevented by feat_req__persistency__access_control. Reported errors: Persistency Error handling (aou_req__persistency__error_handling). |
|||||
Shared KVS instance within a process
|
status: valid
|
||||
Within a process, the same instance ID gives access to the same data. Mitigated by Separate KVS Instances per ... (aou_req__persistency__instance_separation). |
|||||
Access to a KVS instance from multiple processes
|
status: valid
|
||||
Synchronization covers threads of one process only. Access from multiple processes is prevented by feat_req__persistency__multiple_app. Note: Not yet implemented (only in-process mutexes; component level). |
|||||
Memory depletion by the kvs
|
status: valid
|
||||
Refined in Memory depletion by the kvs (comp_saf_dfa__kvs__memory_depletion). |
|||||
Deadlock by completion callback
|
status: valid
|
||||
Note: The implementations still allocate at runtime (component level). |
|||||