Bug 2105

Summary: Вылет при создании html-документа в 1С 8.1
Product: WINE@Etersoft Reporter: Andrey Vusik <night>
Component: Internet Explorer / GeckoAssignee: Константин Кондратюк <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
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>
Comment 1 Виталий Перов 2008-09-03 20:45:32 MSD
Хорошо бы воспроизвести багу в новой бутылке
Comment 2 Денис Баранов 2008-09-04 17:43:20 MSD
Воспроизвел ошибку.
Бутылка 1c8.1-vitperov
Comment 3 Виталий Перов 2008-09-08 18:38:32 MSD
бага во встроенной mshtml. При использовании сторонней всё работает
Comment 4 Виталий Перов 2008-09-08 19:02:32 MSD
падение воспроизвести не удалось. У меня 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

Возможно проблема именно в них?
Comment 5 Vitaly Lipatov 2008-10-15 17:11:55 MSD
*** Bug 1928 has been marked as a duplicate of this bug. ***
Comment 6 Vitaly Lipatov 2008-10-15 22:05:02 MSD
*** Bug 2405 has been marked as a duplicate of this bug. ***
Comment 7 Константин Кондратюк 2008-10-20 11:30:50 MSD
Воспроизвожу в бутылке 1cfile - там красивый вылет без всяких дампов.

Падает сразу после того, как функция ServiceProvider_QueryService вернула любое значение. Такое ощущение, что несмотря на полученную ошибку E_UNEXPECTED 1ска без проверки обращается к запрашиваемому (и не полученному) интерфейсу.

Если возвращать любой другой интерфейс (например, iface), то вместо падения возникает исключение.
Comment 8 Константин Кондратюк 2008-10-20 11:34:18 MSD
Запрашиваемый интерфейс - IHTMLEditServices - не реализован и даже не объявлен в wine. Можно попробовать реализовать, но весьма трудоёмко. Хорошо бы починить просмотр html к релизу, не прибегая к тотальному дописыванию mshtml...
Comment 9 Константин Кондратюк 2008-10-20 16:31:06 MSD
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). Нужно не забыть объявить их все (и связанные с ними интерфейсы).

Патч в рассылке, копаем дальше...

Comment 10 Константин Кондратюк 2008-10-20 16:50:33 MSD
Теперь падает при закрытии 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...

Видимо, причины те же.
Comment 11 Константин Кондратюк 2008-10-21 09:31:05 MSD
Добавил интерфейс ISelectionServices и реализовал IHTMLEditServices::GetSelectionServices.

Так же, как и в IHTMLEditServices, в новом интерфейсе много неопределённых интерфейсов в параметрах - нуждается в серьёзной доработке.
Comment 12 Константин Кондратюк 2008-10-21 09:39:20 MSD
Всё-таки работа с редактированием 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.
Comment 13 Константин Кондратюк 2008-10-21 09:43:12 MSD
Вывод - редактирование html придётся отложить до лучших времён,на пострелизное время, и заниматься им основательно.
Comment 14 Константин Кондратюк 2008-12-05 10:33:45 MSK
Нужно доопределить:
IDisplayServices
IMarkupServices

и наверное ещё понадобятся:
IMarkupServices2
IMarkupContainer2
IMarkupPointer2
Comment 15 Константин Кондратюк 2008-12-05 16:40:50 MSK
Добавил в idl
    ILineInfo
    IDisplayPointer
    IDisplayPointer
    IHTMLComputedStyle
    IDisplayServices
    IMarkupServices
патч отправлен в winehq.

Теперь нужно заглушки на IDisplayServices и/или IMarkupServices, а там уж смотреть дальше, что будет...
Comment 16 Константин Кондратюк 2008-12-05 18:15:59 MSK
Так, заглушки пока не критичны для этой баги.
html не редактируется, конечно, но падает уже редко. Чаще всего - из-за переключения с первой закладки редактора на вторую

Перед падением:
fixme:mshtml:HTMLElementCollection_item unsupported arguments
fixme:mshtml:HTMLDocument_get_charset (0x324bca8)->(0x32ec68)
Comment 17 Константин Кондратюк 2008-12-12 18:36:23 MSK
commit 21e6dd11ad79e67dc4821ea7ebb51150cea1cfaa
Author: Konstantin Kondratyuk <kondratyuk@etersoft.ru>
Date:   Tue Dec 9 14:48:54 2008 +0300

    mshtml: Add IMarkupServices implementation


После добавления заглушки для IMarkupServices падать перестало.
Редактирование HTML работает всё так же некорректно, но больше падает.