http://bugs.winehq.org/show_bug.cgi?id=28915
Bug #: 28915 Summary: eclipse complains "'Periodic workspace save.' has encountered a problem." Product: Wine Version: 1.3.31 Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: kernel32 AssignedTo: wine-bugs@winehq.org ReportedBy: dank@kegel.com Classification: Unclassified
Current CDT eclipse-cpp-indigo-SR1-incubation-win32.zip with current Oracle JDK jdk-7u1-windows-i586.exe starts up ok, and lets you create a hello, world c++ project, but then complains "'Periodic workspace save.' has encountered a problem.". Saving doesn't seem to work properly.
To trace this, best to use taskset -c 1 to avoid thread logs stepping on each other. One sees
0055:Call KERNEL32.CreateFileW(02fec340 L"C:\users\dank\workspace\.metadata\.log",40000000,00000003,00000000,00000004,00000080,00000000) ret=6d374fbe 0055:Ret KERNEL32.CreateFileW() retval=00000300 ret=6d374fbe ... 0055:Call KERNEL32.WriteFile(00000300,0032b8f0,0000024b,0032b8a0,0032b88c) ret=6d3752ac trace:ntdll:NtWriteFile (0x300,(nil),(nil),0x32b88c,0x32b88c,0x32b8f0,0x0000024b,0x32b7b0,(nil))! trace:ntdll:FILE_GetNtStatus errno = 22 trace:ntdll:NtWriteFile = 0xc000000d 0055:Ret KERNEL32.WriteFile() retval=00000000 ret=6d3752ac 0055:Call KERNEL32.GetLastError() ret=6daad6ba 0055:Ret KERNEL32.GetLastError() retval=00000057 ret=6daad6ba 0055:Call KERNEL32.FormatMessageA(00001200,00000000,00000057,00000000,0032b7b0,00000100,00000000) ret=6daad6d8 0055:Ret KERNEL32.FormatMessageA() retval=00000013 ret=6daad6d8 0055:Call ntdll.strlen(0032b7b0 "Invalid parameter") ret=6d375c62 ... An exception occurred while writing to the platform log
Adding prints, I found that it's the pwrite in NtWriteFile that is returning an error. strace -f -o slog taskset -c 1 ~/wine-git/wine eclipse/eclipse.exe shows
17835 pwrite64(112, "!SESSION 2011-10-27 21:43:57.189"..., 587, 18446744073709551615) = -1 EINVAL (Invalid argument) 17835 pwrite64(113, "\r\n!ENTRY org.eclipse.core.resour"..., 3320, 18446744073709551615) = -1 EINVAL (Invalid argument)
18446744073709551615 is -1. So it seems that java/eclipse is doing a pwrite to a file at offset -1. kernel32/tests/file.c tests offset writes, but not with an offset of -1. Sounds like we need a test?