http://bugs.winehq.org/show_bug.cgi?id=16162
Summary: Settlers 3 crashes with "wine client error: partial write" Product: Wine Version: 1.1.9 Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: lauri.kentta@gmail.com
Settlers 3 causes a wine client error immediately when run. Tested with all available versions (demo, original, mission pack, QOTA, also with the latest patch).
$ wine s3demo.exe wine client error:2d: partial write 64
The demo version causes the same error. The semi-official download locations did not work for me anymore, but the installer seems to be uploaded here: http://www.sendspace.com/file/nrunbh
(The installer may complain about disk space but works anyway.)
http://bugs.winehq.org/show_bug.cgi?id=16162
--- Comment #1 from Austin English austinenglish@gmail.com 2008-11-23 03:14:53 --- Please attach terminal output.
http://bugs.winehq.org/show_bug.cgi?id=16162
--- Comment #2 from Lauri Kenttä lauri.kentta@gmail.com 2008-11-23 13:04:17 --- It doesn't output anything but that, and setting WINEDEBUG=+all or adding own debugging output to the code (even empty ERR lines) causes a page fault instead. Also, using a debugger causes some other crashes at some other points depending on exact usage, usually a stack overflow or a privileged instruction.
I seem to remember that in the past (a year or two ago) the game managed to start and draw the menu screen once before hanging with timeout in WaitFor-something.
http://bugs.winehq.org/show_bug.cgi?id=16162
--- Comment #3 from Austin English austinenglish@gmail.com 2008-11-23 13:28:24 --- (In reply to comment #2)
It doesn't output anything but that, and setting WINEDEBUG=+all or adding own debugging output to the code (even empty ERR lines) causes a page fault instead. Also, using a debugger causes some other crashes at some other points depending on exact usage, usually a stack overflow or a privileged instruction.
I seem to remember that in the past (a year or two ago) the game managed to start and draw the menu screen once before hanging with timeout in WaitFor-something.
A regression test would help here: http://wiki.winehq.org/RegressionTesting
http://bugs.winehq.org/show_bug.cgi?id=16162
--- Comment #4 from Lauri Kenttä lauri.kentta@gmail.com 2008-11-23 19:03:33 --- (In reply to comment #3)
A regression test would help here: http://wiki.winehq.org/RegressionTesting
It's broken in 1.0-rc4, and that's as far as I can test it, because "make" fails with older commits with this and a few similar errors: signal_i386.c:613: error: ‘VIF_MASK’ undeclared (first use in this function)
I tried building some releases between 0.9.10 and 1.0-rc3, and they all caused the same build error. Any ideas? Versions 0.9.9 and below had some other problems already in "make depend". Those might fail because of newer build software, and that's something I won't even try to change.
I wouldn't be so eager to classify this as a regression. It's quite possible that there has previously been some stubs that have "worked" enough to make the game start without ever getting to this bug. (I mean something like "fopen didn't really work so a bug in fclose didn't show up.")
Interestingly, the game is reported to work (AppDB: Bronze) with several of the wine versions that didn't work for me.
http://bugs.winehq.org/show_bug.cgi?id=16162
--- Comment #5 from Austin English austinenglish@gmail.com 2008-11-23 20:32:24 --- (In reply to comment #4)
(In reply to comment #3)
A regression test would help here: http://wiki.winehq.org/RegressionTesting
It's broken in 1.0-rc4, and that's as far as I can test it, because "make" fails with older commits with this and a few similar errors: signal_i386.c:613: error: ‘VIF_MASK’ undeclared (first use in this function)
I tried building some releases between 0.9.10 and 1.0-rc3, and they all caused the same build error. Any ideas? Versions 0.9.9 and below had some other problems already in "make depend". Those might fail because of newer build software, and that's something I won't even try to change.
http://wiki.winehq.org/ReverseRegressionTesting
http://bugs.winehq.org/show_bug.cgi?id=16162
--- Comment #6 from Lauri Kenttä lauri.kentta@gmail.com 2009-02-15 08:15:26 --- I tested this in Ubuntu 8.04 with various recent Wine versions, and there it gets to the main menu (but fps is around 0.1, so it isn't very usable). In Arch Linux I only get the "partial write". Do you have any ideas about what library differences could be causing this?
http://bugs.winehq.org/show_bug.cgi?id=16162
Colin Pitrat colin.pitrat@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |colin.pitrat@gmail.com
--- Comment #7 from Colin Pitrat colin.pitrat@gmail.com 2009-02-17 14:41:14 --- I confirm that I have the same problem under archlinux with wine 1.1.15.
From wine sources, it seems that the "partial write: 64" comes from a call to
writev in (ntdll/server.c): static unsigned int send_request( const struct __server_request_info *req )
Strange thing is, from strace output, it seems the writev send 1 buffer of length 64, which means the whole content is written: writev(3, [{"\32\0\0\0\230\3763\0\320\3763\0(\0\0\0\1\0\0\0\0@\375\177\30\30\350~\0\0\0\0\0"..., 64}], 1) = 64
Looking at the source code if ((ret = writev( ntdll_get_thread_data()->request_fd, vec, i+1 )) == req->u.req.request_header.request_size + sizeof(req->u.req)) return STATUS_SUCCESS;
it would mean that the left hand of the comparison does not correspond to the size of the buffer. As sizeof(req->u.req) is the 64 passed to writev, it may comes from req->u.req.request_header.request_size being non-zero.
This is confirmed by the fact that we're in the else part of a if(!req->u.req.request_header.request_size)
To sum up, it seems that only the header is sent, i.e. the request data_count is 0 whereas the request_size is not 0. I don't know where this invalid request could come from.
http://bugs.winehq.org/show_bug.cgi?id=16162
--- Comment #8 from Colin Pitrat colin.pitrat@gmail.com 2009-02-17 14:53:51 ---
From winedbg, the call to wine_server_call could be done from the following
stack: Wine-dbg>bt Backtrace: =>0 0xb80b2422 (0x7ec0364c) 1 0x7efc1fa5 NTDLL_wait_for_multiple_objects+0x275() in ntdll (0x7ec0386c) 2 0x7efc22a8 NtWaitForMultipleObjects+0x68() in ntdll (0x7ec0389c) 3 0x7ee5aff2 WaitForMultipleObjectsEx+0x102() in kernel32 (0x7ec039dc) 4 0x7ee5b1ec WaitForSingleObject+0x3c() in kernel32 (0x7ec039fc) 5 0x007b2bcf in s3 (+0x3b2bcf) (0x7ec03a38) 6 0x7efc5322 call_thread_func+0x42() in ntdll (0x7ec03ad8) 7 0x7efc550e start_thread+0x14e() in ntdll (0x7ec043c8) 8 0xb7f24155 start_thread+0xc5() in libpthread.so.0 (0x7ec044b8) 9 0xb7ea7a5e __clone+0x5e() in libc.so.6 (0x00000000)
However, I'm not familiar enough with winedbg to check content of the request object.
http://bugs.winehq.org/show_bug.cgi?id=16162
--- Comment #9 from Colin Pitrat colin.pitrat@gmail.com 2009-02-18 14:38:36 --- After deeper analysis, it appears that the stack I got in winedbg is invalid. The "invalid" request come from NTSTATUS WINAPI NtSetEvent( HANDLE handle, PULONG NumberOfThreadsReleased )
It has a data_count == 0, and a request_size that seems to not be initialized.
A call to backtrace / backtrace_symbols_fd give the following stack: /home/colin/Programmation/wine-1.1.15/loader/../dlls/ntdll/ntdll.dll.so(wine_server_call+0xe5)[0x7efbc735] /home/colin/Programmation/wine-1.1.15/loader/../dlls/ntdll/ntdll.dll.so(NtSetEvent+0x6b)[0x7efc2afb] /home/colin/Programmation/wine-1.1.15/loader/../dlls/kernel32/kernel32.dll.so(SetEvent+0x1a)[0x7ee4fa6a] [0x7b2a77] [0xeb835b00]
http://bugs.winehq.org/show_bug.cgi?id=16162
Karl Smith gosub1250@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |gosub1250@gmail.com
--- Comment #10 from Karl Smith gosub1250@gmail.com 2009-04-24 07:46:13 --- This happened on my original install. After patching using this file ftp://ftp.bluebyte.com/updates/s3.exe (I believe you can just drop it into your settlers directory), everything worked.
http://bugs.winehq.org/show_bug.cgi?id=16162
--- Comment #11 from Lauri Kenttä lauri.kentta@gmail.com 2009-04-24 11:57:54 --- (In reply to comment #10)
After patching using this file ftp://ftp.bluebyte.com/updates/s3.exe everything worked.
The Windows XP patch indeed makes the game start. (I probably had that one installed a few years ago. This time I didn't find it myself, thanks for the link.)
But this patch doesn't solve everything: Both the Map Editor installer in the Mission CD and the QOTA installer hang with this partial write error when accepting the EULA.
Maybe I'll try to hack some kind of custom install script for those.
http://bugs.winehq.org/show_bug.cgi?id=16162
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jaimerave@gmail.com
--- Comment #12 from Austin English austinenglish@gmail.com 2009-07-21 11:44:28 --- *** Bug 19333 has been marked as a duplicate of this bug. ***
http://bugs.winehq.org/show_bug.cgi?id=16162
--- Comment #13 from Jeff Zaroyko jeffz@jeffz.name 2010-06-28 08:28:35 --- Is this still an issue in Wine-1.2-rc5 or newer?
http://bugs.winehq.org/show_bug.cgi?id=16162
Lauri Kenttä lauri.kentta@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |FIXED
--- Comment #14 from Lauri Kenttä lauri.kentta@gmail.com 2010-07-05 10:27:08 --- Both the demo version and the original full version seem to work now, great! :)
I can't test the expansion pack installers now because I don't have the disks at hand. I'll open a new bug if there's still something wrong with those. (Hopefully not.)
http://bugs.winehq.org/show_bug.cgi?id=16162
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #15 from Alexandre Julliard julliard@winehq.org 2010-07-09 11:56:59 --- Closing bugs fixed in 1.2-rc7.