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
первые строки бактрейса: 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) После обновления лучше не стало, fixme ушёл, но всё равно падает. Что стало известно: 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)) Простенькая реализация HTMLElement_GetIDsOfNames результатов не дала. Наверное проблема таки в нереализованности IOleCommandTarget::Exec ( http://msdn.microsoft.com/en-us/library/ms690300(VS.85).aspx ) Ещё один вариант возможной проблемы: 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 ни к чему не привело. IProvideClassInfo - тоже ни при чём.. Попробовал приаттачится к процессу отладчиком. Даже если не открывать проект, то падения нет, но при развороте окна возникает исключение. Возникает оно потому, что функция WebBrowser_Refresh возвращает E_NOTIMPL. Если вместо этого возвращать S_OK, то программа не генерирует исключение. Если возвращать S_OK при открытом проекте, то падает всё-равно. Думаю, что проблема может быть в отсутствии данной функции. Падает, не только при сворачивании/разворачивании окна, а при любом изменении размеров рабочей области, но только при загруженном проекте. И так в результате исследования проблемы имеет следующие результаты. 1. Само изменение размеров окна это, лишь косвенная проблема падения, т.к. при изменении размеров запращивается интерфейс IProvideTypeInfo, которые на данный момент не реализован. 2. Если при запросе этого интерфеса вернуть E_NOTIMPL, то программа повисает. Программу устраивает единственный ответ - это S_OK и указатель на интерфейс IProvideTypeInfo 3. На данный момент в ветке eterhack, очень интересная ситуация. Возвращается неинициализированный указатель - вот и причина дальнейшего падения. 4. Добавивь описание IProvideTypeInfo и проинициализировав указатель, программа проработала, чуть дольше. Т.е. до вызова IProvideTypeInfo_GetClassType. При возврате из этой функции E_NOTIMPL, так же повисает. Опять единственный ответ который примет программа это S_OK и указатель на ITypeInfo. 5. Самое интересное, что если возвращать действительно ITypeInfo, то программа, через пару вызово повисает - причина не найдена, а вот если вместо ITypeInfo вернуть любой интерфейс поддерживаемый HTMLDocument, то программа работает дальше и падений при изменении размеров окна, а так же при максимизации/минимизации программы не замечено, за исключением варианта перетаскивания сплиттера между окном Gecko и списком страниц. добавил hack с исправлением. Отправил на наш wine-patches. Как будет сборка, надо будет проверить. Отключил патч. См. багу #2105 Вернул хак для WINE School обновился из ветки wine-school-1.0 Проверил: Падает если свернуть окно, а затем его развернуть |