KVS DFA (Dependent Failure Analysis)#
KVS DFA
|
status: valid
security: NO
safety: ASIL_B
|
||||
Dependent failures at the component interfaces are analysed in Persistency DFA (doc__persistency_dfa). This DFA applies the dependent failure initiators of gd_guidl__dfa_failure_initiators to the mechanisms specified in KVS Requirements (doc__kvs_requirements). The scope is defined in Persistency Safety Plan (doc__persistency_safety_plan) (tailoring).
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 |
Function arguments only; no global data (Multi-Instance (comp_req__kvs__multi_instance)). |
CO_01_02 |
Data or message corruption / repetition / loss / delay / masquerading or incorrect addressing of information |
no |
Corrupted storage at open, ... (comp_saf_fmea__kvs__corrupt_on_open); other processes: CO_01_04. |
CO_01_03 |
Insertion / sequence of information |
no |
Data and hash files are written and read as a whole. |
CO_01_04 |
Corruption of information, inconsistent data |
yes |
Storage files modified by o... (comp_saf_dfa__kvs__file_access) |
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. |
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 |
Platform DFA (process isolation). |
UI_01_03 |
Stack/Buffer under-/overflow |
no |
Rust bounds checking, C++ standard containers, Key Length (comp_req__kvs__key_length). |
UI_01_04 |
Deadlocks |
yes |
|
UI_01_05 |
Livelocks |
no |
No retry loops; a failed lock is reported (C++ |
UI_01_06 |
Blocking of execution |
no |
No component specific effect, see Persistency execution blocking (feat_saf_dfa__persistency__execution_blocking). |
UI_01_07 |
Incorrect allocation of execution time |
no |
No own execution context except for asynchronous operations; see UI_01_09. |
UI_01_08 |
Incorrect execution flow |
no |
Execution flow defined by the API; corruption: see UI_01_02. |
UI_01_09 |
Incorrect synchronization between software elements |
yes |
Concurrent modification dur... (comp_saf_dfa__kvs__async_flush), Access to a KVS instance fr... (comp_saf_dfa__kvs__multi_process) |
UI_01_10 |
CPU time depletion |
no |
No own execution context except for asynchronous operations, which are started by the application. |
UI_01_11 |
Memory depletion |
yes |
Memory depletion by the kvs (comp_saf_dfa__kvs__memory_depletion) |
UI_01_12 |
Other HW unavailability |
no |
Storage errors are reported (Permission Error Handling (comp_req__kvs__permission_err_hndl)). |
DFA#
Storage files modified by other processes
|
status: valid
|
||||
Modifications by the kvs tool carry a valid checksum: Kvs tool generates wrong st... (comp_saf_fmea__kvs__tool_wrong_output). Implementation: the file permissions are not set. |
|||||
Deadlock by callback
|
status: valid
|
||||
A callback (Callback Support (comp_req__kvs__callback_support)) executed under the instance lock and calling the same instance blocks. Not sufficient: it is not specified that callbacks are executed without holding the lock. Implementation: callbacks are missing. |
|||||
Concurrent modification during asynchronous flush
|
status: valid
|
||||
The flush persists one consistent state of the cache. Implementation: the asynchronous API is missing. |
|||||
Access to a KVS instance from multiple processes
|
status: valid
|
||||
Implementation: only in-process mutexes are used. |
|||||
Memory depletion by the kvs
|
status: valid
|
||||
Implementation: both implementations allocate at runtime. |
|||||