Skip to content

Windows segfaults in libstdc++ when MinGW version is too new #5712

Closed
@darkf

Description

@darkf
Contributor

After using the 0.6 installer (with add to PATH checked), and MinGW (with GCC 4.7.2) on Windows 8, attempting to launch rustc or rustc.exe results with the message boxed error:

The application was unable to start correctly (0xc0000142). Click OK to close the application.

Running under ollydbg, it seems to segfault when doing some stuff with libstdc++. Rust 0.5 worked fine.

Activity

nettok

nettok commented on Apr 4, 2013

@nettok

I am having the same problem using the latest mingw (gcc 4.7.2). Here is the segmentation fault.

$ gdb rustc.exe
GNU gdb (GDB) 7.5
...
This GDB was configured as "i686-pc-mingw32".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from c:\Program Files (x86)\Rust\bin\rustc.exe...(no debugging symbols found)...done.
(gdb) run
Starting program: c:\Program Files (x86)\Rust\bin\rustc.exe
[New Thread 5196.0x1068]

Program received signal SIGSEGV, Segmentation fault.
0x6fc5b93f in libstdc++-6!_ZN9__gnu_cxx18__exchange_and_addEPVii ()
   from C:\MinGW\bin\libstdc++-6.dll
bstrie

bstrie commented on May 10, 2013

@bstrie
Contributor

Nominating this for 0.7.

bstrie

bstrie commented on May 10, 2013

@bstrie
Contributor

Also, I'm not certain off the top of my head if that's the correct version of MinGW that Rust needs. However, even if it's not, the installer needs to detect this and abort rather than complete the install.

mschorsch

mschorsch commented on May 13, 2013

@mschorsch

You have to downgrade your "libstdc++-6.dll".

  1. mingw-get upgrade "gcc<4.7"
  2. mingw-get upgrade "libstdc++<4.7"
graydon

graydon commented on May 16, 2013

@graydon
Contributor

accepted for production-ready milestone

pnkfelix

pnkfelix commented on Jul 25, 2013

@pnkfelix
Member

Visiting for triage from 2013-07-22 email.

One can readily reproduce this (and toggle between working/non-working) by running mingw-get upgrade "libstdc++>=4.7" in a MinGW window. (I do not personally know where things will fail if you upgrade your gcc to 4.7 or beyond; upgrading it did not immediately fail for me, but I did not test it thoroughly.)

(It is also not too hard to have two distinct installation of MinGW, and then toggle between then by modifying your PATH accordingly so that the dll lookup proceeds in whichever MinGW installation you wish to test. For example, I am playing with a wrapper .bat file that is just the following

rem PATH=c:\MinGWissue5712\bin;c:\Rust\bin\;c:\Python27;%PATH%
PATH=c:\MinGW\bin;c:\Rust\bin\;c:\Python27;%PATH%
start

which opens a command window with the PATH set to look up the corresponding dll's.)

I do not yet know if we should/must fail the installation outright if the user has not yet installed the appropriate libstdc++-6.dll variant. It might be better if we can detect the situation from rust.exe and instruct the user as to how to fix the problem at runtime, especially since someone might inadvertently upgrade their MinGW libraries after having installed Rust, and at that point an install-time check will be of no use.

darkf

darkf commented on Jul 25, 2013

@darkf
ContributorAuthor

Why is there a requirement for the old libstdc++? Is it an ABI thing that can be fixed in rustc/rustrt or is there a deeper issue? Why do later versions work on Linux? Could we have an option to statically link libstdc++? (GCC provides this with -static-libstdc++)

sanyer

sanyer commented on Sep 7, 2013

@sanyer

Only after deleting the libstdc++ (mingw-get remove libstdc++) and installing libstdc++ for gcc 4.5 (mingw-get install "libstdc++<4.6") rustc was finally able to start.
And also I appended "c:\mingw\bin" to PATH environment variable.

added a commit that references this issue on Oct 4, 2013

auto merge of #9662 : vadimcn/rust/package-runtime-deps, r=brson

8bb55db
added 2 commits that reference this issue on Jun 23, 2020

Rollup merge of rust-lang#5712 - ijijn:master, r=flip1995

0799be7

Auto merge of rust-lang#5741 - flip1995:rollup-8chbwhy, r=flip1995

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    I-crashIssue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics.O-windowsOperating system: Windows

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      Participants

      @graydon@pnkfelix@darkf@nettok@bstrie

      Issue actions

        Windows segfaults in libstdc++ when MinGW version is too new · Issue #5712 · rust-lang/rust