Size: a a a

2020 May 08

λ

λоλторт in rust_offtopic
очень хорошо, когда их хватает, чтобы что-то описать
источник

B

Bogdan in rust_offtopic
Alex Zhukovsky
По-поводу краша fmod. Всё таки рекомендую:
1. попробовать виртуальные адреса в аллакаторе сместить подальше на отметку > 4gb. Это существенно изменит лейаут памяти, и возможно участит нарол, или что-то расскажет больше о моменте проезда памяти.
2. логировать каждый fmod евент, возможно увидев закономерность при крашах.
Интересно, как вобще можно о таком плпросить аллокатор? Он же блоки получает от ОС в том диапазоне где ОС решит выделить


Или есть какойто способ плпросить ОС выделить страницы в конкретном диапазоне?
источник

DF

Dollar Føølish in rust_offtopic
Да, ммап
источник

DF

Dollar Føølish in rust_offtopic
Пишешь адрес первым аргументом
источник

DF

Dollar Føølish in rust_offtopic
Потом даёшь флажок fixed
источник

DF

Dollar Føølish in rust_offtopic
Аллокатор от ос получает значение brk
источник

DF

Dollar Føølish in rust_offtopic
Это для менеджмента кучи. Процесс может использовать линейный адрес не только в этом диапазоне (кучи) но в любом. Если сделает ммап
источник

r

red75prime in rust_offtopic
Bogdan
Интересно, как вобще можно о таком плпросить аллокатор? Он же блоки получает от ОС в том диапазоне где ОС решит выделить


Или есть какойто способ плпросить ОС выделить страницы в конкретном диапазоне?
Ну да. Обычно есть способ попросить ОС зарезервировать вот этот диапазон виртуальных адресов для отображения на физическую (по возможности) память.
источник

DF

Dollar Føølish in rust_offtopic
Вообще лейаут памяти задаётся при загрузке бинарника , так как в этот момент формируется список mm_struct->vm_area_struct*
источник

DF

Dollar Føølish in rust_offtopic
Про трюк с 4 Гб я не слышал
источник

DF

Dollar Føølish in rust_offtopic
Кто нибудь знает зачем оно рекоммендует именно 4 Гб?
источник

MB

Mikail Bagishov in rust_offtopic
Dollar Føølish
Кто нибудь знает зачем оно рекоммендует именно 4 Гб?
Чтобы любые 32-битные адреса были невалидными
источник

DF

Dollar Føølish in rust_offtopic
А лейаут памяти здесь причем?
источник

r

red75prime in rust_offtopic
Имеется в виду размещение аллоцированых блоков в виртуальной памяти
источник

MB

Mikail Bagishov in rust_offtopic
То есть если какой-то код сохраняет адрес в 32-битную переменную, то он гарантированно и быстро крашнется.
источник

DF

Dollar Føølish in rust_offtopic
А, это значит надо отмапить предыдущую кучу сначала?
источник

DF

Dollar Føølish in rust_offtopic
munmap всмвсле
источник

MB

Mikail Bagishov in rust_offtopic
Я думаю, можно настроить так, чтобы куча сразу размещалась на больших адресах.
источник

r

red75prime in rust_offtopic
Не, скорее похачить аллокатор, чтобы он брал большие виртуальные адреса
источник

DF

Dollar Føølish in rust_offtopic
Он от brk их берёт же
источник