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