[Bug 434] Changed - Mouse button don't get released (Macromedia Flash 5.0)
wine-bugs at winehq.com
wine-bugs at winehq.com
Fri Apr 5 18:05:00 CST 2002
http://bugs.codeweavers.com/show_bug.cgi?id=434
*** shadow/434 Fri Apr 5 08:45:15 2002
--- shadow/434.tmp.5789 Fri Apr 5 18:05:00 2002
***************
*** 135,137 ****
--- 135,296 ----
going to stdout) Is there a click/release timer that could be
increased?
+
+
+ ------- Additional Comments From ivanovich at menta.net 2002-04-05 18:05 -------
+ I tried to find myself what was happening with this bug and did some debugging,
+ i don't have the knowledge to understand what happens but maybe someone can find
+ this useful:
+
+ 1- Some observations
+ 2- Output from strace when hitting the bug
+ 3- Output from gdb when backtracing the wine process which seems to loop
+
+
+ 1. all tests performed on Macromedia Flash 5
+ - Bug happens after clicking the left mouse button over the draw zone
+ - The bug seems an endless loop of some kind (probably waiting for a mouse
+ button release event which isn't sent or something like this), 100% cpu gets
+ used by process wine, wineserver, and X. They use about 33% load each (X uses a
+ bit more)
+ - Strace shows an error from the read system call which maybe is related with
+ the bug
+ - While waiting for mouse button release event, the application constantly
+ draws a rectangle from the point where the mouse button was clicked down to the
+ point where the cursor is actually located (this is normal behaviour in winblows
+ while you drag the mouse).
+ Maybe the function or proccess drawing of that rectangle is using the
+ resource which strace error log is talking about (resource temporarily
+ unavailable).
+
+ 2- strace output
+
+ When it enters the bug the strace output looks like this
+ I have no idea about it but can the "Reource temporarily unavailable" error
+ can be caused by someone trying to read mouse status and being unable to do so?
+ command run to get the output: strace wine flash.exe
+
+ read(10, 0x405b6788, 32) = -1 EAGAIN (Resource temporarily
+ unavailable)
+ select(11, [10], NULL, NULL, NULL) = 1 (in [10])
+ read(10, "\1\1d\36\0\0\0\0p\0\0\0\300\376\340\0u\2v\2u\2v\2\4\0\35"..., 32) = 32
+ gettimeofday({1018043017, 590545}, NULL) = 0
+ rt_sigprocmask(SIG_BLOCK, [HUP INT ALRM IO], [32], 8) = 0
+ write(4, "s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64
+ read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64
+ rt_sigprocmask(SIG_SETMASK, [32], NULL, 8) = 0
+ write(10, "&\1\2\0p\0\0\0", 8) = 8
+ read(10, 0x405b6788, 32) = -1 EAGAIN (Resource temporarily
+ unavailable)
+ select(11, [10], NULL, NULL, NULL) = 1 (in [10])
+ read(10, "\1\1e\36\0\0\0\0p\0\0\0\300\376\340\0u\2v\2u\2v\2\4\0\377"..., 32) =
+ 32
+ gettimeofday({1018043017, 607734}, NULL) = 0
+ gettimeofday({1018043017, 607765}, NULL) = 0
+ rt_sigprocmask(SIG_BLOCK, [HUP INT ALRM IO], [32], 8) = 0
+ write(4, "s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64
+ read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64
+ rt_sigprocmask(SIG_SETMASK, [32], NULL, 8) = 0
+ write(10, "&\1\2\0p\0\0\0", 8) = 8
+ read(10, 0x405b6788, 32) = -1 EAGAIN (Resource temporarily
+ unavailable)
+ select(11, [10], NULL, NULL, NULL) = 1 (in [10])
+ read(10, "\1\1f\36\0\0\0\0p\0\0\0\300\376\340\0u\2v\2u\2v\2\4\0\35"..., 32) = 32
+ gettimeofday({1018043017, 609112}, NULL) = 0
+ rt_sigprocmask(SIG_BLOCK, [HUP INT ALRM IO], [32], 8) = 0
+ write(4, "s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64
+ read(5, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64
+ rt_sigprocmask(SIG_SETMASK, [32], NULL, 8) = 0
+ write(10, "&\1\2\0p\0\0\0", 8) = 8
+
+ 3- gdb output
+
+ I run gdb wine in the wine source directory.
+ I followed the procedure explained in the wine debugging FAQ, section for
+ endless loops (http://wine.codeweavers.com/fom-meta/cache/251.html)
+ Then i attach the process wine which is using the cpu (there are another
+ processes called wine but they're not using cpu)
+ Then i run "bt" inside gdb, the output of backtrace is this:
+ #0 0x402fc51e in __select () from /lib/i686/libc.so.6
+ #1 0x40e3e1b4 in _XlcPublicMethods () from /usr/X11R6/lib/libX11.so.6
+ #2 0x40d7e6da in _XRead () from /usr/X11R6/lib/libX11.so.6
+ #3 0x40d7f19a in _XReply () from /usr/X11R6/lib/libX11.so.6
+ #4 0x40d75b0e in XQueryPointer () from /usr/X11R6/lib/libX11.so.6
+ #5 0x40cb7b69 in TSXQueryPointer () from /usr/local/lib/libwine_tsx11.so
+ #6 0x000033ec in ?? ()
+ Cannot access memory at address 0xfffffd84
+
+ Then i run "n" as suggested by the wine debugging FAQ, the outputs of some
+ consecutive "n"s are this:
+
+ (gdb) n
+ Single stepping until exit from function __select,
+ which has no line number information.
+ 0x40d7d973 in _XPollfdCacheDel () from /usr/X11R6/lib/libX11.so.6
+ (gdb) n
+ Single stepping until exit from function _XPollfdCacheDel,
+ which has no line number information.
+ 0x40d7e6da in _XRead () from /usr/X11R6/lib/libX11.so.6
+ (gdb) n
+ Single stepping until exit from function _XRead,
+ which has no line number information.
+ 0x40d7f19a in _XReply () from /usr/X11R6/lib/libX11.so.6
+ (gdb) n
+ Single stepping until exit from function _XReply,
+ which has no line number information.
+ 0x40d75b0e in XQueryPointer () from /usr/X11R6/lib/libX11.so.6
+ (gdb) n
+ Single stepping until exit from function XQueryPointer,
+ which has no line number information.
+ 0x40cb7b69 in TSXQueryPointer () from /usr/local/lib/libwine_tsx11.so
+ (gdb) n
+ Single stepping until exit from function TSXQueryPointer,
+ which has no line number information.
+ 0x40c6ca5f in X11DRV_GetCursorPos () from /usr/local/lib/wine/x11drv.dll.so
+ (gdb) n
+ Single stepping until exit from function X11DRV_GetCursorPos,
+ which has no line number information.
+ 0x406cbb19 in GetCursorPos () from /usr/local/lib/wine/user32.dll.so
+ (gdb) n
+ Single stepping until exit from function GetCursorPos,
+ which has no line number information.
+
+ here the cpu gets 100% used and the function dont returns
+
+ Sometimes i get another backtrace when i detach and try again:
+
+ (gdb) bt
+ #0 0x402f5964 in __libc_read () from /lib/i686/libc.so.6
+ #1 0x400fbc1c in __DTOR_END__ () from /usr/local/lib/libntdll.dll.so
+ #2 0x008d59db in ?? ()
+ #3 0x0075b17a in ?? ()
+ #4 0x0075abb8 in ?? ()
+ #5 0x0075987b in ?? ()
+ #6 0x00759b86 in ?? ()
+ #7 0x406ea87f in WINPROC_wrapper () from /usr/local/lib/wine/user32.dll.so
+ #8 0x406ea921 in WINPROC_CallWndProc () from /usr/local/lib/wine/user32.dll.so
+ (gdb) n
+ Single stepping until exit from function __libc_read,
+ which has no line number information.
+ 0x400c97b4 in read_reply_data () from /usr/local/lib/libntdll.dll.so
+ Current language: auto; currently asm
+ (gdb) n
+ Single stepping until exit from function read_reply_data,
+ which has no line number information.
+ 0x400c9833 in wine_server_call () from /usr/local/lib/libntdll.dll.so
+ (gdb) n
+ Single stepping until exit from function wine_server_call,
+ which has no line number information.
+ 0x406da076 in GetInputState () from /usr/local/lib/wine/user32.dll.so
+ (gdb) n
+ Single stepping until exit from function GetInputState,
+ which has no line number information.
+
+
+ One more thing:
+ Rick, i tried running wine --debugmsg +scroll,+event,+toolbar,+gdi,+heap
+ flash.exe as you pointed, but it didn't worked for my case, the bug still shows.
+
+ And, can you please try to run your app with strace wine yourapp.exe and trigger
+ the bug? If you do, you get a read error like mine? Don't know if it's important
+ but it seems to me it's related.
\ No newline at end of file
More information about the wine-bugs
mailing list