Voins ([info]voins) wrote,
@ 2009-05-29 20:13:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
Нужна помощь зала
Есть большая (VSZ ~ 500МБ) сильно-многотредовая софтина на C++. В софтине периодически наблюдается порча памяти. Софтина этого, понятно, не выдерживает, и больно падает в самых неподходящих для этого местах (free, например, или mallopt). glibc никаких double-free не обнаруживает. valgrind, за счёт общего затормаживания софтины, маскирует какой-то race condition и бага перестаёт воспроизводиться (в логах при этом только ругань на утечки). electric fence падает из-за обильной многотредовости. duma отжирает всю память и падает. последних результатов dmalloc я так и не дождался, в предыдущий раз он замедлил софтину раз в 1000 и ничего криминального не нашёл. Запускать всё это дело с нагрузкой я не рискнул. У меня уже кончаются идеи (ещё не кончились, но их уже немного). Самый свежий снапшот gdb делать reverse-step отказался, мотивируя это тем, что в многотредовости он такое не умеет.

Чем бы эту софтину ещё потыркать?



(11 comments) - (Post a new comment)


[info]avnik
2009-05-29 05:47 pm UTC (link)
По моему взять машинку побыстрее, валгринд и нагружать пока не упадет. Ну и глазками пошарить.

PS Ты теперь где трудишься-то?

(Reply to this) (Thread)


[info]alexott
2009-05-29 05:50 pm UTC (link)
valgrind у меня даже на мощных машинах затыкается на примерно 100 тредах

(Reply to this) (Parent)


[info]voins
2009-05-29 06:00 pm UTC (link)
Машинка достаточно мощная. Там явно race где-то, и valgrind его маскирует, гад. А я на него так надеялся. :)

(Reply to this) (Parent)

> PS Ты теперь где трудишься-то?
[info]poige
2009-05-29 06:37 pm UTC (link)
В «НайдётсяМногое®» он теперь. :-)

(Reply to this) (Parent)

> Чем бы эту софтину ещё потыркать?
[info]poige
2009-05-29 06:35 pm UTC (link)
Под BSD сможешь её запустить? Если да, попробуй под OpenBSD, у них там memory allocator очень-очень строгий, с кучей сторожей и ловушек. :-) Если же не сможешь, попробуй старую версию OpenBSD'шного mem. allocator'а, который портировали на Linux, он хоть содержит меньше проверок, но тоже строгий. :-) Портированный jemalloc (из FreeBSD) тоже не такой «толерантный», как glibc. Пример:
asix% export LD_PRELOAD=/lib/libobsdmalloc.so
asix% emacs
emacs in realloc(): error: irealloc: pointer to wrong page
Fatal error (6)zsh: abort emacs
asix% export LD_PRELOAD=/lib/libjemalloc.so
asix% emacs
emacs: pthread_mutex_lock.c:87: __pthread_mutex_lock: Assertion `mutex->__data.__owner == 0' failed.
Fatal error (6)zsh: abort emacs
Стоит сделать unset LD_PRELOAD, и glibc не мешает emacs'у работать. :-)

(Reply to this) (Thread)


[info]voins
2009-05-29 07:22 pm UTC (link)
Я сейчас разбираюсь с mcheck и mprobe. Что-то оно ловит, но не факт, что всё. Под BSD запустить вряд ли смогу, а вот портированные аллокаторы обязательно попробую. Спасибо.

(Reply to this) (Parent)(Thread)

> обязательно попробую. Спасибо.
[info]poige
2009-06-02 08:43 am UTC (link)
Рез-ты есть? :-)

(Reply to this) (Parent)(Thread)


[info]voins
2009-06-02 09:08 am UTC (link)
Ничего интересного. с памятью проблем нет, к сожалению. :)

(Reply to this) (Parent)(Thread)

> Ничего интересного. с памятью проблем нет, к сожалени
[info]poige
2009-06-02 02:28 pm UTC (link)
Это ты без BSD'шных mem. allocator'ов выяснил?

(Reply to this) (Parent)(Thread)

Re: > Ничего интересного. с памятью проблем нет, к сожале
[info]voins
2009-06-03 07:37 am UTC (link)
Это и с ними и без них. Никакой ругани.

(Reply to this) (Parent)


[info]grey_olli
2009-07-10 11:16 am UTC (link)
offtopic: http://grey-olli.livejournal.com/369193.html , если не затруднит просьба ответить там или тут.

(Reply to this)


(11 comments) - (Post a new comment)

Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…