[devel] Q: CONFIG_PSI_DEFAULT_DISABLED=y

Alexey Sheplyakov asheplyakov на basealt.ru
Ср Сен 8 13:47:35 MSK 2021


On 08.09.2021 14:14, Denis Medvedev wrote:
> В Wed, 8 Sep 2021 13:17:06 +0400

>>> Вот мне бы интересно было, если бы malloc мог (при включении
>>> какой-либо опции) при отсутствии памяти  ждать ее появления ,
>>> выдавая процессу SIGTSTP.
>>
>> Сколько примерно времени займёт адаптация userspace к новому
>> поведению? В частности, как определить те места, где ответ "сейчас
>> нет, жду" заведомо неприемлем?
> "сейчас нет, жду" - это не ответ, не код возврата, это поведение.

Тогда это ещё хуже.

> А почему вообще userspace это интересно?

1. Потому что время имеет значение.
2. Приход сигнала, в том месте, где его не ожидает - это очень, очень плохо.

> Ему malloc возвратит память - чаще чем обычно. И всё. Оно просто чаще не получит NULL, его либо
> снимут явным kill ВНУТРИ malloc либо дадут памяти и волшебный пендель
> SIGCONT. Зато это явно безопаснее, чем если далее не будет проверен код
> возврата и будет разыменован NULL.

С точностью до наоборот: появляется ещё одно место, где возможен нелокальный
выход, и дополнительные возможности для атаки (я даже не говорю про DoS).

> Привеите пример ситуации, когда ответ "сейчас нет, жду" хуже чем 
> "нет памяти"?

С ходу:

pthread_mutex_lock(&mutex);
result = realloc(global_buf, size*2); /* и тут закончилась память */




Подробная информация о списке рассылки Devel