Summary: | Не создаётся проект в Конструкторе сайтов | ||
---|---|---|---|
Product: | Wine School | Reporter: | Andrey Vusik <night> |
Component: | Конструктор сайтов | Assignee: | Константин Кондратюк <kondratyuk> |
Status: | CLOSED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | P2 | CC: | baraka, ivan, kondratyuk, lav, night |
Version: | 0.7 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | Linux | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | 1990 | ||
Bug Blocks: | 1530, 1964 | ||
Attachments: | лог |
Description
Andrey Vusik
2008-04-10 18:55:58 MSD
Если создавать проект с установленным IE, то порект создается и все вроде бы нормально, но IE для нас не вариант. Если создаем без IE, то как и прежде происходит зависание, и winedbg можно получить такой bt: Backtrace: =>1 0x719970c5 in msxml3 (+0x70c5) (0x0032e830) 2 0x719b77b6 in msxml3 (+0x277b6) (0x0032e844) 3 0x719b793e in msxml3 (+0x2793e) (0x0032e858) 4 0x719a5fca in msxml3 (+0x15fca) (0x0032e874) 5 0x719b69eb in msxml3 (+0x269eb) (0x0032e8b4) 6 0x719b6940 in msxml3 (+0x26940) (0x0032e8d0) 7 0x719b721a in msxml3 (+0x2721a) (0x0032e908) 8 0x719c2416 in msxml3 (+0x32416) (0x0032e92c) 9 0x719d581b in msxml3 (+0x4581b) (0x0032e99c) 10 0x719d5e67 in msxml3 (+0x45e67) (0x0032e9b4) 11 0x719d5b66 in msxml3 (+0x45b66) (0x0032e9f0) 12 0x719a5e63 in msxml3 (+0x15e63) (0x0032ea0c) 13 0x719a69cb in msxml3 (+0x169cb) (0x0032ea24) 14 0x719a6958 in msxml3 (+0x16958) (0x0032ea68) 15 0x719a5736 in msxml3 (+0x15736) (0x0032eaa8) 16 0x719a56de in msxml3 (+0x156de) (0x0032eab8) 17 0x0063520d in constructor (+0x23520d) (0x0032ebec) 18 0x00629d34 in constructor (+0x229d34) (0x0032f0e0) 19 0x00619e2a in constructor (+0x219e2a) (0x0032f27c) 20 0x005e2843 in constructor (+0x1e2843) (0x0032f400) err:dbghelp:pe_load_dbg_file -Unable to peruse .DBG file "DLL\\MSVBVM60.dbg" ("") 21 0x6602ad73 in msvbvm60 (+0x2ad73) (0x0032f414) 22 0x00434769 in constructor (+0x34769) (0x0032f424) 23 0x6602ad50 in msvbvm60 (+0x2ad50) (0x0032f470) 24 0x66073084 in msvbvm60 (+0x73084) (0x0032f620) 25 0x6606c4d7 in msvbvm60 (+0x6c4d7) (0x0032f640) 26 0x7df71ab2 call_sink+0x72() in shdocvw (0x0032f680) 27 0x7df71596 object_available+0x136() in shdocvw (0x0032f700) 28 0x7df7671d in shdocvw (+0x1671d) (0x0032f710) 29 0x7df7172f process_dochost_task+0x5f() in shdocvw (0x0032f7e0) 30 0x7df7aa58 in shdocvw (+0x1aa58) (0x0032f810) 31 0x7ebd532a WINPROC_wrapper+0x1a() in user32 (0x0032f840) 32 0x7ebd5a2e WINPROC_wrapper+0x71e() in user32 (0x0032f880) 33 0x7ebd9c81 in user32 (+0xa9c81) (0x0032fd40) 34 0x7ebdb092 in user32 (+0xab092) (0x0032fd80) 35 0x7eb9cf26 DispatchMessageA+0x96() in user32 (0x0032fdc0) 36 0x6601496c in msvbvm60 (+0x1496c) (0x0032fe00) 37 0x660148a5 in msvbvm60 (+0x148a5) (0x0032fe44) 38 0x66014783 in msvbvm60 (+0x14783) (0x6601a340) 39 0x66010e00 in msvbvm60 (+0x10e00) (0x660d3416) 40 0x0c2474ff (0x0424448b) 41 0x0e000000 (0x00000000) /var/ftp/pvt/WINE\ tests/School/EduSite/edusite-v4.3.82.exe Пробовал и через wine, и через winexp - не падает, просто повисает. Если при этом подключиться отладчиком, то можно увидеть следующее: Stack dump: 0x0032d7b0: 0032d7f0 7bc44933 7b842f02 00000003 0x0032d7c0: 04776570 00000001 c000008f 00000001 0x0032d7d0: 00000000 7b842ef4 00000002 deadcafe 0x0032d7e0: deadcafe 00000000 004361bc 04776570 0x0032d7f0: 0032d820 65f019c3 00110000 00000002 0x0032d800: 04776570 6534156d 65faf00c 04776570 Backtrace: =>1 0x7b842f76 in kernel32 (+0x22f76) (0x0032d824) 2 0x66024d53 in msvbvm60 (+0x24d53) (0x0032d844) 3 0x66024d08 in msvbvm60 (+0x24d08) (0x00120a80) 4 0x00000000 (0x00000000) 0x7b842f76: addl $12,%esp Так что проблемы, как я понял, возникают в msvbvm60. Тестировал на cellar'е, скорее всего там немного другой набор dll пробовал на euclid - то же самое. Один из последних трейсов: trace:file:wine_nt_to_unix_file_name L"\\??\\C:\\Program Files\\e-publish\\settings\\zagol.xsl" -> "/home/wine/.wine-edu-site-vit/dosdevices/c:/Program Files/e-publish/settings/zagol.xsl" Ещё по каналу shell вызывается: trace:shell:UrlUnescapeW result L"file://C:\\Program Files\\e-publish\\settings\\zagol.xsl" Как я понял, бага возникает при разборе документа сайта, который загружает определённые элементы (например zagol.xsl). Наверное возможно найти обрабатываемый файл, и методом исключения кода найти место ошибки если удалить всё из файла zagol.xsl, В окне появляется сайт. Сразу выскакивает сообщение об ошибке: 2.ERROR: XML document must have a top level element При нажатии на OК программа повисает. В трейсе настораживают сообщения: fixme:shdocvw:InPlaceFrame_SetStatusText (0x1b6834)->(0x7bcacdbc) fixme:shdocvw:ClOleCommandTarget_Exec (0x1b6834)->((null) 28 2 0x32e2fc (nil)) fixme:shdocvw:ClOleCommandTarget_Exec (0x14c094)->((null) 21 2 (nil) (nil)) fixme:shdocvw:ClOleCommandTarget_Exec (0x1b6834)->((null) 21 2 (nil) (nil)) Поробовал почти полностью урезать один из шаблонов. Остались только теги <head> и <body>: В итоге всё-рано загружается zagol.xsl, но сообщение об ошибке уже другое: 2.ERROR: System error: -2146697211 При открытии проекта повисает также Надо посмотреть на используемые DLL и определить, замена каких DLL снимает проблему. Пробовал заменить mshtml.dll - взял от win98. Пришлось ещё взять shdocvw и shlwapi т.к без них mshtml не могла нормально работать. В итоге программа перестала зависать, но документ отображается некорректно: виден только фон, элементы отсутствуют. Сами по себе shdocvw и shlwapi багу не исправляют. При их отдельном добавлении (без mshtml) ничего не изменяется. Думаю проблема в функции HTMLElement_GetTypeInfo. Она должна возвращать программе интерфейс для заданного элемента. После этого программа обращается к одной из функций, опредёлённой в интерфейсе Попытался переписать интерфейс - вместо адресов функций поставить определённые числа. При педении можно увидеть к какой именно функции обращается программа. Как ни странно, но первое обращение происходит к функции GetDocumentation Далее вызывается Release(). Добавление заглушек на эти функции ничего не дало: программа повисает в том же самом месте. Некоторые соображения: - На данный момент зависание возникает в msvbvm60.dll при возникновении исключения При этом, если используется стороняя mshtml.dll, то программа не повисает. - Функция HTMLElement_GetTypeInfo тут не причём. - При отладке по каналу nls видно, что программа зацикливается: в консоль непрерывно поступает сообщение: trace:nls:MultiByteToWideChar cp 0 "EPublish\x00" -> (null), ret = 9 trace:nls:MultiByteToWideChar cp 0 "EPublish\x00" -> L"EPublish, ret = 9 если смотреть вывод по каналу relay, можно увидеть, что много раз вызывается RaiseException. То есть какая-то функция mshtml возвращает недопустимое значение, а msvbvm60.dll исправно генерирует исключение? Пришли мне, пожалуйста, свои вчерашние наработки (In reply to comment #5) > В трейсе настораживают сообщения: > fixme:shdocvw:InPlaceFrame_SetStatusText (0x1b6834)->(0x7bcacdbc) > fixme:shdocvw:ClOleCommandTarget_Exec (0x1b6834)->((null) 28 2 0x32e2fc (nil)) > fixme:shdocvw:ClOleCommandTarget_Exec (0x14c094)->((null) 21 2 (nil) (nil)) Не знаю, будет ли полезно, но на всякий случай: OLECMDID_UPDATECOMMANDS = 21, OLECMDID_SETTITLE = 28, сейчас при перехвате исключения дебагером трейс совсем другой: trace:shdocvw:WebBrowser_Navigate (0x14c120)->(L"C:\\work\\scin/index.html" 0x430397c 0x430398c 0x430399c 0x43039ac) trace:shdocvw:navigate_url navigating to L"C:\\work\\scin/index.html" fixme:shdocvw:navigate_url Unsupported args (Flags 0x430397c:10; TargetFrameName 0x430398c:10) trace:shdocvw:navigate_url PostData vt=10 trace:shdocvw:WebBrowser_AddRef (0x14c120) ref=10 trace:shdocvw:WebBrowser_Release (0x14c120) ref=9 функции navigate_url передаётся флаг 10, что соответствует VT_ERROR непосредственно перед исключением появляется сообщение: fixme:mshtml:HTMLDocument_QueryInterface (0x4337760)->({b196b283-bab4-101a-b69c-00aa00341d07} 0x32727c) interface not supported. Это соответствует интерфейсу IProvideClassInfo. Существует описание интерфейса, но в HTMLDocument_QueryInterface не осуществляется проверка на указанный интерфейс. При добавлении проверки программе возвращается указатель на таблицу функций, но после этого происходит падение (переход по нулевому адресу). Скорее всего интерфейс существует, но таблица функций заполнена нулями Backtrace: =>1 0x73653dc8 in msvbvm60 (+0xe3dc8) (0x0032e008) 2 0x005e4212 in constructor (+0x1e4212) (0x0032e0bc) 3 0x7359aea0 in msvbvm60 (+0x2aea0) (0x0032e0c8) 4 0x00434783 in constructor (+0x34783) (0x0032e0d8) 5 0x7359ae7d in msvbvm60 (+0x2ae7d) (0x0032e124) 6 0x735e3874 in msvbvm60 (+0x73874) (0x0032e2d4) 7 0x735dcac4 in msvbvm60 (+0x6cac4) (0x0032e2f4) 8 0x70bd813c in shlwapi (+0x813c) (0x0032e348) 9 0x70bd7ebd in shlwapi (+0x7ebd) (0x0032e390) 10 0x70bd7fbd in shlwapi (+0x7fbd) (0x0032e3c8) 11 0x77b859fb in shdocvw (+0x59fb) (0x0032e498) 12 0x77b860db in shdocvw (+0x60db) (0x0032e4c4) 13 0x77b86079 in shdocvw (+0x6079) (0x0032f640) 14 0x77b9a751 in shdocvw (+0x1a751) (0x0032f670) 15 0x77ba0965 in shdocvw (+0x20965) (0x0032f6a0) 16 0x7de56ad4 set_parsecomplete+0x168(doc=0x4336bf0) [/home/vitperov/Projects/wine/dlls/mshtml/task.c:250] in mshtml (0x0032f700) 17 0x7de56e5c process_task+0x5a(task=0x431a990) [/home/vitperov/Projects/wine/dlls/mshtml/task.c:323] in mshtml (0x0032f730) 18 0x7de57016 hidden_proc+0x46(hwnd=0x100b6, msg=0x8008, wParam=0x0, lParam=0x0) [/home/vitperov/Projects/wine/dlls/mshtml/task.c:367] in mshtml (0x0032f770) 19 0x7ebd36ee WINPROC_wrapper+0x1a() in user32 (0x0032f7a0) 20 0x7ebd3d95 call_window_proc+0xb0(hwnd=0x100b6, msg=0x8008, wp=0x0, lp=0x0, result=0x32fd9c, arg=0x7de56fd0) [/home/vitperov/Projects/wine/dlls/user32/winproc.c:458] in user32 (0x0032f7f0) 21 0x7ebd5c2c WINPROC_CallProcAtoW+0xd23(callback=0x7ebd3ce5, hwnd=0x100b6, msg=0x8008, wParam=0x0, lParam=0x0, result=0x32fd9c, arg=0x7de56fd0, mapping=0x4) [/home/vitperov/Projects/wine/dlls/user32/winproc.c:1012] in user32 (0x0032fd10) 22 0x7ebd9dce WINPROC_call_window+0x1a3(hwnd=0x100b6, msg=0x8008, wParam=0x0, lParam=0x0, result=0x32fd9c, unicode=0x0, mapping=0x4) [/home/vitperov/Projects/wine/dlls/user32/winproc.c:2210] in user32 (0x0032fd60) 23 0x7eb9c8d6 DispatchMessageA+0xda(msg=0x32fdc8) [/home/vitperov/Projects/wine/dlls/user32/message.c:3046] in user32 (0x0032fdb0) 24 0x73584d53 in msvbvm60 (+0x14d53) (0x0032fdf0) 25 0x73584c8c in msvbvm60 (+0x14c8c) (0x0032fe34) 26 0x73584b6a in msvbvm60 (+0x14b6a) (0x7358a870) 27 0x735811d9 in msvbvm60 (+0x111d9) (0x73645011) 28 0x0c2474ff (0x0424448b) 29 0x00000000 (0x00000000) Падение происходит если используются сторонние shdocvw.dll и shlwapi.dll. Если использовать встроенные, программа перестаёт падать и повисать. Документ отображается, но не корректно. Сборка 0.9.4 для Лёгкого. Повисает при нажатии на "создать". Ждал минут 5. Открываю. Последнее в консоле: err:ole:CoGetClassObject class {0d43fe01-f093-11cf-8940-00a0c9054228} not registered err:ole:create_server class {0d43fe01-f093-11cf-8940-00a0c9054228} not registered err:ole:CoGetClassObject no class object {0d43fe01-f093-11cf-8940-00a0c9054228} could be created for context 0x5 err:ole:CoGetClassObject class {0d43fe01-f093-11cf-8940-00a0c9054228} not registered err:ole:create_server class {0d43fe01-f093-11cf-8940-00a0c9054228} not registered err:ole:CoGetClassObject no class object {0d43fe01-f093-11cf-8940-00a0c9054228} could be created for context 0x5 (In reply to comment #17) > Сборка 0.9.4 для Лёгкого. Повисает при > нажатии на "создать". Ждал минут 5. Открываю. А в бутылке можно воспроизвести? Желательно в чистой. Насколько я понял, это проблемы с реестром. На euclid не та сборка... Здесь я смотрел в 0.9.4-alt0.M40.1 Что мешает поставить эту сборку на euclid? Сборка готова. сейчас на euclid: bash-3.2$ wine --version Wine School 0.9.4 Пытался воспроизвести в новой бутылке (edu-site-vit2) - всё прекрасно работает. Со сборкой, стоящей на multi вообще беда какая-то. Так что нуждается в уточнении на той машине, после того, как сборку новую сделаем. Да. Действительно - у меня тоже всё ок. Закрываю. Сборка 0.9.4-alt0.M40.1 Если создавать проект с Gecko, то порект создается, но без каких либо элементов на странице, что не правильно. Если создавать проект с IE, то падает в дебаг. >Если создавать проект с IE, то падает в
>дебаг.
Если переписать ole32, oleauto32, olepro32 как встроенные, то не падает и работает нормально.
Так же замечено, что при использовании Gecko страница отображается полностью и правильно, но только то, что дейцствительно сгенерировано в html. Не отображаются лишь элементы, не закрепленные в html и предназначенные для редактирования. (In reply to comment #27) > Так же замечено, что при использовании Gecko > страница отображается полностью и > правильно, но только то, что дейцствительно > сгенерировано в html. Не отображаются лишь > элементы, не закрепленные в html и > предназначенные для редактирования. > А можно исправить чтобы элементы для редактирования тоже отображались и работали? Какой срок? так же при использовании IE подменяется меню ie (контекстное меню), а при использовании Gecko этого не происходит и продолжает использоваться стандартное меню gecko. На новой сборке от 28 окт проект не создается совсем. Зависает на создании, в консоль ничего критического не валится. Лог прилагаю. Created attachment 838 [details]
лог
Исправление отвалилось вместе с хаком для 1994 баги. Есть 2 реализации Info_GetClassInfo (обе писал Ваня): 1) HTMLDocument *This = INFO_THIS(iface); HRESULT hres; FIXME("(%p)->(%p)\n", This, ppTI); hres = IDispatchEx_GetTypeInfo(DISPATCHEX(This), 0, 0, ppTI); if (FAILED(hres)) { FIXME("ERROR hres = %08x\n", hres); return E_FAIL; } TRACE("returning %p\n",*ppTI); ITypeInfo_AddRef(*ppTI);/**/ return S_OK; 2) HTMLDocument *This = INFO_THIS(iface); FIXME("(%p)->(%p)\n", This, ppTI); *ppTI = (ITypeInfo*)HTMLDOC(This); ITypeInfo_AddRef(*ppTI); return S_OK; Первая правильнее и универсальнее. Вторая - ужасный хак для конструктора сайтов. Можно специально для сборки школьного вайна в пожарном порядке вернуть старый хак (модифицирую чуть), но лучше на будущее посмотреть, чего не хватает в реализации mshtml и сделать хотя бы на уровне стабов. Вся проблема в том, что в конструкторе сайтов зависание происходит внутри вызова IDispatchEx_GetTypeInfo. Таким образом, нужна полная замена реализации функции. А без этого не будет работать html в 1С, например. Сделал хак для WINE School. В рассылке. |