Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Ошибки памяти в кибор

Страниц (1): [1]
 

1. wotres2 - 13 Декабря, 2024 - 03:59:47 - перейти к сообщению
Доброго времени.

Столкнулся с проблемой, есть скрипт, приложен ниже, скрипт для отладки, чекает объекты на пуле скринов и логирует.

'''
int min_col=1;//кол-во необходимых цветов для нахождения
int r=0; // разбежность
int color[2]; // массив под цвета
int kol[2]; // кол-во пиеселей для каждлгов цвета
int x[50], y[50]; // массив под запись координат
int k;
int n=1;
int Image[1366][768]; // массив под загрузку изображения
int x_s_map=1162;
int x_f_map=1278;
int y_s_map=592;
int y_f_map=700;
int kol_obj=0;
int kol_obj1=0;
int kol_obj2=0;
int forn1;
int forn2;
int errorevent[280];
int manyevent[280];

color[0]=16757601; color[1]=0;//заполенние массива
kol[0]=10; kol[1]=5;//Тут сколько должно совпасть пикселей для каждого цвета

loop(270)
{

sleep(10);
loadimage (#Image[0][0], "C:\screenDDR\12.12.24\screen12.12.24."+format(n)+".bmp");

k=findheapcolor(20, #color[0], #kol[0], 1, min_col, #x[0], #y[0], 15, 15, 20, 20, x_s_map, y_s_map, x_f_map, y_f_map, r, r, r, r, r, r, #Image[0][0]);

if (k==1)
{
kol_obj++;
}

if (k<1)
{
kol_obj1++;
errorevent[kol_obj1]=n;
}

if (k>1)
{
kol_obj2++;
manyevent[kol_obj2]=n;
}

n++;


}

messagebox (format(kol_obj)+" найдено объектов");
messagebox (format(kol_obj1)+" не найдено объектов");
messagebox (format(kol_obj2)+" найдено множества объектов");

for (forn1=0; forn1<kol_obj1; forn1++)
{

messagebox (format(errorevent[forn1])+" скриншот с ошибкой поиска");

}

for (forn2=0; forn2<kol_obj2; forn2++)
{

messagebox (format(errorevent[forn1])+" скриншот с множеством объектов");

}
'''

Поведение кибора:

1. Первый запуск.
1.1. Потребление 55мб вырастает до 1гб.
1.2 Скрипт отрабатывает успешно.

2. Второй запуск.
2.1. Потребление 1гб вырастает до 1.6гб (предполагаю - это крит)
2.2. Взлетает диалоговое окно Image file conversion error
2.2.1 Если прокликивать, окно то необходимо прокликать то кол-во раз, сколько цикл не смог отработать.
2.2.2 При остановке скрипта кибор не падает, но при дальнейших стартах продолжает выдавать ошибку.
2.2.3 При нажатии на любое действие в шапке окна программы кибор, кибор рассыпается.

Играл с операторами new и delete, результат 0
2. Kibor - 13 Декабря, 2024 - 04:02:39 - перейти к сообщению
loadimage вынесите вверх скрипта. Он отработать один раз должен
3. wotres2 - 13 Декабря, 2024 - 04:11:27 - перейти к сообщению
 Kibor пишет:
loadimage вынесите вверх скрипта. Он отработать один раз должен


Это разрушит логику скрипта, в цикле меняется имя подгружаемой картинки, чтобы пройтись по 270 разным изображениям
я почему то подумал, что данная функция обращаясь к одному массиву должна использовать и перезаписывать одну и туже область выделенной памяти, но как итог он вгружает всё.

Подскажите, как правильно реализовать этот функционал, чтобы не возникло проблем на парсинге 1000 изображений?
4. Zireael - 13 Декабря, 2024 - 04:26:05 - перейти к сообщению
 Цитата:
loadimage вынесите вверх скрипта. Он отработать один раз должен

Сомневаюсь что в этом проблема. Это же не база символов, которая постоянно дополняется.
 Цитата:
int Image[1366][768]; // массив под загрузку изображения

Все изображения меньшего размера? Может какое-то больше и не помещается в массив.
Добавьте после loadimage:
CODE:
messagebox(n);

После загрузки какого изображения появляется ошибка?
5. wotres2 - 13 Декабря, 2024 - 04:31:40 - перейти к сообщению
 Zireael пишет:
 Цитата:
loadimage вынесите вверх скрипта. Он отработать один раз должен

Сомневаюсь что в этом проблема. Это же не база символов, которая постоянно дополняется.
 Цитата:
int Image[1366][768]; // массив под загрузку изображения

Все изображения меньшего размера? Может какое-то больше и не помещается в массив.
Добавьте после loadimage:
CODE:
messagebox(n);

После загрузки какого изображения появляется ошибка?


Уточню: наблюдаю это со вчера, собственно когда скрипт и собрал

Повторюсь:

1. При первом запуске скрипта после запуска программы ошибок НЕТ.
2. При повторном запуске скрипта в той же сессии программы ошибка не на конкретном изображении, а при условии, что процесс Кибор превысил потребление памяти 1500 мб.
3. Т.е. при третьем запуске скрипта, Потребление памяти не меняется и сразу появляется ошибка "Image file conversion error"

После перезапуска программы - всё заново по пунктам)
6. Zireael - 13 Декабря, 2024 - 04:44:28 - перейти к сообщению
Описывать одно и тоже несколько раз смысла нет.
Потребление памяти до 1.5 гб, такого не должно быть.
Я написал с чего начать поиск проблемы.
Также можно убрать из скрипта часть кода и посмотреть в какой момент пропадёт ошибка.
7. wotres2 - 13 Декабря, 2024 - 04:59:37 - перейти к сообщению
 Zireael пишет:
Описывать одно и тоже несколько раз смысла нет.
Потребление памяти до 1.5 гб, такого не должно быть.
Я написал с чего начать поиск проблемы.
Также можно убрать из скрипта часть кода и посмотреть в какой момент пропадёт ошибка.


Доубирал код до вида:

int n=1;
int Image[1367][769]; // массив под загрузку изображения

loadimage (#Image[0][0], "C:\screenDDR\12.12.24\screen12.12.24."+format(n)+".bmp"Подмигивание;


Итог - то же поведение, только малыми шагами, при каждом запуске кипод догружает в себя по 4 мб (и не отпускает) и так растет в потреблении при каждом запуске, не хочу 500 раз запускать скрипт чтобы довести до критической отметки в потреблении памяти.

Думаю можно успокоиться и смириться с фатом такого функционала)
8. Zireael - 13 Декабря, 2024 - 05:10:47 - перейти к сообщению
Тогда только ждать исправления бага.
9. Kibor - 13 Декабря, 2024 - 07:51:17 - перейти к сообщению
Исправил.

Powered by ExBB FM 1.0 Final