[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