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@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