= Сообщение: 2851 из 3580 ======================================== RU.GOLDED = От : Nil A 2:5015/46 13 Oct 23 21:35:16 Кому : Vitaliy Aksyonov 13 Oct 23 21:35:16 Тема : Арифметика указателей UB в throw_realloc_debug() FGHI : area://RU.GOLDED?msgid=2:5015/46+65298df8 = Кодировка сообщения определена как: CP866 ================================== Ответ: area://RU.GOLDED?msgid=1:104/117+652e1617 ============================================================================== Hello, Vitaliy!
Во-первых, зачем по-умолчанию включены отладки GTHROW_LOG и GTHROW_DEBUG? Я иногда видел какие-то трейсы про память пишутся в golded.log, но реально, хоть что-то когда-нибудь присылал сюда в эху, или куда-то, какие-то отладочные трейсы памяти?
Отладка GTHROW_DEBUG в голдеде сделана таким образом, что они аллоцируют памяти больше на структурку Throw, и прячут её в начале. Перед адресом и после обкладывают магическими цифирками BEFOREVAL и AFTERVAL, чтобы потом на недоезды и заезды проверить. Также они двухсвязный список хранят, чтобы потом потерянную память напечатать. А потом пришёл Гугл и запили ASAN билды, и такое делать в ручную уже стало не нужно, так что выключить по-умолчанию я бы рекомендовал.
Решилось мне прогнать UBSAN билд, и прямо на запуске, где происходит сканирование всех областей (баз эх), случается UB
/home/fido/src/golded-plus/goldlib/gall/gmemdbg.cpp:130:53: runtime error: pointer index expression with base 0x000000000000 overflowed to 0xffffffffffffffd4