Summary: | Вылет при создании html-документа в 1С 8.1 | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Andrey Vusik <night> |
Component: | Internet Explorer / Gecko | Assignee: | Константин Кондратюк <kondratyuk> |
Status: | CLOSED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | P2 | CC: | baraka, ivan, kondratyuk, lav, sonner, vitperov |
Version: | 1.0.9 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | 2978 | ||
Bug Blocks: | 1217, 3130, 5497 |
Description
Andrey Vusik
2008-07-10 20:32:03 MSD
Хорошо бы воспроизвести багу в новой бутылке Воспроизвел ошибку. Бутылка 1c8.1-vitperov бага во встроенной mshtml. При использовании сторонней всё работает падение воспроизвести не удалось. У меня 1с вылетает в дамп. Последние строки: fixme:mshtml:HTMLDocument_QueryInterface (0x35236d0)->({3050f4a0-98b5-11cf-bb82-00aa00bdce0b} 0x32ebb0) interface not supported fixme:mshtml:HTMLDocument_QueryInterface (0x35236d0)->({3050f5f9-98b5-11cf-bb82-00aa00bdce0b} 0x32ebb0) interface not supported fixme:mshtml:HTMLDocument_QueryInterface (0x35236d0)->({3050f69d-98b5-11cf-bb82-00aa00bdce0b} 0x32ebb0) interface not supported fixme:mshtml:HTMLDocument_put_designMode (0x35236d0)->(L"On") fixme:mshtml:HTMLDocument_put_charset (0x35236d0)->(L"utf-8") Отсутствующие интерфейсы: IID_IMarkupServices http://www.com.it-berater.org/COM/webbrowser/Interfaces/IMarkupServices.htm IID_IMarkupContainer http://www.com.it-berater.org/COM/webbrowser/Interfaces/IMarkupContainer.htm IID_IDisplayServices http://www.com.it-berater.org/COM/webbrowser/Interfaces/IDisplayServices.htm Возможно проблема именно в них? *** Bug 1928 has been marked as a duplicate of this bug. *** *** Bug 2405 has been marked as a duplicate of this bug. *** Воспроизвожу в бутылке 1cfile - там красивый вылет без всяких дампов. Падает сразу после того, как функция ServiceProvider_QueryService вернула любое значение. Такое ощущение, что несмотря на полученную ошибку E_UNEXPECTED 1ска без проверки обращается к запрашиваемому (и не полученному) интерфейсу. Если возвращать любой другой интерфейс (например, iface), то вместо падения возникает исключение. Запрашиваемый интерфейс - IHTMLEditServices - не реализован и даже не объявлен в wine. Можно попробовать реализовать, но весьма трудоёмко. Хорошо бы починить просмотр html к релизу, не прибегая к тотальному дописыванию mshtml... commit 50a17130555c2c779ff7031609d39de26752930f Author: Konstantin Kondratyuk <kondratyuk@etersoft.ru> Date: Mon Oct 20 16:20:31 2008 +0400 mshtml: Add IHTMLEditServices interface (fix eterbug #2105) Объявил интерфейс IHTMLEditServices и реализовал заглушку для него. Теперь 1С получает правильный указатель, по которому безопасно обращается. На html больше не падает. Отображается пустая страница. TODO: В mshtml.idl при объявлении интерфейса пришлось сделать несколько заглушек (IUnknown вместо IMarkupContainer, ISelectionServices, IMarkupPointer). Нужно не забыть объявить их все (и связанные с ними интерфейсы). Патч в рассылке, копаем дальше... Теперь падает при закрытии html :) trace:mshtml:ServiceProvider_QueryService (0x1a3a10)->(IID_IHTMLEditServices 0x32ee40) trace:mshtml:HTMLEditServices_AddRef (0x1a3920) ref=3 fixme:mshtml:HTMLEditServices_GetSelectionServices is not implemented wine: Unhandled page fault on read access to 0xffffffff at address 0x1cc11609 (thread 0033), starting debugger... Видимо, причины те же. Добавил интерфейс ISelectionServices и реализовал IHTMLEditServices::GetSelectionServices. Так же, как и в IHTMLEditServices, в новом интерфейсе много неопределённых интерфейсов в параметрах - нуждается в серьёзной доработке. Всё-таки работа с редактированием html в 1С - сборник оригинального кода по работе с интерфейсами! Такое ощущение, что там ни одной проверки не стоит. Проходит мою новую реализацию функции и падает почти сразу за ней. Теперь перед тем, как упасть видим: fixme:mshtml:HTMLDocument_QueryInterface (0x1cb7f8)->({3050f4a0-98b5-11cf-bb82-00aa00bdce0b} 0x32f480) interface not supported fixme:mshtml:HTMLDocument_QueryInterface (0x1cb7f8)->({3050f5f9-98b5-11cf-bb82-00aa00bdce0b} 0x32f480) interface not supported fixme:mshtml:HTMLDocument_QueryInterface (0x1cb7f8)->({3050f69d-98b5-11cf-bb82-00aa00bdce0b} 0x32f480) interface not supported ... fixme:shdocvw:WBOleCommandTarget_QueryStatus (0x1a7a90)->({de4ba900-59ca-11cf-9592-444553540000} 1 0x32f86c (nil)) fixme:mshtml:OleCommandTarget_QueryStatus CGID_MSHTML: unsupported cmdID 43 fixme:mshtml:OleCommandTarget_QueryStatus CGID_MSHTML: unsupported cmdID 29 fixme:mshtml:OleCommandTarget_QueryStatus CGID_MSHTML: unsupported cmdID 51 fixme:mshtml:OleCommandTarget_QueryStatus CGID_MSHTML: unsupported cmdID 50 Все 3 интерфейса даже не объявлены в wine. А WBOleCommandTarget - всего лишь заглушка функции, выводящая fixme. Вывод - редактирование html придётся отложить до лучших времён,на пострелизное время, и заниматься им основательно. Нужно доопределить: IDisplayServices IMarkupServices и наверное ещё понадобятся: IMarkupServices2 IMarkupContainer2 IMarkupPointer2 Добавил в idl ILineInfo IDisplayPointer IDisplayPointer IHTMLComputedStyle IDisplayServices IMarkupServices патч отправлен в winehq. Теперь нужно заглушки на IDisplayServices и/или IMarkupServices, а там уж смотреть дальше, что будет... Так, заглушки пока не критичны для этой баги. html не редактируется, конечно, но падает уже редко. Чаще всего - из-за переключения с первой закладки редактора на вторую Перед падением: fixme:mshtml:HTMLElementCollection_item unsupported arguments fixme:mshtml:HTMLDocument_get_charset (0x324bca8)->(0x32ec68) commit 21e6dd11ad79e67dc4821ea7ebb51150cea1cfaa Author: Konstantin Kondratyuk <kondratyuk@etersoft.ru> Date: Tue Dec 9 14:48:54 2008 +0300 mshtml: Add IMarkupServices implementation После добавления заглушки для IMarkupServices падать перестало. Редактирование HTML работает всё так же некорректно, но больше падает. |