Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 2085 - 1с 7.7: Падение при включении возможности "ЭмулироватьДерево" (FormEx)   Make a simular bug
Summary: 1с 7.7: Падение при включении возможности "ЭмулироватьДерево" (FormEx)
Status: CLOSED FIXED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: Общее (show other bugs)
Version: unspecified
Hardware: PC All
: P4 normal
Target Milestone: ---
Assignee: Илья Шпигорь
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 4284
  Show dependency treegraph
 
In work:
Reported: 2008-07-07 16:09 MSD by Alexeev Alexey
Modified: 2014-09-12 02:54 MSK (History)
9 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments
конфигурация (251.38 KB, application/zip)
2010-11-18 03:58 MSK, Alexeev Alexey
Details
лог из консоли (7.62 KB, text/plain)
2010-11-18 03:58 MSK, Andrey Vusik
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Alexeev Alexey Живая Классика 2008-07-07 16:09:28 MSD
Created attachment 550 [details]
конфигурация

Необходимо проверить присланную клиентом конфигурацию на 1с 7.7 SQL.
Конфигурация в аттаче. Инструкция по воспроизведению ошибки:

Как повторить баг (в тестовой конфигурации):

Режим 1:
Операции -> Константы -> ЭмулироватьДерево = 0

Форма справочника "Агенты_Брокеры" открывается и закрывается без каких-либо последствий.


Режим 2:
Операции -> Константы -> ЭмулироватьДерево = 1

Форма справочника "Агенты_Брокеры" открывается, дерево эмулируется, ветки раскрываются/закрываются.
Но при закрытии формы справочника программа "подвисает" на пару секунд и вываливается без каких-либо сообщений.

FormEx - версия 2.0.5.91 от 30.06.2008, также такой же эффект наблюдается на предыдущих версиях.
wine@etersoft - 1.0.8, получен примерно 20.06.08

PS в windows xp, windows server 2003 всё отрабатывает без каких-либо негативных последствий.
Comment 1 Andrey Vusik Живая Классика 2008-07-07 17:49:43 MSD
Воспроизвести не удалось. --- "Не найден файл FormEx.dll"
Comment 2 Titlinov_Alexey 2008-07-08 12:41:58 MSD
(In reply to comment #1)
> Воспроизвести не удалось. --- "Не найден файл
> FormEx.dll"
> 
Файл FormEx.dll в прилагаемой конфигурации находится в каталоге базы данных и по умолчанию загружается оттуда.
Comment 3 Andrey Vusik Живая Классика 2008-07-13 19:43:39 MSD
Было несоответствие в путях. Теперь всё ок. Со вторым случаем разобрался - бага есть. Теперь по первому - я так понял, Форма справочника "Агенты_Брокеры" со значением "0" открываться не должно?
Comment 4 Andrey Vusik Живая Классика 2008-07-13 19:50:02 MSD
Created attachment 576 [details]
лог из консоли

Бутылка 1c77-27
Последняя база в списке.
Багу подтверждаю
Comment 5 Titlinov_Alexey 2008-07-14 11:52:12 MSD
(In reply to comment #3)
> Было несоответствие в путях. Теперь всё ок.
> Со вторым случаем разобрался - бага есть.
> Теперь по первому - я так понял, Форма
> справочника "Агенты_Брокеры" со значением
> "0" открываться не должно?
> 

ЭмулироватьДерево = 0 - открывается стандартная форма списка справочника 1С, там всё ОК.
ЭмулироватьДерево = 1 - открывается эмуляция формы списка справочника с использованием FormEx, 1С падает при закрытии этой сэмулированной формы.
Comment 6 Денис Баранов Живая Классика 2008-09-12 21:46:39 MSD
Ошибку воспроизвел в бутылке 1c77-27 база называется 2085.
После закрытия формы получилось:
Register dump:
 CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b
 EIP:5f4d1c6e ESP:0032bf4b EBP:004eff98 EFLAGS:00010207(   - 00      -RIP1C)
 EAX:00005f49 EBX:0032bf88 ECX:010ddc70 EDX:0000103c
 ESI:000100a0 EDI:4eff9800
Stack dump:
0x0032bf4b:  32bf8800 00000000 0dbbb000 32c7c801
0x0032bf5b:  32bf9400 0100a000 0dbbb000 4032fe01
0x0032bf6b:  00103c5f 4eff9800 32bf8800 00000000
0x0032bf7b:  0dbbb000 0dbbb001 00004e01 32c00800
0x0032bf8b:  32c7c800 00103c00 32c01800 401df000
0x0032bf9b:  00103c5f ffff9800 32c008ff 0dbbb000
Backtrace:
=>1 0x5f4d1c6e in mfc42 (+0xd1c6e) (0x004eff98)
  2 0x00000000 (0x00000000)
0x5f4d1c6e: addb        %al,0x0(%eax)
Modules:
Module  Address                 Debug info      Name (107 modules)
PE        400000-  453000       Deferred        1cv7s
PE      1f000000-1f013000       Deferred        type32
PE      1f100000-1f12c000       Deferred        dbeng32
PE      1f200000-1f22e000       Deferred        br32
PE      1f300000-1f399000       Deferred        frame
PE      1f400000-1f464000       Deferred        zlibeng
PE      1fa00000-1fa8a000       Deferred        formex
PE      20000000-202b1000       Deferred        bkend
PE      21000000-2102b000       Deferred        blang
PE      22000000-22150000       Deferred        seven
PE      23000000-2302d000       Deferred        txtedt
PE      25000000-2508b000       Deferred        moxel
PE      26000000-26058000       Deferred        userdef
PE      27000000-27090000       Deferred        editr
PE      28000000-2807e000       Deferred        rgproc
PE      2a000000-2a148000       Deferred        basic
PE      2b000000-2b00d000       Deferred        trade
PE      2c000000-2c03b000       Deferred        salary
PE      2e000000-2e006000       Deferred        distrdb
PE      2f000000-2f0db000       Deferred        account
PE      31000000-311c2000       Deferred        1crcrus
PE      48000000-4806c000       Deferred        riched20
PE      5f300000-5f329000       Deferred        olepro32
PE      5f400000-5f4f2000       Export          mfc42
PE      65340000-653d2000       Deferred        oleaut32
PE      65f00000-65fc2000       Deferred        ole32
PE      70100000-70153000       Deferred        rpcrt4
PE      70bd0000-70c34000       Deferred        shlwapi
PE      78000000-78044000       Deferred        msvcrt
ELF     7b800000-7b93a000       Deferred        kernel32<elf>
  \-PE  7b820000-7b93a000       \               kernel32
ELF     7bc00000-7bcc1000       Deferred        ntdll<elf>
  \-PE  7bc10000-7bcc1000       \               ntdll
ELF     7bf00000-7bf03000       Deferred        <wine-loader>
ELF     7e23b000-7e29b000       Deferred        winedos<elf>
  \-PE  7e240000-7e29b000       \               winedos
ELF     7e29b000-7e2c2000       Deferred        msacm32<elf>
  \-PE  7e2a0000-7e2c2000       \               msacm32
ELF     7e2c2000-7e2d9000       Deferred        msacm32<elf>
  \-PE  7e2d0000-7e2d9000       \               msacm32
ELF     7e2d9000-7e2e1000       Deferred        librt.so.1
ELF     7e2e1000-7e3a3000       Deferred        libasound.so.2
ELF     7e3a5000-7e3b9000       Deferred        midimap<elf>
  \-PE  7e3b0000-7e3b9000       \               midimap
ELF     7e3b9000-7e3ee000       Deferred        winealsa<elf>
  \-PE  7e3c0000-7e3ee000       \               winealsa
ELF     7e3ee000-7e480000       Deferred        winmm<elf>
  \-PE  7e400000-7e480000       \               winmm
ELF     7e480000-7e494000       Deferred        lz32<elf>
  \-PE  7e490000-7e494000       \               lz32
ELF     7e494000-7e4ad000       Deferred        version<elf>
  \-PE  7e4a0000-7e4ad000       \               version
ELF     7e4ad000-7e559000       Deferred        comdlg32<elf>
  \-PE  7e4b0000-7e559000       \               comdlg32
ELF     7e59d000-7e5a1000       Deferred        libgpg-error.so.0
ELF     7e5a1000-7e613000       Deferred        libgcrypt.so.11
ELF     7e613000-7e623000       Deferred        libtasn1.so.3
ELF     7e623000-7e69c000       Deferred        libgnutls.so.13
ELF     7e69c000-7e6d0000       Deferred        libcups.so.2
ELF     7e6d3000-7e6e6000       Deferred        riched32<elf>
  \-PE  7e6e0000-7e6e6000       \               riched32
ELF     7e6e6000-7e71c000       Deferred        winspool<elf>
  \-PE  7e6f0000-7e71c000       \               winspool
ELF     7e721000-7e754000       Deferred        uxtheme<elf>
  \-PE  7e730000-7e754000       \               uxtheme
ELF     7e769000-7e76e000       Deferred        libxfixes.so.3
ELF     7e76e000-7e777000       Deferred        libxcursor.so.1
ELF     7e777000-7e77a000       Deferred        libxcomposite.so.1
ELF     7e77a000-7e780000       Deferred        libxrandr.so.2
ELF     7e780000-7e788000       Deferred        libxrender.so.1
ELF     7e788000-7e78d000       Deferred        libxxf86vm.so.1
ELF     7e78d000-7e790000       Deferred        libxinerama.so.1
ELF     7e790000-7e7b0000       Deferred        imm32<elf>
  \-PE  7e7a0000-7e7b0000       \               imm32
ELF     7e7b0000-7e7b5000       Deferred        libxdmcp.so.6
ELF     7e7b5000-7e7b8000       Deferred        libxau.so.6
ELF     7e7b8000-7e7d0000       Deferred        libxcb.so.1
ELF     7e7d0000-7e7e7000       Deferred        libice.so.6
ELF     7e7e7000-7e8d0000       Deferred        libx11.so.6
ELF     7e8d0000-7e8de000       Deferred        libxext.so.6
ELF     7e8de000-7e8e6000       Deferred        libsm.so.6
ELF     7e8fc000-7e995000       Deferred        winex11<elf>
  \-PE  7e910000-7e995000       \               winex11
ELF     7ea2a000-7eb46000       Deferred        shell32<elf>
  \-PE  7ea40000-7eb46000       \               shell32
ELF     7eb46000-7ec07000       Deferred        comctl32<elf>
  \-PE  7eb50000-7ec07000       \               comctl32
ELF     7ec07000-7ec59000       Deferred        advapi32<elf>
  \-PE  7ec10000-7ec59000       \               advapi32
ELF     7ec59000-7ec79000       Deferred        libexpat.so.1
ELF     7ec79000-7ec8d000       Deferred        libz.so.1
ELF     7ec8d000-7ecb7000       Deferred        libfontconfig.so.1
ELF     7ecb7000-7ed32000       Deferred        libfreetype.so.6
ELF     7ed32000-7edcf000       Deferred        gdi32<elf>
  \-PE  7ed40000-7edcf000       \               gdi32
ELF     7edcf000-7ef17000       Deferred        user32<elf>
  \-PE  7edf0000-7ef17000       \               user32
ELF     7ef37000-7ef7b000       Deferred        libwine-etersoft.so.1
ELF     7ef7b000-7ef7d000       Deferred        libxcb-xlib.so.0
ELF     7ef7d000-7ef81000       Deferred        libuuid.so.1
ELF     7efc4000-7efea000       Deferred        libm.so.6
ELF     7eff6000-7f000000       Deferred        libnss_files.so.2
ELF     b7c8a000-b7c8e000       Deferred        libdl.so.2
ELF     b7c8e000-b7db7000       Deferred        libc.so.6
ELF     b7db7000-b7dcd000       Deferred        libpthread.so.0
ELF     b7dce000-b7f04000       Deferred        libwine.so.1
ELF     b7f1a000-b7f34000       Deferred        ld-linux.so.2
Threads:
process  tid      prio (all id:s are in hex)
0000000c
        0000000e    0
        0000000d    0
00000027 (D) C:\Program Files\1Cv77\BIN\1cv7s.exe
        00000028    0 <==
00000029
        0000002a    0
Backtrace:
=>1 0x5f4d1c6e in mfc42 (+0xd1c6e) (0x004eff98)
  2 0x00000000 (0x00000000)
Comment 7 Константин Кондратюк Живая Классика 2009-02-27 16:54:05 MSK
Подтверждаю для текущего 1.0.10
Comment 8 Vitaly Lipatov Живая Классика 2009-02-27 20:40:54 MSK
Бага должна называться хотя бы "Проблемы при использовании FormEx"
http://www.dorex.ru/?projects&formex
Лучше всего попросить потестировать автора.
Я увидел, что она входит в 1С++, возможно кто-то из сообщества сможет посмотреть.
Возможно, что это ошибка в самой FormEx, что-то не учтено. Тогда нужно FormEx, собранную с отладкой или трейсами, и посмотреть, что там выходит.
Comment 9 Константин Кондратюк Живая Классика 2009-04-10 15:47:51 MSD
Обновил FormEx до версии 2.0.5.93
Ситуация с падениями не изменилась.
Comment 10 Антон Азанов (Djelf) 2009-04-22 16:45:04 MSD
Исходники formex никогда отдельно не выкладывались.
Однако, существует релиз 1С++ с включенным formex. Исходники тут: http://www.1cpp.ru/files/1cpp-2.0.3.7.src.zip
Последний доступный formex 2.0.5.94 (beta 6): http://www.1cpp.ru/forum/YaBB.pl?num=1208156473/46#46 (ситуация с падениями не изменилась.)
Кроме самого АЛьФ`а http://www.1cpp.ru/forum/YaBB.pl?action=viewprofile;username=alf к исходникам имеет доступ artbear http://www.1cpp.ru/forum/YaBB.pl?action=viewprofile;username=artbear (что видно по внесенным им изменениям в formex).
Comment 11 Иван Дончевский Живая Классика 2009-07-03 16:48:39 MSD
скорее всего дело в обращении к listView после его уничтожения, т.к. при отмене посылки команд на него программа не вылетает при закрытии диалога
Comment 12 Иван Дончевский Живая Классика 2009-07-03 17:21:45 MSD
ошибка происходит при сообщении WM_NCDESTROY, а именно при вызове LISTVIEW_DeleteAllItems в функции LISTVIEW_NCDestroy
Comment 13 Иван Дончевский Живая Классика 2009-07-03 17:48:33 MSD
конкретно программа падает при посылке SendMessageW(infoPtr->hwndNotify, WM_NOTIFY, pnmh->idFrom, (LPARAM)pnmh); из notify_hdr, вызванного notify_listview в LISTVIEW_DeleteAllItems
скорее всего, причина - сообщение посылается на несуществующие данные
Comment 14 Vitaly Lipatov Живая Классика 2009-07-03 18:33:42 MSD
По нашей гипотезе, которую мы пока не смогли проверить, эта компонента должна падать и на Windows 98.
Гипотеза в том, что Windows 2000 и выше скрывает (перехватывает) искл. ситуации (SegFaults) OLE-компонент, и приложение не замечает падения компоненты в момент её завершения.
Чтобы это проверить, нужно запустить в Windows 98 (что очень желательно), либо промоделировать ошибку OLE-компоненты в программе, запускаемой через winexp (не 1С 7.7).
В общем случае ошибку надо исправлять в коде компоненты.

Антон, может быть Вы можете связаться с разработчиками, если ещё интересно?
Comment 15 Константин Кондратюк Живая Классика 2009-07-03 21:12:30 MSD
(In reply to comment #14)
> Антон, может быть Вы можете связаться с
> разработчиками, если ещё интересно?

С разработчиком я довольно плотно общаюсь, если мы локализуем ошибку, он найдёт и исправит у себя.
Comment 16 Vitaly Lipatov Живая Классика 2009-07-03 21:45:40 MSD
Ошибка локализована - неверный порядок уничтожения объектов при завершении компоненты, поэтому сначала удаляется окно и данные, связанные с оконной процедурой, а потом уничтожается список внутри окна. Должно быть наоборот.

Причина, по которой в Windows не видно проблемы, описана здесь:
http://support.microsoft.com/kb/198623

Нужно тестировать, похоже

[HKEY_LOCAL_MACHINE\Software\Microsoft\Ole]
IgnoreServerExceptions="Y"


When the above key is set, the COM/RPC run time will pass the following exceptions on to the caller (for debug purposes):
•	STATUS_ACCESS_VIOLATION
•	STATUS_POSSIBLE_DEADLOCK
•	STATUS_DATATYPE_MISALIGNMENT
•	STATUS_INSTRUCTION_MISALIGNMENT
•	STATUS_ILLEGAL_INSTRUCTION
•	STATUS_PRIVILEGED_INSTRUCTION
Comment 17 Vitaly Lipatov Живая Классика 2009-07-04 15:05:11 MSD
Ваня сделал DLL, которая падает:
/var/ftp/pvt/Windows/Testing/Bugs/2085/test_access_violation

Usage:
1. put mso_to_oo.dll to windows/system32
2. regsvr32 mso_to_oo.dll
3. run cscript /E:vbscript test1.vbs

Через wine98/winexp всё равно падает. Также пробовали её в Windows XP
через vbscript или через 1С 7.7: всё равно падает,
IgnoreServerExceptions эффекта не дало.
Возможно, компоненты для 1С устроены по другому.

Comment 18 Антон Азанов (Djelf) 2009-07-05 02:27:08 MSD
Небольшое дополнение к падению: 
Дерево+Таблица падает не всегда. На отчетах, обработках и т.п. объект работает и не падает (во всех W@E начиная с 1.0.7). 
Падение Дерева+Таблица происходит на формах справочников, документов, журналов если на них есть объект 1С "Многострочная часть" (на форме списка справочника удалить этот объект невозможно).
Comment 19 Антон Азанов (Djelf) 2009-07-05 12:39:51 MSD
В форуме 1с++ проскальзывали сообщения о методе удалении элементов управления на форме: http://www.1cpp.ru/forum/YaBB.pl?num=1178269183/225
Как я понял ситуацию: создавать элементы научились, удалять нет, т.к. удалять их нужно в обратном порядке, иначе 1С падает.
Возможно в ситуации "Деревом+Таблица" + "Многострочная часть" каким то образом путается порядок удаления элементов управления.
Comment 20 Константин Кондратюк Живая Классика 2010-01-30 12:23:03 MSK
Илья, нужно ещё раз написать автору и узнать, будет ли он заниматься решением.
Нам тут исправлять нечего, это ошибка FormEx.
Comment 21 Илья Шпигорь Живая Классика 2010-02-27 15:33:21 MSK
Выложил патч.

Проблема связана с тем, что при закрытии формы listview контрол посылает сообщение WM_NOTIFY своему родителю. Для этого родителя уже вызывался DestroyWindow, поэтому при вызове его окнной процедуры возникает page fault.

Решение заключается в обработке исключения с помощью блока __TRY в функции вызова оконной процедуры - call_window_proc.

Возможно, не все WM_NOTIFY посылаемые при уничтожении listview контрола будут обрабатываться, но, во всяком случае, падать перестало.
Comment 22 Andrey Vusik Живая Классика 2010-02-27 18:39:45 MSK
(In reply to comment #21)
> Выложил патч.
> 

1.0.12-eter3/1

Ошибки нет.

Отписал на kb
Comment 23 Vitaly Lipatov Живая Классика 2014-09-12 02:54:13 MSK
Закрываем баги, принятые более года назад, и до сих пор не закрытые.