http://bugs.winehq.org/show_bug.cgi?id=19055
Summary: Starfleet Command installer quits with "bad file descriptor" error Product: Wine Version: 1.1.24 Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: chris@chrobis.com
When running either of the two executables for game installation for Starfleet Command (Setup.exe or SFCSetup.exe), you get the standard "preparing the InstallShield(R) wizard) progress bar along with the game's splash screen; the fullscreen background for the installer appears and a game sound effect beeps; and then the installer crashes.
At the terminal, an error appears:
wine client error:1a: write: Bad file descriptor
Having run it a few times, the hex number in the error will often change, e.g.
wine client error:1c: write: Bad file descriptor
But fundamentally, the error remains the same each time.
http://bugs.winehq.org/show_bug.cgi?id=19055
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net
--- Comment #1 from Anastasius Focht focht@gmx.net 2009-06-23 16:49:39 --- Hello,
reading your symptoms you might have run into the same problem I'm looking at for two days now.
Can you run regression test? If its commit f124c7cc38e7edf0823347afa5f8e7126143080d ("ntdll: Simplify the thread startup routine and make it CPU-specific.") we're talking about the same thing.
In that case please provide the Linux distribution name/version/arch and the GCC version (gcc -v).
It's a (child) thread termination problem which was introduced by AJ's refactoring of i386 thread entry point wrapper.
The problem interestingly only manifests when the child thread entry point function (called by wrapper) returns non-zero exit code (passed to pthread_exit).
Libgcc's forced unwind heuristics fails on the wrapper stack layout/opcode sequences, causing segfault in unwind phase 2.
Regards
http://bugs.winehq.org/show_bug.cgi?id=19055
Nikolay Sivov bunglehead@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |bunglehead@gmail.com
http://bugs.winehq.org/show_bug.cgi?id=19055
--- Comment #2 from Rico kgbricola@web.de 2009-06-24 09:40:27 --- Created an attachment (id=21990) --> (http://bugs.winehq.org/attachment.cgi?id=21990) gcc -v
The vcredist_x86.exe triggers the same problem here (coursed by commit f124c7cc38e7edf0823347afa5f8e7126143080d).
uname -a: Linux ricola 2.6.29.4-167.fc11.x86_64 #1 SMP Wed May 27 17:27:08 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
http://bugs.winehq.org/show_bug.cgi?id=19055
Rico kgbricola@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #21990|application/octet-stream |text/plain mime type| |
http://bugs.winehq.org/show_bug.cgi?id=19055
--- Comment #3 from Alexandre Julliard julliard@winehq.org 2009-06-24 15:52:41 --- Libgcc can't unwind through Wine code anyway. The reason for separating the function is precisely so that we can add a platform-specific unwind. That crash is very much expected if you are on x86_64.
http://bugs.winehq.org/show_bug.cgi?id=19055
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1
--- Comment #4 from Austin English austinenglish@gmail.com 2009-06-24 15:54:21 --- I'm seeing this as well on Ubuntu Karmic, with different programs (discovered while running winetrickstest):
austin@ubuntu:~/winezeug$ gcc -v Using built-in specs. Target: i486-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.4.0-6ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4 --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i486 --with-tune=generic --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu Thread model: posix gcc version 4.4.0 (Ubuntu 4.4.0-6ubuntu2)
http://bugs.winehq.org/show_bug.cgi?id=19055
--- Comment #5 from Alexandre Julliard julliard@winehq.org 2009-06-24 16:20:51 --- Created an attachment (id=22004) --> (http://bugs.winehq.org/attachment.cgi?id=22004) cfi annotations for call_thread_func
Does this make any difference?
http://bugs.winehq.org/show_bug.cgi?id=19055
Marcus Meissner marcus@jet.franken.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |marcus@jet.franken.de
http://bugs.winehq.org/show_bug.cgi?id=19055
--- Comment #6 from Austin English austinenglish@gmail.com 2009-06-24 17:43:15 --- (In reply to comment #5)
Created an attachment (id=22004)
--> (http://bugs.winehq.org/attachment.cgi?id=22004) [details]
cfi annotations for call_thread_func
Does this make any difference?
Works great, thanks!
http://bugs.winehq.org/show_bug.cgi?id=19055
--- Comment #7 from Anastasius Focht focht@gmx.net 2009-06-24 17:47:55 --- Hello,
--- quote --- Does this make any difference? --- quote ---
yes, the emitted CFI helps libgcc's unwinder, preventing the segfault. I should have looked at gcc -S output of signal_i386.c to see gcc's emitted CFI of other functions ;-)
Maybe libgcc's unwinder just relied on the fact if there is any CFI present (call_thread_func: .cfi_startproc and .cfi_endproc) it will be complete CFI. Normally it would be the case if gcc's CFI generator produced the code.
The Wine packagers of Distros using gcc 4.4+ for building Wine 1.1.24 should be notified to include your patch.
Regards
http://bugs.winehq.org/show_bug.cgi?id=19055
--- Comment #7 from Anastasius Focht focht@gmx.net 2009-06-24 17:47:55 --- Hello,
--- quote --- Does this make any difference? --- quote ---
yes, the emitted CFI helps libgcc's unwinder, preventing the segfault. I should have looked at gcc -S output of signal_i386.c to see gcc's emitted CFI of other functions ;-)
Maybe libgcc's unwinder just relied on the fact if there is any CFI present (call_thread_func: .cfi_startproc and .cfi_endproc) it will be complete CFI. Normally it would be the case if gcc's CFI generator produced the code.
The Wine packagers of Distros using gcc 4.4+ for building Wine 1.1.24 should be notified to include your patch.
Regards
--- Comment #8 from Marcus Meissner marcus@jet.franken.de 2009-06-25 08:47:27 --- btw,
bisecting converged on commit f124c7cc38e7edf0823347afa5f8e7126143080d Author: Alexandre Julliard julliard@winehq.org Date: Thu Jun 18 16:38:30 2009 +0200
ntdll: Simplify the thread startup routine and make it CPU-specific.
http://bugs.winehq.org/show_bug.cgi?id=19055
--- Comment #9 from Chris Wales chris@chrobis.com 2009-06-28 10:41:17 --- Created an attachment (id=22069) --> (http://bugs.winehq.org/attachment.cgi?id=22069) Output log running Netscape 6.2.2
Log from Netscape 6.2.2 execution showing bug
http://bugs.winehq.org/show_bug.cgi?id=19055
Chris Wales chris@chrobis.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Starfleet Command installer |Various apps quit with "bad |quits with "bad file |file descriptor" error |descriptor" error |
--- Comment #10 from Chris Wales chris@chrobis.com 2009-06-28 10:42:58 --- I've also noted this in the installation of Netscape 6.2.2 (freely downloadable) - if you disable activation as described here (http://sillydog.org/netscape/kb/noactivation.html), it quits with the same error. I've attached an output log for reference.
http://bugs.winehq.org/show_bug.cgi?id=19055
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #11 from Alexandre Julliard julliard@winehq.org 2009-07-01 11:55:23 --- Fix is in (for i386, it's still broken on win64).
http://bugs.winehq.org/show_bug.cgi?id=19055
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #12 from Alexandre Julliard julliard@winehq.org 2009-07-03 12:28:42 --- Closing bugs fixed in 1.1.25.
http://bugs.winehq.org/show_bug.cgi?id=19055
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |0c463415432769df5bfe295a071 | |380f3eebe6283 Component|-unknown |ntdll