Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: Racheengel от Июнь 10, 2015, 16:45



Название: Memory Leak в сборке Qt 5.3.x 64bit под Windows 7
Отправлено: Racheengel от Июнь 10, 2015, 16:45
Добрый день, уважаемые,

был замечен такой феномен: программы, собранные с Qt 5.3.x в 64-битной конфигурации под Windows 7 постоянно отжирают память при отрисовке чего-либо. ТОТ ЖЕ САМЫЙ код, собранный теми же компиляторами на той же машине в 32-битном варианте таких проблем не имеет.

Проверялось с MSVC 2008 и 2013, результаты одинаковые: 32 бита все ок, 64 бита - дикие утечки памяти.

Сталкивались ли вы с подобным? Можно побороть? Гугл ответа пока не дал...


Название: Re: Memory Leak в сборке Qt 5.3.x 64bit под Windows 7
Отправлено: Bepec от Июнь 10, 2015, 17:22
Вариант, что вы не учитываете разный размер типов 32 и 64 архитектур, подходит или нет?

Тот же sizeof (int) на 32 будет 4, на 64 будет 8, а указатели вроде бы будут иметь размер 64 бита.

PS это именно утечки, или просто большее потребление ресурсов?


Название: Re: Memory Leak в сборке Qt 5.3.x 64bit под Windows 7
Отправлено: __Heaven__ от Июнь 10, 2015, 17:41
sizeof (int) на 32 будет 4, на 64 будет 8, а указатели вроде бы будут иметь размер 64 бита.

Не совсем так...
int везде 32 бита. Меняется только размер указателя с 32 на 64 бита.


Название: Re: Memory Leak в сборке Qt 5.3.x 64bit под Windows 7
Отправлено: Bepec от Июнь 10, 2015, 17:45
Не везде. На некоторых архитектурах он именно 8.
К примеру на моём старом рабочем компьютере, AMD-шке, он как раз менялся от 4 до 8.


Название: Re: Memory Leak в сборке Qt 5.3.x 64bit под Windows 7
Отправлено: Racheengel от Июнь 10, 2015, 17:49
Вариант, что вы не учитываете разный размер типов 32 и 64 архитектур, подходит или нет?
Нет, мы не делаем ничего специфичного для 32 бит архитектуры.

Цитировать
PS это именно утечки, или просто большее потребление ресурсов?
Ну а в чем разница то? Если ресурсы потребляются чрезмерно - это и есть по сути "утечка". В 32-битном варианте, например, расход памяти доходил до 600 мб и далее не рос, а в 64-битном доходит до 2 гб, потом замедляется, но все равно медленно ползет вверх.

Тут https://bugs.launchpad.net/stellarium/+bug/1406005 тоже у народа подобная проблема только на 64 битах и только под виндой, отжирание прекращается, когда они отрисовку выключают...


Название: Re: Memory Leak в сборке Qt 5.3.x 64bit под Windows 7
Отправлено: __Heaven__ от Июнь 10, 2015, 20:55
Bepec, мне известно, что на x32 и x64 размер инта 4. Вы про какие-то специфичные говорите архитектуры?


Название: Re: Memory Leak в сборке Qt 5.3.x 64bit под Windows 7
Отправлено: Racheengel от Июнь 11, 2015, 00:19
Ну на Интелах на x32 и x64 размер интов 4 байта - факт. Но Верес говорит про АМД, я так понял.

ЗЫ. у нас проблема на Интелах возникает, так что не в размере интов дело :(


Название: Re: Memory Leak в сборке Qt 5.3.x 64bit под Windows 7
Отправлено: Alex Custov от Июнь 11, 2015, 00:35
Не везде. На некоторых архитектурах он именно 8.

Это зависит от модели данных, используемой компилятором. Может быть 4, а может и 8, в зависимости от компилятора для данной архитектуры.


Название: Re: Memory Leak в сборке Qt 5.3.x 64bit под Windows 7
Отправлено: Bepec от Июнь 11, 2015, 00:48
Кстати да, замечание Alex Gustov напомнило - в VS 2008 на i7 int тоже становился 8.
PS и да, в предыдущем сообщении я и говорил об AMD, мб просто кого то спугнула русская транскрипция :)


Название: Re: Memory Leak в сборке Qt 5.3.x 64bit под Windows 7
Отправлено: Racheengel от Июнь 11, 2015, 01:38
Нативный компилятор генерирует код под конкретную архитектуру, он не может сгенерить 8-битовый инт под таргет интел, который поддерживает только 4 бита. Иначе это кросс-компиляция.


Название: Re: Memory Leak в сборке Qt 5.3.x 64bit под Windows 7
Отправлено: Bepec от Июнь 11, 2015, 02:08
Я лично компилил программу sizeof(int). На 64 выдавало 8.
Но не суть.
По всей видимости имеет место именно баг в Qt. Надо бы поразбираться конечно, но не могу - уезжаю отдыхать :D


Название: Re: Memory Leak в сборке Qt 5.3.x 64bit под Windows 7
Отправлено: __Heaven__ от Июнь 11, 2015, 09:27
интересно...  :P у меня всегда был intel  :)