uralplan / psi-dev

Automatically exported from code.google.com/p/psi-dev
0 stars 0 forks source link

Зависание интерфейса при копировании в буфер обмена большого фрагмента данных #591

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
[09:31:27] <Norst> 
В продолжение 
http://chatlogs.jabber.ru/****************************/2014/09/15.html#22:04:59.
657220
Как воспроизвести:
1) Запустить клиент, открыть окно чата 
(приват или групчат значения не имеет)
2) Скопировать в буфер обмена существенный 
объем текстовых данных с переводом строк 
CRLF (десятки Mb, см. далее)
*пункт 1 и 2 можно поменять местами, в этом 
случае подвисание/краш произойдет в момент 
открытия окна чата.
[09:32:12] <Norst> 
Что ожидается:
Отсутствие реакции со стороны клиента, 
продолжение работы в нормальном режиме.
Клиент не должен при изменении буфера 
обмена получать его 
содержимое/обрабатывать данные.
[09:33:33] <Norst> 
Результат по факту:
-при копировании 50 Mb данных:
1) Клиент на 100% загружает процессор (1 поток) 
2) Интерфейс фризится, связь с сервером 
теряется
3) Потребления памяти возрастает с ~50 до ~400 Mb 
4) Через некоторое время (в зависимости от 
скорости ЦП) загрузка нормализуется, 
клиент оживает, а потребеление памяти 
уменьшается до ~150 Mb
5) При очистке буфера обмена (копирования 
несущественного объема данных) 
потребление памяти возвращается к 
номинальному.
[09:33:55] <Norst> 
-при копировании 200 Mb данных:
Краш, VC++ Runtime error (Faulting module name: QtCore4.dll)
[09:34:07] <Norst> 
Тестовые данные:
Для примера: 
http://geolite.maxmind.com/download/geoip/database/GeoLite2-City-CSV.zip
200Mb, приводит к крашу: GeoLite2-City-Blocks.csv
50Mb, перевод строки CRLF, результат описан 
выше: head -c 50M GeoLite2-City-Blocks.csv | sed '$!s/$/\r/' > test1.txt
50Mb, перевод строки LF, подвисание 
практически отсутсвует: head -c 50M 
GeoLite2-City-Blocks.csv > test2.txt

Проверка выполнена на Win8 x64, Win7 x64, WinXP x86
[10:05:52] <Norst> Да, версия клиента Psi+ v0.16.361 (2014-05-02)

От себя добавлю, что проверил на сборке 
Кукурузы - воспроизводится.

Original issue reported on code.google.com by wadea...@gmail.com on 16 Sep 2014 at 8:02

GoogleCodeExporter commented 8 years ago
[21:16:56] <Norst> и да, на psi (не плюс) такая 
проблема отсутствует

Original comment by wadea...@gmail.com on 16 Sep 2014 at 12:24

GoogleCodeExporter commented 8 years ago
Немного поменял способ проверки наличия 
текста в буфере обмена. Проверяйте.

Original comment by drizt@land.ru on 16 Sep 2014 at 7:10

GoogleCodeExporter commented 8 years ago
Собрал свежую ночнушку с данным фиксом, 
http://sourceforge.net/projects/psiplus/files/MS-Windows/Nightly-Builds/psi-plus
-0.16.382-win32.7z/download

Original comment by vladimir.shelukhin on 17 Sep 2014 at 8:18

GoogleCodeExporter commented 8 years ago
[22:17:44] <Norst> Всем спасибо за оперативное 
решение бага с буфером. На 0.16.382 не 
воспроизводится, clipboard->text() был виновником. 
для меня fixed.

Original comment by tehnic...@yandex.ru on 17 Sep 2014 at 7:27