Summary: | Падение 1c82 | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Svetlana Zhukova <svzhu> |
Component: | Запуск ; Отладка ; Исключения | Assignee: | Татьяна Фокина <tatyana> |
Status: | CLOSED FIXED | QA Contact: | Svetlana Zhukova <svzhu> |
Severity: | critical | ||
Priority: | P1 | CC: | baraka, dtr, kondratyuk, lav, max.tar.one, mid, other.bigmouse, tatyana |
Version: | 2.0 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | 22852, 22782,22884,23073 | Связано с: | |
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 8123, 8107, 8132 | ||
Deadline: | 2012-03-22 | ||
Attachments: |
1
2 |
Created attachment 2421 [details]
2
В консоли: fixme:msvcr90:__clean_type_info_names_internal (0x4a9d60a8) stub fixme:msvcr90:__clean_type_info_names_internal (0x4a8e2018) stub fixme:msvcr90:__clean_type_info_names_internal (0x1000f1b8) stub ctrl+C не помогает. Если запустить повторно конфигурацию под этим же пользователем, програма падает,появляется запись дампа. 1с 8.2.13.219 бухгалтерия предприятия. wine@eterhack bottle 1c82/8123>$ wine --version WINE@Etersoft SQL 2.0.0-eter2.13/8 в 2.11 тоже самое было. *** Bug 8132 has been marked as a duplicate of this bug. *** Хм..кроме как в 22852 и в данной бутылке,эта бага не проявилась. На WINE@Etersoft Public 1.3.35-eter1 1C версии v8.2 1292 запускается, но через произвольное время крашится: fixme:msvcr90:__clean_type_info_names_internal При попытка что-либо внести в конфигурацию (добавить/удалить) молча падает. Конфигуратор работает нормально. (В ответ на comment #6) > Конфигуратор работает нормально. Нет, теперь тоже молча падает В eterhack (1.4.rc3-alt1.1) при запуске подвисает. Если сделать, чтобы DispatchEx_GetMemberProperties возвращала S_OK, то начинает работать. Но после переключения на другое окно возникает проблема с отрисовкой содержимого окна 1С. > В eterhack (1.4.rc3-alt1.1) при запуске подвисает.
1С осуществляет перебор DISPID с помощью DispatchEx_GetNextDispID. И этот процесс никогда не заканчивается, т.к. в последовательности элементов, по которой осуществляется перебор, присутствуют два элемента с одинаковыми id. В результате для первого из этих элементов возвращается следующий id, равный его собственному. При следующем вызове DispatchEx_GetNextDispID находит по id первый из двух этих элементов и возвращает тот же самый "следующий" id. И так до бесконечности.
Поиск по id осуществляется с помощью get_builtin_func. У интерфейсов IHTMLAnchorElement и IHTMLElement2 действительно есть методы с одинаковыми DISPID (например, tabIndex и onblur). Ошибка не в объявлении интерфейсов. Сделал, чтобы элементы с одинаковым DISPID не добавлялись. 1С перестала зависать сразу же после запуска. > Но после переключения на другое окно возникает проблема с отрисовкой содержимого окна 1С.
Проявляется также после сворачивания и восстановления. При этом выводится куча сообщений вида
trace:msg:peek_message got type 6 msg f (WM_PAINT) hwnd 0x3007e wp 0 lp 0
В структуре окна с хэндлом 0x3007e (хэндл не всегда именно такой) в wineserver оказывается выставленным update_region. В результате при каждом вызове GetMessage или PeekMessage получается WM_PAINT.
> trace:msg:peek_message got type 6 msg f (WM_PAINT) hwnd 0x3007e wp 0 lp 0
DispatchMessageW, которую 1С вызывает для обработки этих сообщений, устанавливает ошибку ERROR_INVALID_WINDOW_HANDLE. Ошибка вызвана тем, что WIN_GetPtr возвращает NULL для hwnd из этих сообщений.
Оказалось, что проблема вызвана порчей памяти из-за бага в реализации msvcr90._recalloc. Отлично. Задача 6736. При попытке загрузить Новости Онлайн вылезает падение на assert() из-за исправления в add_func_info (mshtml: Prevent duplicating members (eterbug #8128))
> В библиотеке mshtml есть функция add_func_info, в которой стоит
>
> assert(info->prop_vt == VT_EMPTY || vt == info->prop_vt);
>
> vt получается из входных параметров, info выбирается в начале функции. Вот всё
> дело как раз в том, как выбирается info.
> В ветках 2.1/eterhack и winehq это условие неодинаково, что и оъясняет наличие
> данной ошибки при выполнении программ только в 2.1/eterhack. Если поменять
> условие в 2.1/eterhack на такое как в winehq(а изменено оно было для баги 8128
> - Падение 1c82), то ошибка исчезает: gecko перестает закрывать документ, и, как
> я понимаю, поэтому iexplore и Гарант начинают отображать нужные страницы.
>
> Если отслеживать сравниваемые значения и memid, то можно заметить, что они не
> всегда корректны... например достаточно частый случай, когда memid ("Определяет
> идентификатор члена функции") - большое отрицательное число.
> В момент падения, в частности, "vt == info->prop_vt" соответствовало "9 == 8",
> memid = -235....8, info->id = 1080.
попыталась воспроизвести проблему: С данным изменением из без него разницы в работе 1с не заметила... Возможно, что-то делаю неправильно?
Изучила функцию ещё раз... еще раз попыталась воспроизвести. Отправила Revert... (В ответ на comment #18) > Изучила функцию ещё раз... еще раз попыталась воспроизвести. Отправила > Revert... Просьба задачи по тестированию по возможности поручать тестировщикам. У Светы такие вещи проверять очень даже хорошо получается. Тем более, что багу она заводила. |
Created attachment 2420 [details] 1 При первом запуске конфигурации под конкретным пользователем 1с82 окно заставки остается и после открытия программы (зависает). Если под этим же пользователем войти еще раз,такого не наблюдается. Если войти под другим пользователем в эту же базу,бага проявляется снова.