Bug 5293

Summary: CheckXML + Отрисовка окна отчетов
Product: WINE@Etersoft Reporter: Mikhail Krylatykh <delayer>
Component: Internet Explorer / GeckoAssignee: Andrey Vusik <night>
Status: CLOSED FIXED QA Contact: Денис Баранов <baraka>
Severity: critical    
Priority: P2 CC: js-box, kondratyuk, lav, night, shpigor, stas, svzhu, vitperov
Version: 1.0.12Keywords: ИНТЕРРА
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on: 3130    
Bug Blocks: 5991, 7199    
Attachments: сообщение об ошибке
следующее предупреждение
скриншот, описывающий ошибку
Скриншот winxp
Скриншот wine
Скриншот под wine после установки ie
Скриншот wine после исправления

Description Mikhail Krylatykh 2010-03-17 18:11:22 MSK
Имеется свежая (17,03,2010) версия CheckXML. Установка, запуск. проверка файлов - корректны, однако при попытке вывести на экран отчет после окончания тестирования файла окно "Результат тестирования" сразу открывается пустым (доступна только кнопка ОК внизу справа), или сначала выдается предупреждение (см. скрин ниже), а затем отображается пустое окно с результатами. 
Воспроизводится на двух Deb Lenny, wine12-4/3, wine12-3/2.
Comment 1 Mikhail Krylatykh 2010-03-17 18:11:55 MSK
Created attachment 1579 [details]
сообщение об ошибке
Comment 2 Mikhail Krylatykh 2010-03-17 18:12:16 MSK
Created attachment 1580 [details]
следующее предупреждение
Comment 3 Mikhail Krylatykh 2010-03-17 18:13:10 MSK
Created attachment 1581 [details]
скриншот, описывающий ошибку

Кнопка ОК активна, ее нажатие закрывает окно, и программа может работать дальше.
Comment 4 Mikhail Krylatykh 2010-04-08 10:22:20 MSD
Есть ли какие подвижки?
Comment 5 Илья Шпигорь 2010-04-08 10:48:35 MSD
to night@
Воспроизведи, пожалуйста, где-нибудь у нас в бутылке.
Comment 6 Andrey Vusik 2010-04-12 14:41:19 MSD
(In reply to comment #5)
> to night@
> Воспроизведи, пожалуйста, где-нибудь у нас
> в бутылке.
> 

Бутылка bugs/5293
Запускаем тестирование -- тестирование файла 2-НДФЛ -- и затем просмотр.
Comment 7 Mikhail Krylatykh 2010-05-06 14:39:53 MSD
Предалась забвению бага сия очевидно ;)
Comment 8 Илья Шпигорь 2010-05-06 14:47:18 MSD
Перевесил на багфикс. Теперь не потеряется :)
Comment 9 Илья Шпигорь 2010-05-07 16:34:54 MSD
Created attachment 1688 [details]
Скриншот winxp
Comment 10 Илья Шпигорь 2010-05-07 16:35:30 MSD
Created attachment 1689 [details]
Скриншот wine
Comment 11 Илья Шпигорь 2010-05-07 16:36:38 MSD
> Бутылка bugs/5293
> Запускаем тестирование -- тестирование
> файла 2-НДФЛ -- и затем просмотр.

Воспроизвел. Выложил 2 скриншота в windows и wine. Различие в том, что не хватает контрола с текстом.

Это та проблема про которую заводилась бага?
Comment 12 Mikhail Krylatykh 2010-05-07 17:11:05 MSD
Очевидно, да. После проверки документа программой должен выводиться отчет с описанием косяков этого документа. А не выводится...
Comment 13 Илья Шпигорь 2010-05-11 12:57:44 MSD
Created attachment 1690 [details]
Скриншот под wine после установки ie

После установки ie:
ieinstall

Контролы на формах отчетов начали отображаться, но не перерисовываются.
Comment 14 Илья Шпигорь 2010-05-11 13:11:18 MSD
Для решения проблемы надо:

1. поставить IE
2. откатить коммит:

commit 6770e9a680ff477176349e708d03fee42c6b2f18
Author: Vitaly Perov <vitperov@etersoft.ru>
Date:   Tue Feb 24 20:43:15 2009 +0300

    user32: prevent crash 1c80 when create html document (eterbug #3130)

Тестировать можно в той же бутылке - bugs/5293, там уже стоит IE.

Передаю Виталику, для решения что делать с этим коммитом.
Comment 15 Константин Кондратюк 2010-05-11 13:34:43 MSD
Я так понимаю, что хак однозначно нужно откатывать, как только доказано, что он что-то ломает.

Мне не очень нравится обязательность установки IE для решения второй части проблемы...
Comment 16 Mikhail Krylatykh 2010-05-11 16:02:24 MSD
солидарен, хотелось бы без эксплорера
Comment 17 Илья Шпигорь 2010-05-12 12:44:31 MSD
Чтобы починить багу от explorer'а нужны только dll-ки:
mshtml.dll
shdocvw.dll
shlwapi.dll

Надо смотреть что в них не так. На самом деле, судя по трейсам, при работе программы вызывается куча заглушек из shdocvw. Это может быть как-то связано с ошибкой.
Comment 18 Константин Кондратюк 2010-05-12 13:11:25 MSD
(In reply to comment #17)
> Чтобы починить багу от explorer'а нужны только
> dll-ки:
> mshtml.dll
> shdocvw.dll
> shlwapi.dll

По сути, это и есть вайновская реализация почти всего html. 
Вообще, это уже в сторону mshtml бага уходит.

Comment 19 Илья Шпигорь 2010-05-12 13:37:10 MSD
Лог перед ошибкой:

fixme:shdocvw:OleControl_FreezeEvents (0x1727d8)->(1)
fixme:shdocvw:PersistStreamInit_Load (0x1727d8)->(0x16f760)
fixme:shdocvw:WebBrowser_QueryInterface (0x1727d8)->({0000011d-0000-0000-c000-000000000046} 0x32b8e8) interface not supported
fixme:shdocvw:OleObject_GetUserClassID (0x1727d8)->(0x32b8c0)
fixme:shdocvw:ViewObject_SetAdvise (0x1727d8)->(1 00000000 0x1620458)
fixme:shdocvw:OleObject_Advise (0x1727d8)->(0x1620458, 0x32b8d0)
fixme:shdocvw:WebBrowser_QueryInterface (0x1727d8)->({0000010e-0000-0000-c000-000000000046} 0x32b8ec) interface not supported
fixme:shdocvw:PersistStorage_GetClassID (0x1727d8)->(0x32b968)
fixme:shdocvw:OleInPlaceObject_InPlaceDeactivate (0x1727d8)
fixme:shdocvw:OleObject_Close (0x1727d8)->(1)
fixme:shdocvw:OleObject_Close (0x1727d8)->(1)
fixme:shdocvw:ViewObject_SetAdvise (0x1727d8)->(0 00000000 (nil))

Это может быть как-то связано с интерфейсом IDataObject (0000011e-0000-0000-c000-000000000046) или IOleLink (0000011d-0000-0000-C000-000000000046), которые не поддерживаются?
Comment 20 Илья Шпигорь 2010-05-13 12:28:52 MSD
Коммит на багу #3130 решили откатить после того как удастся решить эту проблему.
Comment 21 Илья Шпигорь 2010-05-13 14:28:30 MSD
Реализовал интерфейс IDataObject для IWebBrowser. Все функции, кроме QueryInterface, AddRef и Release - заглушки.

Не помогло - бага воспроизводится точно так же как и раньше.
Comment 22 Илья Шпигорь 2010-05-13 14:58:14 MSD
Реализовал интерфейс IOleLink для IWebBrowser.

Стало лучше - ошибка, как на скриншоте:
http://bugs.etersoft.ru/attachment.cgi?id=1579

перестала выводиться.

Но контролы на форме по прежнему не отображаются.
Comment 23 Vitaly Lipatov 2010-05-13 15:20:42 MSD
(In reply to comment #22)
...
> Но контролы на форме по прежнему не
> отображаются.
Видимо, они через эти интерфейсы и должны отображаться? И надо их реализовывать? 

Comment 24 Илья Шпигорь 2010-05-13 15:39:32 MSD
> Видимо, они через эти интерфейсы и должны
> отображаться? И надо их реализовывать? 

Похоже, что да. 

Пробовал подменить только mshtml.dll и shlwapi.dll из iexplore, а shdocvw оставил пропатченный wine-овский. Контролы не отображаются, сообщений об ошибках нет. Значит, дело именно в shdocvw.dll и его интерфейсах.

Comment 25 Илья Шпигорь 2010-05-13 16:37:16 MSD
Выяснил - за отрисовку контролов отвечает IViewObject::Draw. Именно его и надо реализовать.
Comment 26 Илья Шпигорь 2010-05-18 15:24:55 MSD
Выложил группу патчей.

Проблема, помимо нереализованных интерфейсов IDataObject и IOleLink, заключалось в том, что при создании окна "Shell Embedding", которое является родительским окном для контролов IE, ему назначались размеры 0x0. Т.е. все необходимые контролы создаются корректно, но контейнер в который они размещаются, имеет неправильные размеры и не видим.

Решение заключается в реализации интерфейсов IDataObject и IOleLink.
В функции ViewObject_Draw добавлен вызов SetWindowPos, который изменяет размеры окна "Shell Embedding" и делает его видимым.

Коммит откатывать не надо:

commit 6770e9a680ff477176349e708d03fee42c6b2f18
Author: Vitaly Perov <vitperov@etersoft.ru>
Date:   Tue Feb 24 20:43:15 2009 +0300

    user32: prevent crash 1c80 when create html document (eterbug #3130)

т.к. в моей реализации ViewObject_Draw событие EVENT_OBJECT_SHOW не посылается. Перерисовка организуется через RedrawWindow.
Comment 27 Илья Шпигорь 2010-05-18 15:27:25 MSD
Created attachment 1703 [details]
Скриншот wine после исправления
Comment 28 Mikhail Krylatykh 2010-05-18 16:05:32 MSD
То есть счастье уже очень-очень близко?
Comment 29 Илья Шпигорь 2010-05-19 10:55:55 MSD
(In reply to comment #28)
> То есть счастье уже очень-очень близко?

Патч должен войти в следующую тестовую сборку.

Comment 30 Mikhail Krylatykh 2010-05-19 11:06:12 MSD
Отлично, дайте знать, когда сборочка выйдет.
Comment 31 Константин Кондратюк 2010-05-20 11:13:29 MSD
(In reply to comment #30)
> Отлично, дайте знать, когда сборочка
> выйдет.

Для такой информации лучше сразу сюда подписаться:
http://lists.etersoft.ru/mailman/listinfo/wine-announce
Comment 32 Mikhail Krylatykh 2010-05-20 21:20:53 MSD
;)
Bug in Mailman version 2.1.12

We're sorry, we hit a bug!

Please inform the webmaster for this site of this problem. Printing of traceback and other system information has been explicitly inhibited, but the webmaster can find this information in the Mailman error logs.
Comment 33 Mikhail Krylatykh 2010-05-20 21:24:18 MSD
Но подписка прошла
Comment 34 Vitaly Lipatov 2010-05-20 21:30:48 MSD
(In reply to comment #32)
> ;)
> Bug in Mailman version 2.1.12
> 
> We're sorry, we hit a bug!
Конечно не место для обсуждения... Раньше такое было при указании русского имени, а сейчас даже не знаю...
Прошла и раньше.
Comment 35 Mikhail Krylatykh 2010-06-30 11:42:26 MSD
Может, конечно, еще не перекочевало исправление из testing в релиз... Но в  1.0.12-eter6.1/9 (тестовая сборка, если я не ошибаюсь) на Lenny окно отчета так и не рисуется.
Comment 36 Денис Баранов 2010-07-01 03:43:52 MSD
(In reply to comment #35)
> Может, конечно, еще не перекочевало
> исправление из testing в релиз... Но в  1.0.12-eter6.1/9
> (тестовая сборка, если я не ошибаюсь) на Lenny
> окно отчета так и не рисуется.
> 

Должно быть все хорошо, патч судя по changelog вошел еще в 
* May 29 2010 Vitaly Lipatov <lav@altlinux.ru> 1.0.12-alt6
- shdocvw: Added IOleLink stub implementation (eterbug #5293)
- shdocvw: Added IDataObject stub implementation (eterbug #5293)
- shdocvw: Resize and redraw the "Shell Embedding" window in the ViewObject_Draw processing (eterbug #5293)
Comment 37 Mikhail Krylatykh 2010-07-01 09:21:11 MSD
Проверю на другом Дебе...
Comment 38 Mikhail Krylatykh 2010-07-01 10:47:25 MSD
WINE@Etersoft 1.0 Network 1.0.12-eter6/8 на двух разных серверах с Lenny, а также на рабочей станции с 10.04 симптоматика одна: ставится, запускается, работает (после установки winetricks jet40), окно отчета выдает, но отрисовать его внутренности не может. Закрыть это недорисованное окно позволяет, ничего не висит, можно дальше работать. Повторная попытка проанализировать тот же или иной файл проходит успешно, окно отчета ведет себя аналогично.
Comment 39 Илья Шпигорь 2010-07-01 10:54:24 MSD
Переоткрываю багу.
Сейчас контролы отрисовываются, но приложение не может в них ничего записать.
Comment 40 Mikhail Krylatykh 2010-07-21 12:13:58 MSD
на eter12-6/11 все по-прежнему. хотя, думаю, и без меня это известно. надо допилить да внедрять тогда checkxml всем подряд...
Comment 41 JuryS 2010-10-09 23:29:33 MSD
(In reply to comment #38)
> WINE@Etersoft 1.0 Network 1.0.12-eter6/8 на двух разных
> серверах с Lenny, а также на рабочей станции с
> 10.04 симптоматика одна: ставится,
> запускается, работает (после установки
> winetricks jet40), окно отчета выдает, но
> отрисовать его внутренности не может.
> Закрыть это недорисованное окно позволяет,
> ничего не висит, можно дальше работать.
> Повторная попытка проанализировать тот же
> или иной файл проходит успешно, окно отчета
> ведет себя аналогично.
> 

Доброго времени суток ! 
Wine Etersoft некорректно устанавливает Wine Gecko. Необходимо выполнить wine regsvr32 mshtml. 

После этого отчеты будут видны.
Comment 42 Mikhail Krylatykh 2011-01-21 12:11:08 MSK
Не работает отрисовка отчетов. Все по-прежнему на 7/12
установлен ie, gecko, хинт regsvr32 mshtml также проделывал - без изменений.
Comment 43 Mikhail Krylatykh 2011-01-21 16:20:23 MSK
В сборке 1.0.12-eter7.42/15 внезапно все работает. Удалось проверить файл, посомтреть отчет, и мпрямо из интерфейса программы скачать свежую ее версию.
Comment 44 Vitaly Lipatov 2011-01-23 16:20:23 MSK
Интересно, получится ли воспроизвести при установке с нуля.
Comment 45 Денис Баранов 2011-02-08 17:50:41 MSK
Нужно проверить на 1.0.12 eter8/eter18
Comment 46 Andrey Vusik 2011-02-22 15:52:18 MSK
(В ответ на comment #45)
> Нужно проверить на 1.0.12 eter8/eter18

Отчет выводится. Вид просмотра, как в Windows
Comment 47 Денис Баранов 2011-02-23 18:32:00 MSK
Принято.
(В ответ на comment #46)
> Отчет выводится. Вид просмотра, как в Windows
Comment 48 Svetlana Zhukova 2011-04-21 13:44:30 MSK
бутылка wine@cellar bottle bugs/5293

WINE@Etersoft 1.0 SQL 1.0.12-eter10.3/19

проблема сохраняется, окошко пустое.

--

в git  WINE@Etersoft version 1.3.13-eter1.4
программа вообще не запускается.
Comment 49 Svetlana Zhukova 2011-04-21 14:03:14 MSK
Новая бутылка wine@cellar bottle bugs/5293a

WINE@Etersoft 1.0 SQL 1.0.12-eter10.3/19

Все работает нормально.
Comment 50 Виталий Перов 2011-04-26 16:30:04 MSK
Ой, давайте определимся какую именно багу блокирует данная бага: 42 или 5991.
От этого зависит метод проверки.
Нельзя проверить багу только для 1.0.12 и сказать, что всё работает в текущем eterhack, или наоборот.

Как я понял, в 1.0.12 всё работает?
Тогда создаю отдельную багу для текущей версии eterhack.