Summary: | Зависает графика (blocked CriticalSection) | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Vitaly Lipatov <lav> |
Component: | Запуск ; Отладка ; Исключения | Assignee: | Александр Морозов <amorozov> |
Status: | CLOSED FIXED | QA Contact: | Денис Баранов <baraka> |
Severity: | major | ||
Priority: | P3 | CC: | kondratyuk, lav, yv |
Version: | 1.0.12 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | Связано с: | 4328, 5774 | |
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 5634, 7363 |
Description
Vitaly Lipatov
2010-07-21 21:14:26 MSD
При возникновении исключения графическое приложение зависает напрочь и приходится его только убивать, нужно чтобы при возникновении CriticalSection выполнение программы продолжалось. воспроизвести проблему можно в buh/pers/3.1 c:/PERS/persw.exe логин/пароль:777 Wine-dbg>info thread process tid prio (all id:s are in hex) 0000000e 00000027 0 0000001f 0 00000014 0 00000010 0 0000000f 0 00000011 00000017 0 00000013 0 00000012 0 00000018 0000002b 0 00000023 0 0000001b 0 0000001a 0 00000019 0 0000001c 00000020 0 0000001e 0 0000001d 0 00000024 00000028 0 00000026 0 00000025 0 00000035 (D) C:\PERS\persw.exe 0000003a 0 00000036 0 <== 00000037 00000038 0 Wine-dbg>bt Backtrace: =>0 0x7ef65a8d RtlpWaitForCriticalSection+0x2fd() in ntdll (0x0032bb60) 1 0x7ef65dc5 RtlEnterCriticalSection+0x45() in ntdll (0x0032bb90) 2 0x7ee33c1c _EnterSysLevel+0x7c() in kernel32 (0x0032bbf0) 3 0x7e9f2560 in user32 (+0xa2560) (0x0032bc10) 4 0x7e9f3418 in user32 (+0xa3418) (0x0032bc50) 5 0x7e971406 in user32 (+0x21406) (0x0032bc80) 6 0x7e971e70 in user32 (+0x21e70) (0x0032bd50) 7 0x7e9720d8 GetClassLongW+0x18() in user32 (0x0032bd70) 8 0x7e9f6d5f GetWindowInfo+0xef() in user32 (0x0032bdb0) 9 0x7e630e80 X11DRV_GetCursorPos+0x80() in winex11 (0x0032bec0) 10 0x7e9a6f77 GetCursorPos+0x27() in user32 (0x0032bee0) 11 0x0c019a82 in vfp7r (+0x19a82) (0x0032bf1c) 12 0x0c019a50 in vfp7r (+0x19a50) (0x0032c00c) 13 0x0c018ab0 in vfp7r (+0x18ab0) (0x0032c174) 14 0x0c018c1d in vfp7r (+0x18c1d) (0x0032c218) 15 0x7ea01b5a WINPROC_wrapper+0x1a() in user32 (0x0032c248) 16 0x7ea03405 in user32 (+0xb3405) (0x0032c328) 17 0x7ea0633b in user32 (+0xb633b) (0x0032c378) 18 0x7e9c6446 DispatchMessageA+0x96() in user32 (0x0032c3c8) 19 0x0c1b1c52 in vfp7r (+0x1b1c52) (0x0032c87c) Wine-dbg>bt 0x3a Backtrace: =>0 0x7ef65a8d RtlpWaitForCriticalSection+0x2fd() in ntdll (0x0579e0a4) 1 0x7ef65dc5 RtlEnterCriticalSection+0x45() in ntdll (0x0579e0d4) 2 0x7e64ef50 wine_tsx11_lock+0x20() in winex11 (0x0579e0f4) 3 0x7e65fac2 X11DRV_XRender_UpdateDrawable+0x22() in winex11 (0x0579e134) 4 0x7e62bf2c X11DRV_ExtEscape+0x35c() in winex11 (0x0579e224) 5 0x7e8cce10 ExtEscape+0x50() in gdi32 (0x0579e254) 6 0x7e6474fa X11DRV_ReleaseDC+0xba() in winex11 (0x0579e2c4) 7 0x7e9d5496 in user32 (+0x85496) (0x0579e2e4) 8 0x7e9d5f4f in user32 (+0x85f4f) (0x0579e394) 9 0x7e9fbda2 in user32 (+0xabda2) (0x0579e4a4) 10 0x7e9f91ba in user32 (+0xa91ba) (0x0579e6b4) 11 0x7e9fa70d CreateWindowExW+0x5d() in user32 (0x0579e704) 12 0x7e99088c in user32 (+0x4088c) (0x0579e814) 13 0x7e991c9b DialogBoxIndirectParamAorW+0x3b() in user32 (0x0579e844) 14 0x7e991d01 DialogBoxIndirectParamW+0x41() in user32 (0x0579e874) 15 0x7e9cfcde MessageBoxIndirectW+0x9e() in user32 (0x0579e8c4) 16 0x7e9d141b MessageBoxIndirectA+0xab() in user32 (0x0579e924) 17 0x7e9d151f MessageBoxExA+0x5f() in user32 (0x0579e974) 18 0x7e9d15a5 MessageBoxA+0x75() in user32 (0x0579e9b4) 19 0x0c1b1aad in vfp7r (+0x1b1aad) (0x0579e9d8) 20 0x7efa7f3d in ntdll (+0x67f3d) (0x0579ea88) 21 0x7efa8120 in ntdll (+0x68120) (0x0579f398) 22 0xb762a6c0 start_thread+0xa0() in libpthread.so.0 (0x0579f498) Происходит взаимоблокировка. Один поток входит в X11DRV_CritSection и затем пытается войти в USER_SysLevel. Другой поток сначала входит в USER_SysLevel, а затем пытается войти в X11DRV_CritSection. Проблема связана с этим коммитом: commit 2130bcfe904b3fb0e3d76d6fe8941b3f257661c7 Author: Ivan Donchevskiy <yv@builder.office.etersoft.ru> Date: Tue Jul 7 13:35:20 2009 +0400 winex11.drv Hack for 1c8.1: not to draw help messages if window is inactive (eterbug #1695) Поправил. WINE@Etersoft 1.0.12 eter7.6/eter13 (testing) Принято. |