Канарейка стека инициализируется случайным значением каждый раз, когда дублируется структура задачи; см. dup_task_struct ()
в kernel / fork.c
(и, в частности, строка 380 в версии 4.7). Таким образом, каждый разветвленный процесс получает случайную канарейку, а это означает, что существует очень высокая вероятность того, что у каждого процесса есть своя канарейка (и, что более важно, вы не можете предсказать канарейку стека другого процесса).
boot_init_stack_canary ()
гарантирует, что первая «задача» (ядро) имеет канарейку стека. Эта канарейка не используется повторно для процессов.