DFA (Dependent Failure Analysis)#

Persistency DFA
status: valid
security: NO
safety: ASIL_B
tags: persistency
version: 1
realizes: wp__feature_dfa

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#

Shared resources#

The dependent failure initiators related to shared resources are not applicable for the features. The shared resources will be considered in the platform DFA.

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.

Table 19 DFA communication between elements#

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.

Shared information inputs#

Same information input used by multiple functions.

Table 20 DFA shared information inputs#

ID

Violation cause shared information inputs

Applicability

Rationale

SI_01_02

Configuration data

no

Each instance uses its own data, hash and default value files (instance ID). Shared instances: see SI_01_03.

SI_01_03

Constants, or variables, being global to the two software functions

yes

Shared KVS instance within ... (feat_saf_dfa__persistency__shared_instance)

SI_01_04

Basic software passes data (read from hardware register and converted into logical information) to two applications software functions

no

No hardware registers are read; file access via the OS.

SI_01_05

Data / function parameter arguments / messages delivered by software function to more than one other function

no

Values are returned to the calling function only.

Unintended impact#

Unintended impacts to function due to various failures.

Table 21 DFA unintended impact#

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
failure_effect: Blocking of execution, persistency is not available.
failure_id: UI_01_06
safety_relevant: yes
sufficient: yes
version: 2

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
failure_effect: Data exchanged with the file system is corrupted, lost or inconsistent.
failure_id: CO_01_02
safety_relevant: yes
sufficient: yes
version: 1

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
failure_effect: Two software elements of a process use the same KVS instance and modify each other's data.
failure_id: SI_01_03
safety_relevant: yes
sufficient: yes
version: 1

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
failure_effect: Unsynchronized access of two processes makes the persisted data inconsistent.
failure_id: UI_01_09
safety_relevant: yes
sufficient: yes
version: 1

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
failure_effect: Runtime allocation of the kvs depletes the heap shared with other software elements.
failure_id: UI_01_11
safety_relevant: yes
sufficient: yes
version: 1

Refined in Memory depletion by the kvs (comp_saf_dfa__kvs__memory_depletion).

Deadlock by completion callback
status: valid
failure_effect: The application and the persistency block each other, persistency and the calling application are not available.
failure_id: UI_01_04
safety_relevant: yes
sufficient: yes
version: 1

Note: The implementations still allocate at runtime (component level).