Я хочу встроить Google V8 (v6.8) в программу C++. Поскольку эта программа использует много стека, я хочу настроить V8 на использование всего доступного стека. Для этого мне нужен наименьший разрешенный адрес стека, который может использовать V8.
Код: Выделить всё
uint32_t *base;
// TODO: set `base` to lowest stack address
...
v8::Isolate::CreateParams createParams;
createParams.array_buffer_allocator =
v8::ArrayBuffer::Allocator::NewDefaultAllocator();
createParams.constraints.set_stack_limit(base);
defaultIsolate = Isolate::New(createParams);
...
Теперь мне нужно определить значение base под Linux. Для этого я попробовал прочитать /proc/self/maps. Однако размер сегмента, считываемого для стека, всегда составляет всего 132 КБ:
Код: Выделить всё
7fff03e18000-7fff03e39000 rw-p 00000000 00:00 0 [stack]
Похоже, это не зависит от того, какой лимит стека установлен. Я также попробовал прочитать лимит с помощью getrlimit() и уменьшить максимальный адрес на лимит. Но это приводит к сбою.
Может ли кто-нибудь сказать мне, как еще я могу узнать самый низкий адрес стека в Linux?
Подробнее здесь:
https://stackoverflow.com/questions/792 ... ck-address