Bug 1994

Summary: Конструктор школьных сайтов падает при развороте окна
Product: Wine School Reporter: Виталий Перов <vitperov>
Component: Конструктор сайтовAssignee: BUGS@Etersoft <bugs>
Status: CLOSED INVALID QA Contact:
Severity: normal    
Priority: P4 CC: baraka, kondratyuk, lav, vitperov, vostok
Version: 0.7   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on: 2460    
Bug Blocks: 1527, 1530, 6758    

Description Виталий Перов 2008-06-25 16:34:07 MSD
Как воспроизвести:
1. Создаём или открывае проект
2. Сворачиваем окно
3. Разворачиваем окно

При этом Конструктор падает
Comment 1 Виталий Перов 2008-06-25 16:38:55 MSD
первые строки бактрейса:
Backtrace:
=>1 0x660e2e91 in msvbvm60 (+0xe2e91) (0x0032e094)
  2 0x005a3950 in constructor (+0x1a3950) (0x0032e1bc)
  3 0x6602ad73 in msvbvm60 (+0x2ad73) (0x0032e1c8)
  4 0x00433ed4 in constructor (+0x33ed4) (0x0032e1d8)
  5 0x6602ad50 in msvbvm60 (+0x2ad50) (0x0032e224)
  6 0x66023023 in msvbvm60 (+0x23023) (0x0032e2f8)
  7 0x66022eb2 in msvbvm60 (+0x22eb2) (0x0032e31c)
  8 0x66020aee in msvbvm60 (+0x20aee) (0x0032e494)
  9 0x66021269 in msvbvm60 (+0x21269) (0x0032e4bc)
  10 0x66020341 in msvbvm60 (+0x20341) (0x0032e518)
  11 0x7ebbe6ee WINPROC_wrapper+0x1a() in user32 (0x0032e548)
  12 0x7ebbed95 call_window_proc+0xb0(hwnd=0x20108, msg=0x5, wp=0x2, lp=0x2dc0402, result=0x32eb50, arg=0x66020297) [/home/vitperov/Projects/wine/dlls/user32/winproc.c:458] in user32 (0x0032e598)
  13 0x7ebc1ca6 WINPROC_CallProcWtoA+0xf60(callback=0x7ebbece5, hwnd=0x20108, msg=0x5, wParam=0x2, lParam=0x2dc0402, result=0x32eb50, arg=0x66020297) [/home/vitperov/Projects/wine/dlls/user32/winproc.c:1268] in user32 (0x0032eaa8)
Comment 2 Анатолий Лютин 2008-06-28 11:20:05 MSD
После обновления лучше не стало, fixme ушёл, но всё равно падает.
Comment 3 Анатолий Лютин 2008-06-28 11:27:26 MSD
Что стало известно:
1. Декорирование и управление никак не влияют - конструктор исправно падает.
2. Если не создовать/не открывать проект, то при сворачивании/разворачивании ничего не падает.
3. Можно открыть готовый проект и всё равно упадёт после сворачивании/разворачивании.

Следовательно при создании/открытии проекта создаётся любой недореализованный COM-объект, который падает при обращении к не своей памяти, вполне возможно, что проблема  в :

fixme:mshtml:HTMLElement_GetIDsOfNames (0x3e06658)->({00000000-0000-0000-0000-000000000000} 0x32e6fc 1 1033 0x32e700)

или 
fixme:shdocvw:ClOleCommandTarget_Exec (0x14c684)->({de4ba900-59ca-11cf-9592-444553540000} 2315 0 (nil) (nil))
fixme:shdocvw:ClOleCommandTarget_Exec (0x14c684)->((null) 35 0 (nil) (nil))
fixme:shdocvw:InPlaceFrame_SetStatusText (0x14c684)->(0x7bc9c8e8)
fixme:shdocvw:ClOleCommandTarget_Exec (0x14c684)->((null) 28 2 0x32edd8 (nil))
fixme:shdocvw:ClOleCommandTarget_Exec (0x14c684)->((null) 21 2 (nil) (nil))
Comment 4 Анатолий Лютин 2008-06-28 11:38:49 MSD
Простенькая реализация HTMLElement_GetIDsOfNames результатов не дала.
Comment 5 Анатолий Лютин 2008-06-28 12:00:49 MSD
Наверное проблема таки в нереализованности IOleCommandTarget::Exec
( http://msdn.microsoft.com/en-us/library/ms690300(VS.85).aspx )
Comment 6 Анатолий Лютин 2008-06-28 12:20:52 MSD
Ещё один вариант возможной проблемы:

fixme:shdocvw:ClOleCommandTarget_Exec (0x14c684)->((null) 21 2 (nil) (nil))
trace:shdocvw:WebBrowser_Release (0x14c5e8) ref=8
trace:mshtml:nsTooltipTextProvider_GetNodeText (0x4ed0dd0 0x32fc54 0x32fc64)
trace:mshtml:HTMLDocument_AddRef (0x3df4580) ref = 6
trace:mshtml:HTMLDocument_QueryInterface (0x3df4580)->(IID_IProvideClassInfo 0x32e3b8)
trace:mshtml:HTMLDocument_AddRef (0x3df4580) ref = 7

P.S:
Ломание ClOleCommandTarget_Exec ни к чему не привело.
Comment 7 Анатолий Лютин 2008-06-28 12:46:21 MSD
IProvideClassInfo - тоже ни при чём..
Comment 8 Виталий Перов 2008-07-09 18:14:12 MSD
Попробовал приаттачится к процессу отладчиком.
Даже если не открывать проект, то падения нет, но при развороте окна возникает исключение.

Возникает оно потому, что функция WebBrowser_Refresh возвращает E_NOTIMPL.
Если вместо этого возвращать S_OK, то программа не генерирует исключение.

Если возвращать S_OK при открытом проекте, то падает всё-равно.

Думаю, что проблема может быть в отсутствии данной функции.
Comment 9 Синицын Иван 2008-07-14 09:35:21 MSD
Падает, не только при сворачивании/разворачивании окна, а при любом изменении размеров рабочей области, но только при загруженном проекте.
Comment 10 Синицын Иван 2008-10-14 17:23:53 MSD
И так в результате исследования проблемы имеет следующие результаты.

1. Само изменение размеров окна это, лишь косвенная проблема падения, т.к. при изменении размеров запращивается интерфейс IProvideTypeInfo, которые на данный момент не реализован.

2. Если при запросе этого интерфеса вернуть E_NOTIMPL, то программа повисает. Программу устраивает единственный ответ - это S_OK и указатель на интерфейс IProvideTypeInfo

3. На данный момент в ветке eterhack, очень интересная ситуация. Возвращается неинициализированный указатель - вот и причина дальнейшего падения.

4. Добавивь описание IProvideTypeInfo и проинициализировав указатель, программа проработала, чуть дольше. Т.е. до вызова IProvideTypeInfo_GetClassType. При возврате из этой функции E_NOTIMPL, так же повисает. Опять единственный ответ который примет программа это S_OK и указатель на ITypeInfo.

5. Самое интересное, что если возвращать действительно ITypeInfo, то программа, через пару вызово повисает - причина не найдена, а вот если вместо ITypeInfo вернуть любой интерфейс поддерживаемый HTMLDocument, то программа работает дальше и падений при изменении размеров окна, а так же при максимизации/минимизации программы не замечено, за исключением варианта перетаскивания сплиттера между окном Gecko и списком страниц.
Comment 11 Синицын Иван 2008-10-15 16:44:48 MSD
добавил hack  с исправлением. Отправил на наш wine-patches. Как будет сборка, надо будет проверить.
Comment 12 Константин Кондратюк 2008-10-20 17:01:43 MSD
Отключил патч. См. багу #2105
Comment 13 Константин Кондратюк 2008-10-28 15:10:27 MSK
Вернул хак для WINE School
Comment 14 Виталий Перов 2008-11-01 19:32:05 MSK
обновился из ветки wine-school-1.0
Проверил:
Падает если свернуть окно, а затем его развернуть