![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 13.01.2010
Сообщений: 121
|
![]()
Доброго времени суток уважаемые форумчане.
Столкнулся с проблемой. Взял последнюю версию модуля для работы с потоками отсюда, переписал исходник (убрал все утечки памяти путем удаления из него глюкавых InDy, заменив им на привычный мне Synapse). Осталась проблема, при запуске одного потока, мой исходник работает нормально (и утечек памяти нет), но при одновременном запуске более одного потока программа вываливается с AV: https://image.prntscr.com/image/rRsR...wechPSPfMA.png Потоки запускаются таймером, таймер запуска потоков следит за текущим количеством потоков, и если оно меньше заданного в настройках программы, то таймер создает дополнительный поток. вот кусок кода с запуском потоков, думаю что тут все в полном порядке: Код:
Основной код работы с потоками реализован в модуле uGetHttpThread.pas, вчера несколько часов потратил на выявление бага, но увы ничего не вышло. Вся надежда на Вас. Исходник максимально упростил и выкинул все лишнее чтоб глаза не мозолило. Спасибо всем за любую помощь в решении данной проблемы. Сам исходник - http://myfiles.pro/uploads/684539109.FORUM.rar |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
![]()
Что-то как-то стрёмно качать с непровернного ресурса, на который даже Гугля ругается, что там вирус недавно нашли
![]() Ну и по коду: Код:
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Последний раз редактировалось Sciv; 22.11.2017 в 11:23. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 13.01.2010
Сообщений: 121
|
![]()
Скажите куда залить, перезалью, на форум залить не получается.
Хотя удивительно, что ругается, у меня с хромом при заходе на файлообменник никаких проблем нет, да и в архиве бинарников тоже нету. https://mega.nz/#!3YUAyBTJ!GLEOUBifJ...eZJc0JUvsgbFks http://ge.tt/6lNIORn2 Последний раз редактировалось denis76560; 22.11.2017 в 11:29. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
![]()
dll-ки есть
![]() А хром ругается не потому что именно в Вашем архиве вирус, а потому что "недавно на этом файлообменнике были обнаружены вирусы". Это типа предупреждение такое.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
|
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 13.01.2010
Сообщений: 121
|
![]() Цитата:
Если они вызывают у Вас сомнения, можете их смело удалить, они там нужны только для возможности работать с HTTPS (SSL) протоколом. Насчет синхронизации и критических секций, там это все уже прописано. Последний раз редактировалось denis76560; 22.11.2017 в 12:12. |
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
![]()
Да нет, я в курсе, что это за dll.
В общем, запустил программу, вылетает у меня на AbortClose, вот тут: Код:
UPDATE. Кажется, последний вопрос надо адресовать не Вам, а разработчикам синапсов. Как и необходимость создания целого класса для вот этого: Код:
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Последний раз редактировалось Sciv; 22.11.2017 в 12:19. |
![]() |
![]() |
![]() |
#7 | |
Форумчанин
Регистрация: 13.01.2010
Сообщений: 121
|
![]()
Син
Цитата:
Попробовал так Код:
|
|
![]() |
![]() |
![]() |
#8 | ||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,822
|
![]() Цитата:
Цитата:
|
||
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 13.01.2010
Сообщений: 121
|
![]()
Полагаю, что тут дело не в библиотеке Synapse, а в работе с потоками (вероятно с завершением потока). Так как с одним потоком все работает нормально и без глюков, без утечек памяти приложения. А вот работа двух и более потоков приводит к данной ошибке.
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
![]()
Согласен. На самом деле вся эта конструкция предназначена как раз для очистки памяти, которая выделяется для хранения параметров. Которые хранятся (почему-то) в вышеназванном классе. ИМХО авторы придумали лишнего геморроя на свою ...
Хотя в других исходниках не смотрел, не исключено, что этот класс где-то и наследуется. В данном случае в какой-то момент программа пытается очистить памяти больше, чем она выделила (то есть для двух потоков создаётся два сокета, но очистить она пытается памяти на параметры для трёх сокетов). По крайней мере, под дебагом у меня так и произошло: для двух запущенных потоков три раза программа попадала в эту процедуру, два первых, что вполне естественно, отработали, третий упал.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
|
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с потоками | UKRtortik | Общие вопросы Delphi | 14 | 01.03.2014 12:16 |
Проблема с потоками | Dremst | Общие вопросы Delphi | 5 | 17.02.2014 15:14 |
Проблема с потоками | Bax77 | Общие вопросы Delphi | 3 | 29.01.2013 16:11 |
Проблема с потоками | vlad.md | Мультимедиа в Delphi | 0 | 07.03.2012 22:55 |
Проблема с потоками | vitalik007 | Общие вопросы Delphi | 1 | 11.03.2008 22:35 |