Канарейки стека совместно используются через потоки?

Наиболее вероятная причина в Debian 9 заключается в том, что у вас есть параметр console=ttyS1в командной строке вашего ядра, который подхватывается systemd-getty-generator, вызывая создание экземпляра службы serial-getty@ttyS1. Эта служба запускает agettyWeitse Venema на устройстве ttyS1. Но на самом деле у вас нет терминального символьного устройства /dev/ttyS1на вашем сервере. Файл (очевидно )существует, но это не файл терминального символьного устройства.

Дополнительная литература

3
04.07.2019, 19:57
1 ответ
  1. Когда создается новый поток, выделяется область памяти для его стека. Из этой области выделяется пространство для локальных переменных потока. Переменные TLS не являются строго частью стека, т. е. они не помещаются в стек и не извлекаются из него, но они существуют в одной и той же области поверх стека.

    Расположение этой области в адресном пространстве зависит от множества факторов. Когда новый поток создается с помощью pthread_create, программист может передать указатель на память, которая будет использоваться в качестве стека потока. Расположение этой памяти зависит от того, как была выделена память. Если предварительно -выделенная память не используется, то область памяти выделяется с использованием mmapс NULLв качестве параметра addr, что позволяет ядру решить, куда отобразить память. На x86 _64 выделенная таким образом память находится между стеком и кучей.

  2. Для каждого потока используется новое канареечное значение. См. ответ на этот вопрос .

2
27.01.2020, 21:29

Теги

Похожие вопросы