В замечаниях к текущей версии FreeBSD-CURRENT приводится информация об улучшении безопасности работы с памятью на уровне ядра, реализованном Pawel Jakub Dawidek (pjd@FreeBSD.org) под названием RedZone (http://www.freebsd.org/cgi/man.cgi?query=redzone&sektion=9&m...), предназначенном для защиты буфера от повреждения при выделении/освобождении памяти во время вызова malloc(9).
RedZone распознает ошибки переполнения буфера "сверху" и "снизу" времени выполнения (через опосредованный вызов readzone_check() до момента фактической манипуляции с ресурсами в free(9) и realloc(9)) и печатает отладочную информацию об адресах выделения и освобождения затронутой памяти вида:
REDZONE: Buffer underflow detected. 2 bytes corrupted before 0xc8688580 (16 bytes allocated).
Поведение системы по умолчанию - печать отладочной информации без вызова паники ядра (redzone_check() смотрит на настраиваемое sysctl(8)-значение vm.redzone.panic). Работает в ядре, собранном в режиме отладки.URL: http://www.freebsd.org/cgi/man.cgi?query=redzone&sektion=9&m...
Новость: http://www.opennet.me/opennews/art.shtml?num=7670
ничо не понил
Кто-нибудь объяснит чем это гуд? ))
Насколько я понимаю, теперь станет проще отлаживать систему (ядро в частности).
Чем это гуд? Все лучше, когда баги выплывают на этапе тестирования, а не в виде send-pr(1)
Вот еще related links, где redzone так или иначе упоминается:
ядерный malloc(9):
http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/kern/kern_mall...
библиотечный malloc(3):
http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/stdlib/ma...
тот самый redzone(9), в частности redzone_check(), который вызывают из юзер- и кернелспейса в free(), realloc() /etc:
http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/vm/redzone.c?r...
а это откуда я собственно и узнал - коммиту redzone 4 месяца %) только т-сс:
http://www.freebsd.org/relnotes/CURRENT/relnotes/i386/new.html
на производительность как повлияет?
> Работает в ядре, собранном в режиме отладки.
Думаю будет не шибко быстро.
что б это понять - надо прочитать МакКузика - благо книга по внутреннему строения и архитектуре 5,2(какая разница 6 или 7 - политика будет сохраняться) есть - там malloc используется для выделения больших участков памяти в ядре в отличие от zlloc (не большие участков памяти) что даст? -даст стабильность работы в ядре ,,, - IMHO
man page
http://www.freebsd.org/cgi/man.cgi?query=redzone&sektion=9&m...
src/UPDATING20060113:
libc's malloc implementation has been replaced. This change has the
potential to uncover application bugs that previously went unnoticed.