OmniORB - memory leaks!!
От: DenisII  
Дата: 24.06.03 06:56
Оценка:
Здравствуйте. Подключаю в проект VC 2 файла, сгенерированные omniidl. Собираю и запускаю проект — все ОК. При завершении программы в окне Debug сообщение Detected memory leaks и далее внушительный список строк с перечислением блоков памяти. idl компилирую — omniidl -bcxx my_idl.idl. Как побороть утечку памяти? Заранее спасибо.
Re: OmniORB - memory leaks!!
От: scaramush  
Дата: 24.06.03 10:09
Оценка:
Вообще говоря, в omniorb утечек нет. можно посмотреть специальными утилитами. Просто орб создает на куче ряд статических объектов, которые создаются один раз. Они живут всегда, пока работает программа. В списке рассылки omniorb эта проблема обсуждалась. посмотри архивы. Там есть другие грабли, связанные с утечкой памяти. Ты какую версию используешь?
Re[2]: OmniORB - memory leaks!!
От: DenisII  
Дата: 24.06.03 10:45
Оценка:
Здравствуйте, scaramush, Вы писали:

S>Вообще говоря, в omniorb утечек нет. можно посмотреть специальными утилитами. Просто орб создает на куче ряд статических объектов, которые создаются один раз. Они живут всегда, пока работает программа. В списке рассылки omniorb эта проблема обсуждалась. посмотри архивы. Там есть другие грабли, связанные с утечкой памяти. Ты какую версию используешь?


Версия 3.0. Не нашел я, к сожалению, ответ на свой вопрос в архивах.
Если в omniorb утечек нет, то что мне тогда выдает VC?
Re[3]: OmniORB - memory leaks!!
От: scaramush  
Дата: 24.06.03 12:17
Оценка: 1 (1)
DII>Версия 3.0. Не нашел я, к сожалению, ответ на свой вопрос в архивах.
DII>Если в omniorb утечек нет, то что мне тогда выдает VC?

Если ты создал объект в куче, но один раз, он у тебя глобальный, если orb работает, и при этом дополнительные объекты не выделяются, то утечек нет. VC будет диагностировать утечку памяти в любом случае, если ты создал объект на куче и не удалил его.

В 3.0 есть действительно грабли с утечкой памяти. Если используешь динамически линкованную библиотеку, то там объекты executor'ы выделяются в куче приложения, а orb пытается удалить удалить их в куче библиотеки. соотвественно память утекает. Это особенно было видно при запуске DEBUG версии под отладчиком. По этому поводу была ругать в рассылке, но вроде авторы отлаились и забили. Я решил эту проблему прилинковав orb статически.
Re[4]: OmniORB - memory leaks!!
От: DenisII  
Дата: 24.06.03 13:09
Оценка:
Здравствуйте, scaramush, Вы писали:

S>Если ты создал объект в куче, но один раз, он у тебя глобальный, если orb работает, и при этом дополнительные объекты не выделяются, то утечек нет. VC будет диагностировать утечку памяти в любом случае, если ты создал объект на куче и не удалил его.


Все дело в том, что я вообще ничего не создаю!! Т.е. обнаружив утечку памяти в рабочем проекте, я естественно решил ее отловить. Для этого создал пустой MFC dialog based проект. Изменил свойства проекта, как указано в OmniOrb Readme. Подключил к проекту нужные lib'ы. Подключил файл my_object.cc в проект (который получился при компиляции idl), собрал его и запустил. При выходе из программы — утечка памяти. Удаляю файл my_object.cc из проекта, делаю rebuild — все ОК.

S>В 3.0 есть действительно грабли с утечкой памяти. Если используешь динамически линкованную библиотеку, то там объекты executor'ы выделяются в куче приложения, а orb пытается удалить удалить их в куче библиотеки. соотвественно память утекает. Это особенно было видно при запуске DEBUG версии под отладчиком. По этому поводу была ругать в рассылке, но вроде авторы отлаились и забили. Я решил эту проблему прилинковав orb статически.


Да я и подгружаю dll статически.
Re[5]: OmniORB - memory leaks!!
От: scaramush  
Дата: 24.06.03 14:07
Оценка: 2 (1)
БЛИН!!!
Это не утечка памяти! Все объекты гарантировано создаются один раз!!!! При корректной программе при выходе их ВСЕГДА одно и то же количество!!! Для отлова остальных утечек пользуйтесь BoundsChecker'ом.
Re[6]: OmniORB - memory leaks!!
От: DenisII  
Дата: 25.06.03 05:53
Оценка:
Спасибо огромное за Ваши ответы.
Re[5]: OmniORB - memory leaks!!
От: Wasilij  
Дата: 25.06.03 07:32
Оценка:
Здравствуйте, DenisII, Вы писали:

DII>Здравствуйте, scaramush, Вы писали:


S>>В 3.0 есть действительно грабли с утечкой памяти. Если используешь динамически линкованную библиотеку, то там объекты executor'ы выделяются в куче приложения, а orb пытается удалить удалить их в куче библиотеки. соотвественно память утекает. Это особенно было видно при запуске DEBUG версии под отладчиком. По этому поводу была ругать в рассылке, но вроде авторы отлаились и забили. Я решил эту проблему прилинковав orb статически.


А у меня такая же беда и с omniORB-4.0.1. Поэтому тоже приходится линковаться статически .

DII>Да я и подгружаю dll статически.

ОГО!? Подгружать динамическую библиотеку статически??? — Это что-то новое!
Re[7]: OmniORB - memory leaks!!
От: scaramush  
Дата: 25.06.03 09:05
Оценка:
А если не секрет, где вы работаете? В смысле какая кампания пишет на CORBA-С++?
Re[8]: OmniORB - memory leaks!!
От: Wasilij  
Дата: 25.06.03 09:11
Оценка:
Здравствуйте, scaramush, Вы писали:

S>А если не секрет, где вы работаете? В смысле какая кампания пишет на CORBA-С++?


http://www.eureca.ru
Re[8]: OmniORB - memory leaks!!
От: DenisII  
Дата: 25.06.03 11:37
Оценка:
Здравствуйте, scaramush, Вы писали:

S>А если не секрет, где вы работаете? В смысле какая кампания пишет на CORBA-С++?


Не секрет. http://www.informind.ru.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.