Size: a a a

WebAssembly — русскоговорящее сообщество

2019 September 07

M

MaxGraey in WebAssembly — русскоговорящее сообщество
lil pep
а там же вроде мозила выпускала скринкаст с ллдб/гдб недавно
Ну то через LLDB а тот в свою очередь тянет llvm. Плюс это все подходит только для wasmtime и DWARF, а Сережа выложил доку с просозалом и там все свое, общение через новый интерфейс а не протокол с форматом DWARF
источник

ҪҸ

Ҫѐҏӗѫӑ Ҹҋ 🤖 in WebAssembly — русскоговорящее сообщество
я тож это спалил недавно
источник

ҪҸ

Ҫѐҏӗѫӑ Ҹҋ 🤖 in WebAssembly — русскоговорящее сообщество
про сайтгласс
источник
2019 September 08

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Вот кстати идеальный page allocator у v8:
https://github.com/v8/v8/blob/master/src/base/bounded-page-allocator.cc

Использует рандомизированный memory region аллокатор что бы уменьшить фрагментацию чанков
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
MaxGraey
Вот кстати идеальный page allocator у v8:
https://github.com/v8/v8/blob/master/src/base/bounded-page-allocator.cc

Использует рандомизированный memory region аллокатор что бы уменьшить фрагментацию чанков
а почему он идеальный, кстати?
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Mikhail Voronov
а почему он идеальный, кстати?
Потому что у page аллокатора есть роли доступа, guard regions c дешевым способом выбрасывать OOB исключения, без рантайм проверок, адреса для mmap рандомизируются
https://github.com/v8/v8/blob/4b9b23521e6fd42373ebbcb20ebe03bf445494f9/src/base/page-allocator.cc#L35
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
кажется, что всё (ну мб кроме ролей доступа) это есть у большинства современных аллокаторов, а что такого необычного в рандомизации mmap? Так-то и ОС рандомизирует их. Да, в случае Windows >= 8.1 рандомизация на высоте, а в некоторых дистрибутивах/версиях *nix не очень, но всё-таки, это же очень древняя тема.
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
а ещё он не рассчитан (ну или не оптимизирован) на многопоточное использование?
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
хотя там наверное на каждый тред может свой BoundedPageAllocator создаваться
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Mikhail Voronov
хотя там наверное на каждый тред может свой BoundedPageAllocator создаваться
Да там поже именно так
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Mikhail Voronov
кажется, что всё (ну мб кроме ролей доступа) это есть у большинства современных аллокаторов, а что такого необычного в рандомизации mmap? Так-то и ОС рандомизирует их. Да, в случае Windows >= 8.1 рандомизация на высоте, а в некоторых дистрибутивах/версиях *nix не очень, но всё-таки, это же очень древняя тема.
Нет guarded regions это новое и насколько я читал специально спроектировано для wasm
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
хм, а как оно работает? Может быть много техних с похожим названием)
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Да нечто похожее, только немного для других целей
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
В v8 делается так:
Для wasm резервируется некое виртуальное пространство для инстанса, которому назначаеются права на чтение, записть и выпонения или их комбинацию (по сегментно), а все что за пределами адресного пространства этого региона создаются guarged pages с полным рестриктом прав. Соответственно, если происходит OOB, то выбрасывается исклучение уже самой ОС, которое перехватывается и создается обрабатывается соответственно VM. Как то так
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
MaxGraey
Да там поже именно так
я чего-то mutex просмотрел там, но это тоже, к слову, не самая эффективная техника
источник

lp

lil pep in WebAssembly — русскоговорящее сообщество
MaxGraey
В v8 делается так:
Для wasm резервируется некое виртуальное пространство для инстанса, которому назначаеются права на чтение, записть и выпонения или их комбинацию (по сегментно), а все что за пределами адресного пространства этого региона создаются guarged pages с полным рестриктом прав. Соответственно, если происходит OOB, то выбрасывается исклучение уже самой ОС, которое перехватывается и создается обрабатывается соответственно VM. Как то так
ну так так еще мой дед делал
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
MaxGraey
В v8 делается так:
Для wasm резервируется некое виртуальное пространство для инстанса, которому назначаеются права на чтение, записть и выпонения или их комбинацию (по сегментно), а все что за пределами адресного пространства этого региона создаются guarged pages с полным рестриктом прав. Соответственно, если происходит OOB, то выбрасывается исклучение уже самой ОС, которое перехватывается и создается обрабатывается соответственно VM. Как то так
нуу, кажется очевидным
источник

lp

lil pep in WebAssembly — русскоговорящее сообщество
lil pep
ну так так еще мой дед делал
но рандомный mmap заинтриговал, чем же он от обычного отличается
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
такие guard page в аллокаторах стали появляться где-то с 2010-х, но у них больше security назначение было
источник