Running in NT environment... fixme:gdi:ExtCreatePen Hatches not implemented fixme:ole:PSFacBuf_CreateStub stubbing not implemented for ({00000112-0000-0000-c000-000000000046}) yet! err:ole:marshal_object Failed to create an IRpcStubBuffer from IPSFactory for {00000112-0000-0000-c000-000000000046} with error 0x80004005 err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x80004005 err:ole:CoMarshalInterface Failed to marshal the interface {00000112-0000-0000-c000-000000000046}, 80004005 fixme:ole:PSFacBuf_CreateStub stubbing not implemented for ({00000112-0000-0000-c000-000000000046}) yet! err:ole:marshal_object Failed to create an IRpcStubBuffer from IPSFactory for {00000112-0000-0000-c000-000000000046} with error 0x80004005 err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x80004005 err:ole:CoMarshalInterface Failed to marshal the interface {00000112-0000-0000-c000-000000000046}, 80004005 wine: Unhandled page fault on read access to 0x00000004 at address 0x103ee230 (thread 003a), starting debugger... WineDbg starting on pid 0035 Unhandled exception: page fault on read access to 0x00000004 in 32-bit code (0x103ee230). Register dump: CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b EIP:103ee230 ESP:0033ef8c EBP:0455974c EFLAGS:00010206( - 00 - RIP1) EAX:80004005 EBX:00000000 ECX:00000000 EDX:0075ca80 ESI:045590cc EDI:006a3cf4 Stack dump: 0x0033ef8c: 1cbfb16d 045590cc 045590d4 ffffffff 0x0033ef9c: 00d90060 00000000 006913c8 006a3cf4 0x0033efac: 0033efd8 1766d9f0 ffffffff 174ae489 0x0033efbc: 1cbee271 00d987e8 045590d4 045590cc 0x0033efcc: 006913c8 009db378 1cbe6cd6 0033f02c 0x0033efdc: 1cc39770 ffffffff 1cc0db9d 00d8fc88 Backtrace: =>1 0x103ee230 ?getPtr@CoInterfacePtrData@core@@QAEPAXXZ() in core (0x0455974c) 2 0x00000000 (0x00000000) 0x103ee230 ?getPtr@CoInterfacePtrData@core@@QAEPAXXZ in core: movb 0x4(%ecx),%al Wine-dbg>
Хорошо бы воспроизвести багу в новой бутылке
Воспроизвел ошибку. Бутылка 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 работает всё так же некорректно, но больше падает.