Size: a a a

2020 August 15

m

magras in pro.cxx
Из минусов, очевидно, что если кто-нибудь не использует глобальный оператор new о нем записей в логе не будет. Но универсального решения здесь нет, так как если хукать самые базовые системные вызовы мы увидим только несколько вызовов от аллокаторов.
источник

AK

Alexey Kuznetsov in pro.cxx
В glibc маллок это weak symbol, так что можно хукануть прямо его. На винде с этим сложнее
источник

..

.D.U.Ż.Y. .D.Y.M. in pro.cxx
Ilia Zviagin
Что-то для сборки модуля апача у тебя вопросы странные...
Почему?  apxs на вход нужен .o вот я и пытаюсь этот .o собрать
источник

AP

Antony Polukhin in pro.cxx
Alexey Kuznetsov
В glibc маллок это weak symbol, так что можно хукануть прямо его. На винде с этим сложнее
На винде кажется есть хук на аллокатор

А вообще да, можно сделать свою функцию аллокации и в ней прям boost::stacktrace заиспользовать

В gamedev кто-то такое делал
источник

AN

Alexander N in pro.cxx
Изврат какой)
источник

AN

Alexander N in pro.cxx
Это не для продакшна я полагаю?
источник

PP

Pavel Perekhozhikh in pro.cxx
Alexander N
Это не для продакшна я полагаю?
Нет
источник

PP

Pavel Perekhozhikh in pro.cxx
Это для дева
источник

m

magras in pro.cxx
Alexey Kuznetsov
В glibc маллок это weak symbol, так что можно хукануть прямо его. На винде с этим сложнее
Если кто-то добавил в код второй кастомный аллоктор, трейс не будет проходить через malloc, он скорее всего будет использовать базовые системные вызовы. Но да, под виндой я в рантаме хукал именно malloc так как дефолтная реализация operator new работала через него.
источник

PP

Pavel Perekhozhikh in pro.cxx
Antony Polukhin
На винде кажется есть хук на аллокатор

А вообще да, можно сделать свою функцию аллокации и в ней прям boost::stacktrace заиспользовать

В gamedev кто-то такое делал
Хукать на разных платформах по разному, главное чтобы в твоём хуке не было аллокаций, а той уйдешь в рекурсию
источник

AN

Alexander N in pro.cxx
Если чисто для отладки можно наверное как санитайзер делает подменять malloc?
источник

m

magras in pro.cxx
Alexander N
Если чисто для отладки можно наверное как санитайзер делает подменять malloc?
Хук это и есть подмена функции в рантайме.
источник

AN

Alexander N in pro.cxx
Я не уверен, что там в рантайме
источник

PP

Pavel Perekhozhikh in pro.cxx
Любой new будет в любом случае вызывать malloc , разве что у объектов где в коде подменили аллокатор на свой, так что универсально это именно хуками
источник

AK

Andrei K in pro.cxx
Pavel Perekhozhikh
Любой new будет в любом случае вызывать malloc , разве что у объектов где в коде подменили аллокатор на свой, так что универсально это именно хуками
Не обязательно. Я для рабочего проекта для ускорения написал кастомный аллокатор, который прям из ОС страницы резервирует и коммитит.
источник

PP

Pavel Perekhozhikh in pro.cxx
Andrei K
Не обязательно. Я для рабочего проекта для ускорения написал кастомный аллокатор, который прям из ОС страницы резервирует и коммитит.
Так я и написал - кроме кастомных аллокаторов
источник

m

magras in pro.cxx
Pavel Perekhozhikh
Так я и написал - кроме кастомных аллокаторов
new тоже не обязан вызывать malloc.
источник

PP

Pavel Perekhozhikh in pro.cxx
magras
new тоже не обязан вызывать malloc.
Не обязан, не написано что обязан, но вызывает
источник

ПК

Побитый Кирпич... in pro.cxx
Antony Polukhin
На винде кажется есть хук на аллокатор

А вообще да, можно сделать свою функцию аллокации и в ней прям boost::stacktrace заиспользовать

В gamedev кто-то такое делал
А разве stacktrace сам не аллоцирует?
источник

ПК

Побитый Кирпич... in pro.cxx
Там же неизвестная длина стека/текста под имена
источник