| 935 | } |
| 936 | |
| 937 | static _Noreturn void host_force_terminate(const char *component) { |
| 938 | /* The operation-log sink flushes every record before returning. Do not run |
| 939 | * ordinary teardown after the cooperative deadline: a callback thread may |
| 940 | * still own application storage. Process termination releases native |
| 941 | * locks, and supervised worker groups observe their daemon parent's death. */ |
| 942 | cbm_log_error("daemon.forced_shutdown", "component", component); |
| 943 | #ifdef _WIN32 |
| 944 | (void)TerminateProcess(GetCurrentProcess(), EXIT_FAILURE); |
| 945 | abort(); |
| 946 | #else |
| 947 | _exit(EXIT_FAILURE); |
| 948 | #endif |
| 949 | } |
| 950 | |
| 951 | _Noreturn void cbm_daemon_host_force_terminate_for_test(const char *component) { |
| 952 | char conflict_log[HOST_PATH_CAP]; |
no outgoing calls
no test coverage detected