http://bugs.winehq.org/show_bug.cgi?id=7216
--- Comment #12 from Dan Kegel dank@kegel.com 2008-07-19 22:26:28 ---
From the logs, Picasa seems to be doing
003c:Call KERNEL32.CreateFileW(0032a510 L"C:\windows\profiles\demouser\My Documents\",00000001,00000007,00000000,00000003,42000000,00000000) ret=0070c7da 003c:Ret KERNEL32.CreateFileW() retval=000000d8 ret=0070c7da 003c:Call KERNEL32.CreateEventA(00000000,00000000,00000000,00bd9dc4 "CChangeLoggerd8") ret=005461fa 003c:Ret KERNEL32.CreateEventA() retval=000000dc ret=005461fa ... 0027:Call KERNEL32.ReadDirectoryChangesW(000000d8,7d5179c8,00010000,00000001,00000057,00000000,7d5002b:Ret PE DLL (proc=0x7e67e3a0,module=0x7e660000
once, then the thread that called ReadDirectoryChanges loops forever, doing
0027:Call KERNEL32.GetOverlappedResult(000000d8,7d5179b4,7d5179a4,00000000) ret=005473ee 0027:Ret KERNEL32.GetOverlappedResult() retval=00000000 ret=00547267 0027:Call KERNEL32.GetLastError() ret=00547285 0027:Ret KERNEL32.GetLastError() retval=000003e4 ret=00547285 0027:Call KERNEL32.WaitForSingleObject(000000dc,0000000a) ret=00547291 ... 0027:Ret KERNEL32.WaitForSingleObject() retval=00000102 ret=00547291 0027:Call KERNEL32.QueryPerformanceCounter(7d5178f4) ret=0072ff5e 0027:Ret KERNEL32.QueryPerformanceCounter() retval=00000001 ret=0072ff5e 0027:Call KERNEL32.QueryPerformanceCounter(7d5178f4) ret=0072ff5e 0027:Ret KERNEL32.QueryPerformanceCounter() retval=00000001 ret=0072ff5e 0027:Call KERNEL32.GetCurrentThreadId() ret=005472ce 0027:Ret KERNEL32.GetCurrentThreadId() retval=00000027 ret=005472ce 0027:Call KERNEL32.SetEvent(000000b8) ret=00547312
over and over. For some reason the event passed to ReadDirectoryChanges is never firing. I looked at kernel32/tests/change.c, and it seems to try to test this properly, but it's hard to say if it matches the exact behavior of picasa. I'll try to whip up a little test app that does.