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 всё отрабатывает без каких-либо негативных последствий.
Воспроизвести не удалось. --- "Не найден файл FormEx.dll"
(In reply to comment #1) > Воспроизвести не удалось. --- "Не найден файл > FormEx.dll" > Файл FormEx.dll в прилагаемой конфигурации находится в каталоге базы данных и по умолчанию загружается оттуда.
Было несоответствие в путях. Теперь всё ок. Со вторым случаем разобрался - бага есть. Теперь по первому - я так понял, Форма справочника "Агенты_Брокеры" со значением "0" открываться не должно?
Created attachment 576 [details] лог из консоли Бутылка 1c77-27 Последняя база в списке. Багу подтверждаю
(In reply to comment #3) > Было несоответствие в путях. Теперь всё ок. > Со вторым случаем разобрался - бага есть. > Теперь по первому - я так понял, Форма > справочника "Агенты_Брокеры" со значением > "0" открываться не должно? > ЭмулироватьДерево = 0 - открывается стандартная форма списка справочника 1С, там всё ОК. ЭмулироватьДерево = 1 - открывается эмуляция формы списка справочника с использованием FormEx, 1С падает при закрытии этой сэмулированной формы.
Ошибку воспроизвел в бутылке 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)
Подтверждаю для текущего 1.0.10
Бага должна называться хотя бы "Проблемы при использовании FormEx" http://www.dorex.ru/?projects&formex Лучше всего попросить потестировать автора. Я увидел, что она входит в 1С++, возможно кто-то из сообщества сможет посмотреть. Возможно, что это ошибка в самой FormEx, что-то не учтено. Тогда нужно FormEx, собранную с отладкой или трейсами, и посмотреть, что там выходит.
Обновил FormEx до версии 2.0.5.93 Ситуация с падениями не изменилась.
Исходники 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).
скорее всего дело в обращении к listView после его уничтожения, т.к. при отмене посылки команд на него программа не вылетает при закрытии диалога
ошибка происходит при сообщении WM_NCDESTROY, а именно при вызове LISTVIEW_DeleteAllItems в функции LISTVIEW_NCDestroy
конкретно программа падает при посылке SendMessageW(infoPtr->hwndNotify, WM_NOTIFY, pnmh->idFrom, (LPARAM)pnmh); из notify_hdr, вызванного notify_listview в LISTVIEW_DeleteAllItems скорее всего, причина - сообщение посылается на несуществующие данные
По нашей гипотезе, которую мы пока не смогли проверить, эта компонента должна падать и на Windows 98. Гипотеза в том, что Windows 2000 и выше скрывает (перехватывает) искл. ситуации (SegFaults) OLE-компонент, и приложение не замечает падения компоненты в момент её завершения. Чтобы это проверить, нужно запустить в Windows 98 (что очень желательно), либо промоделировать ошибку OLE-компоненты в программе, запускаемой через winexp (не 1С 7.7). В общем случае ошибку надо исправлять в коде компоненты. Антон, может быть Вы можете связаться с разработчиками, если ещё интересно?
(In reply to comment #14) > Антон, может быть Вы можете связаться с > разработчиками, если ещё интересно? С разработчиком я довольно плотно общаюсь, если мы локализуем ошибку, он найдёт и исправит у себя.
Ошибка локализована - неверный порядок уничтожения объектов при завершении компоненты, поэтому сначала удаляется окно и данные, связанные с оконной процедурой, а потом уничтожается список внутри окна. Должно быть наоборот. Причина, по которой в 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
Ваня сделал 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С устроены по другому.
Небольшое дополнение к падению: Дерево+Таблица падает не всегда. На отчетах, обработках и т.п. объект работает и не падает (во всех W@E начиная с 1.0.7). Падение Дерева+Таблица происходит на формах справочников, документов, журналов если на них есть объект 1С "Многострочная часть" (на форме списка справочника удалить этот объект невозможно).
В форуме 1с++ проскальзывали сообщения о методе удалении элементов управления на форме: http://www.1cpp.ru/forum/YaBB.pl?num=1178269183/225 Как я понял ситуацию: создавать элементы научились, удалять нет, т.к. удалять их нужно в обратном порядке, иначе 1С падает. Возможно в ситуации "Деревом+Таблица" + "Многострочная часть" каким то образом путается порядок удаления элементов управления.
Илья, нужно ещё раз написать автору и узнать, будет ли он заниматься решением. Нам тут исправлять нечего, это ошибка FormEx.
Выложил патч. Проблема связана с тем, что при закрытии формы listview контрол посылает сообщение WM_NOTIFY своему родителю. Для этого родителя уже вызывался DestroyWindow, поэтому при вызове его окнной процедуры возникает page fault. Решение заключается в обработке исключения с помощью блока __TRY в функции вызова оконной процедуры - call_window_proc. Возможно, не все WM_NOTIFY посылаемые при уничтожении listview контрола будут обрабатываться, но, во всяком случае, падать перестало.
(In reply to comment #21) > Выложил патч. > 1.0.12-eter3/1 Ошибки нет. Отписал на kb
Закрываем баги, принятые более года назад, и до сих пор не закрытые.