On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение





Пост N: 200
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 23.08.13 15:50. Заголовок: Сборщик мусора / очистка памяти


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

Общий смысл таков, что в некоторых местах, связанных с интенсивными расчетами (напр. подгтовка прайс-листа на 5-6 тысяч наименований, сложная комбинированная работа с разными таблицами одновременно и тп) приводит к совершенно непредсказуемым результатам:
- пропадают надписи в SAY в панели с несколькими GET
- программа вылетает/виснет
- программа неожиданно начинает пытаться открыть документ Word/Excel а то и несколько...

Осмысленного объяснения этому процессу дать не могу, поскольку связи с кодом нет точно. Во всяком случае, Clipper в этих местах работал (но зато без звука вылетал в других и намного чаще).

На одной машине даже поймал вот такой отчет:
---
Application Internal Error - D:\tradewin.exe
Terminated at: 2013.08.23 12:12:31
Неисправимая ошибка 9009: hb_xrealloc ене может перераспределить память
Called from AADD(0)
Called from CRLIST(187) in trade206.prg
Called from ADDR2QUEUE(124) in trade206.prg
Called from SALE2QUEUE(209) in trade206.prg
Called from MAKESALEDOCS(1816) in trade224.prg
Called from SALECONT2(593) in trade224.prg
Called from DBVIEW2(4807) in trade225.prg
Called from DO(0)
Called from ACHOICE(0) in ../../../achoice.prg
Called from DBVIEW(4784) in trade225.prg
Called from SALECONTROL(272) in trade224.prg
Called from CHECK4DAMAGE(963) in trade.prg
Called from MAIN(234) in trade.prg
------------------------------------------------------------------------

в Clipper я использовал в критичных местах шаманства наподобие MEMORY(-1) и FT_IamIdle()
В Harbour я естественно их убрал - полагал, что там, где раньше почти хватало 16 мегов памяти, в 1-2 гигабайтах будет где развернуться без проблем.
Похоже, что это не так.

Что нужно использовать для Harbour и в каких случаях ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 67 , стр: 1 2 3 4 All [только новые]


Администратор




Пост N: 3421
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 28.03.16 10:35. Заголовок: Паша а каковы могут ..



 цитата:
Паша а каковы могут быть причины что программа зависает на QUIT , он же __QUIT() ?



Да по quit выполняется много чего: это и dbCloseAll(), и освобождение памяти, и отработка exit-процедур.
В обычной ситуации никаких проблем быть не должно.
Я даже не скажу, как определить, деинициализация какого модуля глючит.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 487
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 31.03.16 16:48. Заголовок: Dima пишет: Паша а ..


Dima пишет:

 цитата:
Паша а каковы могут быть причины что программа зависает на QUIT , он же __QUIT() ?
У себя повторить не получилось , ловил зависон при входе на удаленный комп
через Team Viewer , раз 20.
Приложение точно зависает , так как в заголовке окна винда 7 пишет что приложение
не отвечает.



Я-бы начал с проверки всех самописных EXIT-процедур в программе.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5568
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 31.03.16 17:13. Заголовок: Sergy пишет: Я-бы н..


Sergy пишет:

 цитата:
Я-бы начал с проверки всех самописных EXIT-процедур в программе.


Их нет.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1202
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 31.03.16 17:51. Заголовок: Dima, а диск на той ..


Dima, а диск на той машине как себя чувствует? Посмотри S.M.A.R.T.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5697
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.06.16 09:43. Заголовок: И все же рандомно ви..


И все же рандомно висяк есть в MT приложении при __QUIT() , на разных машинах.
Попробовал перед __QUIT() такой код
 
hb_threadDetach( hb_threadStart( HB_THREAD_INHERIT_MEMVARS,@KillMYApl(),1500))


 
Func KillMYapl(msec)
local xs:=hb_MilliSeconds()

do while hb_MilliSeconds()-xs<msec
hb_releasecpu()
enddo
hb_threadQuitRequest(Ghpid) // Ghpid указатель главного потока приложения
return nil



Если на __QUIT() висяк , тогда этот поток не срабатывает хотя и отсоединен.
В диспетчере задач винда кажет что приложение висит.


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5698
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.06.16 21:38. Заголовок: Dima пишет: Если на..


Dima пишет:

 цитата:
Если на __QUIT() висяк , тогда этот поток не срабатывает хотя и отсоединен.


Вероятно до лампочки пытаться средствами самого приложения его же и убить в случае зависшего __QUIT() ,
так как он сам по ходу потоки и "убивает" живущие в этом приложении.
Убить можно только "извне" (или через hb_threadQuitRequest + Pid приложения) как и советовал Has в личной переписке.
Посему можно запустить внешнюю маленькую программу с передачей ей параметра в котором
будет жить указатель главного потока приложения , но есть проблема , у него VALTYPE равен "P" ,
каким образом его передать в качестве параметра скажем в WAPI_ShellExecute а в нем преобразовать
параметр из типа "C" в "P" ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 191
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 05.06.16 23:10. Заголовок: TASKLIST + TASKKILL


Получаем список процессов через TASKLIST ( можно в файл),
если находим в списке нужный процесс - удаляем также через внешний вызов - TASKKILL

TASKLIST имеет фильтры для выделения нужного потока.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 67 , стр: 1 2 3 4 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 86
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет