Created attachment 2420 [details] 1 При первом запуске конфигурации под конкретным пользователем 1с82 окно заставки остается и после открытия программы (зависает). Если под этим же пользователем войти еще раз,такого не наблюдается. Если войти под другим пользователем в эту же базу,бага проявляется снова.
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... Просьба задачи по тестированию по возможности поручать тестировщикам. У Светы такие вещи проверять очень даже хорошо получается. Тем более, что багу она заводила.