Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4f673306 authored by Johan Redestig's avatar Johan Redestig
Browse files

Setup signal handler before any exec command

Fixes init deadlock when an exec command was called
in an on-init section.

The exec command handling relies on that the signal handler
mechanism is working to know when to continue executing
commands.

Change-Id: Ib0ce75ffad7cf3bf926c93d0506b2fe3e5a92630
parent 623aa1c4
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -1034,6 +1034,9 @@ int main(int argc, char** argv) {


    init_parse_config_file("/init.rc");
    init_parse_config_file("/init.rc");


    // Setup signal handler before any exec command or we'll deadlock
    queue_builtin_action(signal_init_action, "signal_init");

    action_for_each_trigger("early-init", action_add_queue_tail);
    action_for_each_trigger("early-init", action_add_queue_tail);


    queue_builtin_action(wait_for_coldboot_done_action, "wait_for_coldboot_done");
    queue_builtin_action(wait_for_coldboot_done_action, "wait_for_coldboot_done");
@@ -1048,7 +1051,6 @@ int main(int argc, char** argv) {
    // wasn't ready immediately after wait_for_coldboot_done
    // wasn't ready immediately after wait_for_coldboot_done
    queue_builtin_action(mix_hwrng_into_linux_rng_action, "mix_hwrng_into_linux_rng");
    queue_builtin_action(mix_hwrng_into_linux_rng_action, "mix_hwrng_into_linux_rng");
    queue_builtin_action(property_service_init_action, "property_service_init");
    queue_builtin_action(property_service_init_action, "property_service_init");
    queue_builtin_action(signal_init_action, "signal_init");


    // Don't mount filesystems or start core system services in charger mode.
    // Don't mount filesystems or start core system services in charger mode.
    char bootmode[PROP_VALUE_MAX];
    char bootmode[PROP_VALUE_MAX];