| 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) Принято. |