The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"А не отстаётся ли занятая память после pthread_exit?.."
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"А не отстаётся ли занятая память после pthread_exit?.."
Сообщение от Aptimist emailИскать по авторуВ закладки(??) on 08-Июл-04, 13:13  (MSK)
Вот и я столкнулся со столь частой проблемой утечки памяти... и что делать ума не приложу... В программе динамически выделается память под элементы очереди, которые потом, после соответствующей обработки, удаляются, и регулярно запускается, после того как вроде бы завершился предыдущий экземпляр, поток-диспетчер... во-о-от... Всё, казалось бы, должно работать отлично. Всегда отличался чистописанием, то есть каждому new свой delete и т. п., конечно, и на старуху бывает проруха, но проверил всё десятки раз и вдоль и поперёк, и эти самые new с delete'ом перегружал, проверял, что сколько раз и для чего запускается... в общем, мозгой не могу понять, где течёт. А оно течёт... тихо так... исподтишка... по четыре кила в минуту или две... и через несколько часов, стабильной во всём остальном работы, прога падает в корку... :-(
На очередь грешить не могу... столько лет уже с всякими динамическими структурами работаю, они мне уже ближе и роднее порой, чем все массивы вместе взятые...
А вот с потоками столкнулся серьёзно только пару месяцев назад... опыта, считай, никакого... И вот, потеряв всякую надежду мозгами дойти до решения проблемы, решил поступить тем образом, каким у нас в стране (а ну-ка, вспомните, как она лет пятнадцать у нас за глаза называлась) принято поступать... то есть спросить совета. И вот с криком: "Люди добрые! Поможите, кто чем можите!.." я обращаюсь к знатокам и специалистам :-). Где-то на просторах инета перед глазами мелькнула фраза, что поток после завершения, даже детачнутый, может не освободить память, занятую под свои ресурсы и останется она потерянной и ... в общем, вопрос именно в этом, правда ли может так быть и как с этим бороться...
А ещё, не сочтите за жадность и хамство, посоветуйте какую-нить прогу для контроля за памятью программы, такую чтоб и под фрёй работала, и с многопоточными приложениями дружила, а то мне вчера dmalloc такого на это сказал... в общем, цельных полчаса я ходил там, куда он меня послал...
Заранее благодарен.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "А не отстаётся ли занятая память после pthread_exit?.."
Сообщение от klalafuda emailИскать по авторуВ закладки on 08-Июл-04, 13:25  (MSK)
>Вот и я столкнулся со столь частой проблемой утечки памяти... и что
>делать ума не приложу... В программе динамически выделается память под элементы
>очереди, которые потом, после соответствующей обработки, удаляются, и регулярно запускается, после
>того как вроде бы завершился предыдущий экземпляр, поток-диспетчер... во-о-от... Всё, казалось
>бы, должно работать отлично. Всегда отличался чистописанием, то есть каждому new
>свой delete и т. п., конечно, и на старуху бывает проруха,
>но проверил всё десятки раз и вдоль и поперёк, и эти
>самые new с delete'ом перегружал, проверял, что сколько раз и для
>чего запускается... в общем, мозгой не могу понять, где течёт. А
>оно течёт... тихо так... исподтишка... по четыре кила в минуту или
>две... и через несколько часов, стабильной во всём остальном работы, прога
>падает в корку... :-(
>На очередь грешить не могу... столько лет уже с всякими динамическими структурами
>работаю, они мне уже ближе и роднее порой, чем все массивы
>вместе взятые...
>А вот с потоками столкнулся серьёзно только пару месяцев назад... опыта, считай,
>никакого... И вот, потеряв всякую надежду мозгами дойти до решения проблемы,
>решил поступить тем образом, каким у нас в стране (а ну-ка,
>вспомните, как она лет пятнадцать у нас за глаза называлась) принято
>поступать... то есть спросить совета. И вот с криком: "Люди добрые!
>Поможите, кто чем можите!.." я обращаюсь к знатокам и специалистам :-).
>Где-то на просторах инета перед глазами мелькнула фраза, что поток после
>завершения, даже детачнутый, может не освободить память, занятую под свои ресурсы
>и останется она потерянной и ... в общем, вопрос именно в
>этом, правда ли может так быть и как с этим бороться...
>
>А ещё, не сочтите за жадность и хамство, посоветуйте какую-нить прогу для
>контроля за памятью программы, такую чтоб и под фрёй работала, и
>с многопоточными приложениями дружила, а то мне вчера dmalloc такого на
>это сказал... в общем, цельных полчаса я ходил там, куда он
>меня послал...
>Заранее благодарен.

http://www.opengroup.org/onlinepubs/009695399/functions/pthread_exit.html

читаем, пркидываем, где у вас application level а где thread level resources..

// wbr

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "А не отстаётся ли занятая память после pthread_exit?.."
Сообщение от Aptimist Искать по авторуВ закладки(ok) on 08-Июл-04, 16:24  (MSK)
>читаем, пркидываем, где у вас application level а где thread level resources..
>
>
>// wbr


Спасибо. Особенно за назидательный тон...
Но вот только дело в том, что все это, в разных редакциях и на разных языках, я читал уже раз надцать... и, мож я какой непонятливый, про возможность утечки памяти ничего не нашёл... :-(
Мож, кто чего дельного присоветует...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "А не отстаётся ли занятая память после pthread_exit?.."
Сообщение от klalafuda emailИскать по авторуВ закладки on 08-Июл-04, 17:35  (MSK)
>>читаем, пркидываем, где у вас application level а где thread level resources..
>>
>>
>>// wbr
>
>
>Спасибо. Особенно за назидательный тон...
>Но вот только дело в том, что все это, в разных редакциях
>и на разных языках, я читал уже раз надцать... и, мож
>я какой непонятливый, про возможность утечки памяти ничего не нашёл... :-(
>
>Мож, кто чего дельного присоветует...

назидательность в тоне вам показалась :)

---cut---
Thread termination does not release any application visible process resources, including, but not limited to, mutexes and file descriptors, nor does it perform any process-level cleanup actions, including, but not limited to, calling any atexit() routines that may exist.
---cut---

-> не имея вашего кода перед глазами трудно сказать, где же именно у вас утечка. но даже при мелкой ошибке она может иметь место. причем не только на деструкторах. кстати, вы core dump ковырять не пробовали после сборки с отладочной информацией ? в принципе, может весьма помочь.

// wbr

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "А не отстаётся ли занятая память после pthread_exit?.."
Сообщение от Aptimist Искать по авторуВ закладки(??) on 08-Июл-04, 17:58  (MSK)
>назидательность в тоне вам показалась :)
>
>---cut---
>Thread termination does not release any application visible process resources, including, but
>not limited to, mutexes and file descriptors, nor does it perform
>any process-level cleanup actions, including, but not limited to, calling any
>atexit() routines that may exist.
>---cut---
>
>-> не имея вашего кода перед глазами трудно сказать, где же именно у вас утечка. но даже при мелкой ошибке она может иметь место. причем не только на деструкторах. кстати, вы core dump ковырять не пробовали после сборки с отладочной информацией ? в принципе, может весьма помочь.
>
>// wbr

Спасибо большое.
Мне удалось избавиться от утечки (как хорошо варят мозги, когда не нужно ходить на пары или готовиться к экзаменам!!!), я просто (слово-то какое уничижающее...) переписал программу так, что она не рождает потоки-диспетчеры пачками, а обходиться десятком статичных потоков... что и решило проблему!(!!...)
Кстати и как избежать использования переменных условия я тоже додумался (как хорошо варят... см. выше).
Так что ещё раз огромное спасибо за участие. ;-)

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру