Summary: | CheckXML + Отрисовка окна отчетов | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Mikhail Krylatykh <delayer> |
Component: | Internet Explorer / Gecko | Assignee: | 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.12 | Keywords: | ИНТЕРРА |
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
Created attachment 1579 [details]
сообщение об ошибке
Created attachment 1580 [details]
следующее предупреждение
Created attachment 1581 [details]
скриншот, описывающий ошибку
Кнопка ОК активна, ее нажатие закрывает окно, и программа может работать дальше.
Есть ли какие подвижки? to night@ Воспроизведи, пожалуйста, где-нибудь у нас в бутылке. (In reply to comment #5) > to night@ > Воспроизведи, пожалуйста, где-нибудь у нас > в бутылке. > Бутылка bugs/5293 Запускаем тестирование -- тестирование файла 2-НДФЛ -- и затем просмотр. Предалась забвению бага сия очевидно ;) Перевесил на багфикс. Теперь не потеряется :) Created attachment 1688 [details]
Скриншот winxp
Created attachment 1689 [details]
Скриншот wine
> Бутылка bugs/5293
> Запускаем тестирование -- тестирование
> файла 2-НДФЛ -- и затем просмотр.
Воспроизвел. Выложил 2 скриншота в windows и wine. Различие в том, что не хватает контрола с текстом.
Это та проблема про которую заводилась бага?
Очевидно, да. После проверки документа программой должен выводиться отчет с описанием косяков этого документа. А не выводится... Created attachment 1690 [details]
Скриншот под wine после установки ie
После установки ie:
ieinstall
Контролы на формах отчетов начали отображаться, но не перерисовываются.
Для решения проблемы надо: 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. Передаю Виталику, для решения что делать с этим коммитом. Я так понимаю, что хак однозначно нужно откатывать, как только доказано, что он что-то ломает. Мне не очень нравится обязательность установки IE для решения второй части проблемы... солидарен, хотелось бы без эксплорера Чтобы починить багу от explorer'а нужны только dll-ки: mshtml.dll shdocvw.dll shlwapi.dll Надо смотреть что в них не так. На самом деле, судя по трейсам, при работе программы вызывается куча заглушек из shdocvw. Это может быть как-то связано с ошибкой. (In reply to comment #17) > Чтобы починить багу от explorer'а нужны только > dll-ки: > mshtml.dll > shdocvw.dll > shlwapi.dll По сути, это и есть вайновская реализация почти всего html. Вообще, это уже в сторону mshtml бага уходит. Лог перед ошибкой: 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), которые не поддерживаются? Коммит на багу #3130 решили откатить после того как удастся решить эту проблему. Реализовал интерфейс IDataObject для IWebBrowser. Все функции, кроме QueryInterface, AddRef и Release - заглушки. Не помогло - бага воспроизводится точно так же как и раньше. Реализовал интерфейс IOleLink для IWebBrowser. Стало лучше - ошибка, как на скриншоте: http://bugs.etersoft.ru/attachment.cgi?id=1579 перестала выводиться. Но контролы на форме по прежнему не отображаются. (In reply to comment #22) ... > Но контролы на форме по прежнему не > отображаются. Видимо, они через эти интерфейсы и должны отображаться? И надо их реализовывать? > Видимо, они через эти интерфейсы и должны
> отображаться? И надо их реализовывать?
Похоже, что да.
Пробовал подменить только mshtml.dll и shlwapi.dll из iexplore, а shdocvw оставил пропатченный wine-овский. Контролы не отображаются, сообщений об ошибках нет. Значит, дело именно в shdocvw.dll и его интерфейсах.
Выяснил - за отрисовку контролов отвечает IViewObject::Draw. Именно его и надо реализовать. Выложил группу патчей. Проблема, помимо нереализованных интерфейсов 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. Created attachment 1703 [details]
Скриншот wine после исправления
То есть счастье уже очень-очень близко? (In reply to comment #28) > То есть счастье уже очень-очень близко? Патч должен войти в следующую тестовую сборку. Отлично, дайте знать, когда сборочка выйдет. (In reply to comment #30) > Отлично, дайте знать, когда сборочка > выйдет. Для такой информации лучше сразу сюда подписаться: http://lists.etersoft.ru/mailman/listinfo/wine-announce ;) 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. Но подписка прошла (In reply to comment #32) > ;) > Bug in Mailman version 2.1.12 > > We're sorry, we hit a bug! Конечно не место для обсуждения... Раньше такое было при указании русского имени, а сейчас даже не знаю... Прошла и раньше. Может, конечно, еще не перекочевало исправление из testing в релиз... Но в 1.0.12-eter6.1/9 (тестовая сборка, если я не ошибаюсь) на Lenny окно отчета так и не рисуется. (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) Проверю на другом Дебе... WINE@Etersoft 1.0 Network 1.0.12-eter6/8 на двух разных серверах с Lenny, а также на рабочей станции с 10.04 симптоматика одна: ставится, запускается, работает (после установки winetricks jet40), окно отчета выдает, но отрисовать его внутренности не может. Закрыть это недорисованное окно позволяет, ничего не висит, можно дальше работать. Повторная попытка проанализировать тот же или иной файл проходит успешно, окно отчета ведет себя аналогично. Переоткрываю багу. Сейчас контролы отрисовываются, но приложение не может в них ничего записать. на eter12-6/11 все по-прежнему. хотя, думаю, и без меня это известно. надо допилить да внедрять тогда checkxml всем подряд... (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. После этого отчеты будут видны. Не работает отрисовка отчетов. Все по-прежнему на 7/12 установлен ie, gecko, хинт regsvr32 mshtml также проделывал - без изменений. В сборке 1.0.12-eter7.42/15 внезапно все работает. Удалось проверить файл, посомтреть отчет, и мпрямо из интерфейса программы скачать свежую ее версию. Интересно, получится ли воспроизвести при установке с нуля. Нужно проверить на 1.0.12 eter8/eter18 (В ответ на comment #45) > Нужно проверить на 1.0.12 eter8/eter18 Отчет выводится. Вид просмотра, как в Windows Принято. (В ответ на comment #46) > Отчет выводится. Вид просмотра, как в Windows бутылка 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 программа вообще не запускается. Новая бутылка wine@cellar bottle bugs/5293a WINE@Etersoft 1.0 SQL 1.0.12-eter10.3/19 Все работает нормально. Ой, давайте определимся какую именно багу блокирует данная бага: 42 или 5991. От этого зависит метод проверки. Нельзя проверить багу только для 1.0.12 и сказать, что всё работает в текущем eterhack, или наоборот. Как я понял, в 1.0.12 всё работает? Тогда создаю отдельную багу для текущей версии eterhack. |