Description of problem: The simple test program below crashes when compiled with mingw in f14 and run with f14 wine. It works in f12 and Ubuntu 10.10 and I was told it works in f13. class Foo { virtual void bar(); }; void Foo::bar() { } int main() { return 0; } Version-Release number of selected component (if applicable): mingw32-gcc-4.5.0-1.fc14.i686 How reproducible: Every time Steps to Reproduce: 1. Compile and run test program 2. 3. Actual results: Test program crashes Expected results: Test program doesn't crash Additional info: usr/bin/i686-pc-mingw32-g++ -o foo.exe /tmp/foo.cpp Info: resolving vtable for __cxxabiv1::__class_type_info by linking to __imp___ZTVN10__cxxabiv117__class_type_infoE (auto-import) /usr/lib/gcc/i686-pc-mingw32/4.5.0/../../../../i686-pc-mingw32/bin/ld: warning: auto-importing has been activated without --enable-auto-import specified on the command line. This should work unless it involves constant data structures referencing symbols from auto-imported DLLs. $ cd /usr/i686-pc-mingw32/sys-root/mingw/bin $ /tmp/foo.exe wine: Unhandled page fault on write access to 0x00403028 at address 0x40142f (thread 0009), starting debugger... Unhandled exception: page fault on write access to 0x00403028 in 32-bit code (0x0040142f). Register dump: CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b EIP:0040142f ESP:0061fe2c EBP:0061fe30 EFLAGS:00010206( R- -- I - -P- ) EAX:00403050 EBX:00400000 ECX:00000008 EDX:00403028 ESI:7ffdf000 EDI:00401130 Stack dump: 0x0061fe2c: 6f305898 0061fe70 0040108d 00404000 0x0061fe3c: 00404004 0061fe64 ffffffff 0061fe60 0x0061fe4c: 00000000 00000000 00000000 00000000 0x0061fe5c: 00000000 00000000 00112fa8 6f305898 0x0061fe6c: 6f305898 0061fe90 00401148 00000001 0x0061fe7c: 68026b22 00000000 00000000 00000000 Backtrace: =>0 0x0040142f in foo (+0x142f) (0x0061fe30) 1 0x0040108d __mingw_CRTStartup+0x6c() [/builddir/build/BUILD/mingwrt-3.15.2-mingw32/crt1.c:217] in foo (0x0061fe70) 2 0x0040108d __mingw_CRTStartup+0x6c() [/builddir/build/BUILD/mingwrt-3.15.2-mingw32/crt1.c:217] in foo (0x0061fe90) 3 0x00401148 mainCRTStartup+0x17() [/builddir/build/BUILD/mingwrt-3.15.2-mingw32/crt1.c:257] in foo (0x0061fea8) 4 0x6f2c8c9c call_process_entry+0xb() in kernel32 (0x0061fee8) 5 0x68389ee0 call_thread_func+0xb() in ntdll (0x0061fef8) 6 0x6838cb61 call_thread_entry_point+0x70() in ntdll (0x0061ffc8) 7 0x6836223b call_dll_entry_point+0x65a() in ntdll (0x0061ffe8) 0x0040142f: addl %ecx,0x0(%edx) Modules: Module Address Debug info Name (17 modules) PE 400000- 411000 Dwarf foo ELF 68000000-68022000 Deferred ld-linux.so.2 ELF 68022000-68164000 Export libwine.so.1 ELF 68164000-68180000 Deferred libpthread.so.0 ELF 68180000-68313000 Deferred libc.so.6 ELF 68313000-68318000 Deferred libdl.so.2 ELF 68318000-683e0000 Export ntdll<elf> \-PE 68330000-683e0000 \ ntdll ELF 683e0000-683ed000 Deferred libnss_files.so.2 ELF 683ed000-6847b000 Deferred msvcrt<elf> \-PE 68400000-6847b000 \ msvcrt PE 6cec0000-6cf2c000 Deferred libgcc_s_sjlj-1 ELF 6f272000-6f3f6000 Export kernel32<elf> \-PE 6f280000-6f3f6000 \ kernel32 PE 6fc40000-7011c000 Deferred libstdc++-6 ELF 74d91000-74dbb000 Deferred libm.so.6 ELF 7bf00000-7bf03000 Deferred <wine-loader> Threads: process tid prio (all id:s are in hex) 00000008 (D) Z:\tmp\foo.exe 00000009 0 <== 0000000e services.exe 00000018 0 00000017 0 00000016 0 00000010 0 0000000f 0 00000011 winedevice.exe 0000001a 0 00000019 0 00000015 0 00000012 0 00000013 explorer.exe 00000014 0 Backtrace: =>0 0x0040142f in foo (+0x142f) (0x0061fe30) 1 0x0040108d __mingw_CRTStartup+0x6c() [/builddir/build/BUILD/mingwrt-3.15.2-mingw32/crt1.c:217] in foo (0x0061fe70) 2 0x0040108d __mingw_CRTStartup+0x6c() [/builddir/build/BUILD/mingwrt-3.15.2-mingw32/crt1.c:217] in foo (0x0061fe90) 3 0x00401148 mainCRTStartup+0x17() [/builddir/build/BUILD/mingwrt-3.15.2-mingw32/crt1.c:257] in foo (0x0061fea8) 4 0x6f2c8c9c call_process_entry+0xb() in kernel32 (0x0061fee8) 5 0x68389ee0 call_thread_func+0xb() in ntdll (0x0061fef8) 6 0x6838cb61 call_thread_entry_point+0x70() in ntdll (0x0061ffc8) 7 0x6836223b call_dll_entry_point+0x65a() in ntdll (0x0061ffe8)
Yup, I can reproduce this. Seems like a bug in gcc. We don't normally handle bugs in upstream products, we just package them. The reporter might like to see if it has been reported upstream (http://gcc.gnu.org/bugzilla/).
I reported it upstream here: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46308
mingw32-binutils-2.20.1-2.fc14 has been submitted as an update for Fedora 14. https://admin.fedoraproject.org/updates/mingw32-binutils-2.20.1-2.fc14
This should be fixed with mingw32-binutils-2.20.1-2.fc14 which enables ld's auto-import option by default. Can you confirm the fix?
(In reply to comment #4) > This should be fixed with mingw32-binutils-2.20.1-2.fc14 which enables ld's > auto-import option by default. Can you confirm the fix? Yes, that seems to have fixed my simple test app and the more complicated one that I stripped down to make the simple one.
mingw32-binutils-2.20.1-2.fc14 has been pushed to the Fedora 14 stable repository. If problems still persist, please make note of it in this bug report.