Bug 1677

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
Программа просто висит при создании проекта (вложен лог при открытии)
Comment 1 Денис Баранов 2008-06-03 21:08:29 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)
Comment 2 Vitaly Lipatov 2008-06-22 14:39:09 MSD
/var/ftp/pvt/WINE\ tests/School/EduSite/edusite-v4.3.82.exe
Comment 3 Виталий Перов 2008-06-22 16:25:34 MSD
Пробовал и через 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
Comment 4 Виталий Перов 2008-06-22 18:01:36 MSD
пробовал на 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).
Наверное возможно найти обрабатываемый файл, и методом исключения кода найти место ошибки
Comment 5 Виталий Перов 2008-06-22 18:49:25 MSD
если удалить всё из файла 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
Comment 6 Виталий Перов 2008-06-23 17:09:35 MSD
При открытии проекта повисает также
Comment 7 Vitaly Lipatov 2008-06-24 13:25:40 MSD
Надо посмотреть на используемые DLL и определить, замена каких DLL снимает проблему.
Comment 8 Виталий Перов 2008-06-24 16:12:29 MSD
Пробовал заменить mshtml.dll  - взял от win98.
Пришлось ещё взять shdocvw и shlwapi т.к без них mshtml не могла нормально работать.
В итоге программа перестала зависать, но документ отображается некорректно: виден только фон, элементы отсутствуют.

Сами по себе shdocvw и shlwapi багу не исправляют. При их отдельном добавлении (без mshtml) ничего не изменяется.
Comment 9 Виталий Перов 2008-06-24 18:37:24 MSD
Думаю проблема в функции HTMLElement_GetTypeInfo. Она должна возвращать программе интерфейс для заданного элемента.
После этого программа обращается к одной из функций, опредёлённой в интерфейсе

Попытался переписать интерфейс - вместо адресов функций поставить определённые числа.
При педении можно увидеть к какой именно функции обращается программа.

Как ни странно, но первое обращение происходит к функции GetDocumentation
Comment 10 Виталий Перов 2008-06-24 19:37:20 MSD
Далее вызывается Release(). Добавление заглушек на эти функции ничего не дало: программа повисает в том же самом месте.
Comment 11 Виталий Перов 2008-06-24 21:37:55 MSD
Некоторые соображения:
- На данный момент зависание возникает в 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.

Comment 12 Константин Кондратюк 2008-06-25 08:45:47 MSD
То есть какая-то функция mshtml возвращает недопустимое значение, а msvbvm60.dll исправно генерирует исключение?

Пришли мне, пожалуйста, свои вчерашние наработки
Comment 13 Константин Кондратюк 2008-06-25 08:47:37 MSD
(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,
Comment 14 Виталий Перов 2008-06-25 11:42:12 MSD
сейчас при перехвате исключения дебагером трейс совсем другой:
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
Comment 15 Виталий Перов 2008-06-25 15:00:39 MSD
непосредственно перед исключением появляется сообщение:
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)
Comment 16 Виталий Перов 2008-06-25 15:54:46 MSD
Падение происходит если используются
сторонние shdocvw.dll и shlwapi.dll.
Если использовать встроенные, программа
перестаёт падать и повисать.
Документ отображается, но не корректно.
Comment 17 Andrey Vusik 2008-07-12 21:07:49 MSD
Сборка 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

Comment 18 Виталий Перов 2008-07-13 14:52:25 MSD
(In reply to comment #17)
> Сборка 0.9.4 для Лёгкого. Повисает при
> нажатии на "создать". Ждал минут 5. Открываю.

А в бутылке можно воспроизвести?
Желательно в чистой. Насколько я понял, это проблемы с реестром.

Comment 19 Andrey Vusik 2008-07-13 15:02:30 MSD
На euclid не та сборка... Здесь я смотрел в 0.9.4-alt0.M40.1
Comment 20 Константин Кондратюк 2008-07-13 18:18:43 MSD
Что мешает поставить эту сборку на euclid?
Comment 21 Andrey Vusik 2008-07-13 19:18:31 MSD
Сборка готова.
Comment 22 Виталий Перов 2008-07-14 12:50:15 MSD
сейчас на euclid:
bash-3.2$ wine --version
Wine School 0.9.4

Пытался воспроизвести в новой бутылке (edu-site-vit2) - всё прекрасно работает.
Comment 23 Константин Кондратюк 2008-07-14 13:09:52 MSD
Со сборкой, стоящей на multi вообще беда какая-то. Так что нуждается в уточнении на той машине, после того, как сборку новую сделаем.
Comment 24 Andrey Vusik 2008-07-14 13:13:58 MSD
Да. Действительно - у меня тоже всё ок. Закрываю. Сборка 0.9.4-alt0.M40.1
Comment 25 Денис Баранов 2008-10-12 19:37:13 MSD
Если создавать проект с Gecko, то порект создается, но без каких либо элементов на странице, что не правильно.

Если создавать проект с IE, то падает в дебаг.
Comment 26 Синицын Иван 2008-10-13 16:06:36 MSD
>Если создавать проект с IE, то падает в
>дебаг.

Если переписать ole32, oleauto32, olepro32 как встроенные, то не падает и работает нормально.
Comment 27 Синицын Иван 2008-10-13 16:16:20 MSD
Так же замечено, что при использовании Gecko страница отображается полностью и правильно, но только то, что дейцствительно сгенерировано в html. Не отображаются лишь элементы, не закрепленные в html и предназначенные для редактирования.
Comment 28 Денис Баранов 2008-10-13 18:42:20 MSD
(In reply to comment #27)
> Так же замечено, что при использовании Gecko
> страница отображается полностью и
> правильно, но только то, что дейцствительно
> сгенерировано в html. Не отображаются лишь
> элементы, не закрепленные в html и
> предназначенные для редактирования.
> 

А можно исправить чтобы элементы для редактирования тоже отображались и работали? Какой срок?
Comment 29 Синицын Иван 2008-10-14 11:12:04 MSD
так же при использовании IE подменяется меню ie (контекстное меню), а при использовании Gecko этого не происходит и продолжает использоваться стандартное меню gecko.
Comment 30 Денис Баранов 2008-10-28 12:47:59 MSK
На новой сборке от 28 окт проект не создается совсем. Зависает на создании, в консоль ничего критического не валится.
Лог прилагаю.
Comment 31 Денис Баранов 2008-10-28 12:48:20 MSK
Created attachment 838 [details]
лог
Comment 32 Константин Кондратюк 2008-10-28 13:42:54 MSK
Исправление отвалилось вместе с хаком для 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 и сделать хотя бы на уровне стабов.
Comment 33 Константин Кондратюк 2008-10-28 14:15:42 MSK
Вся проблема в том, что в конструкторе сайтов зависание происходит внутри вызова IDispatchEx_GetTypeInfo.

Таким образом, нужна полная замена реализации функции. А без этого не будет работать html в 1С, например.
Comment 34 Константин Кондратюк 2008-10-28 15:09:35 MSK
Сделал хак для WINE School. В рассылке.