Jump to content

Applications built with Visual Studio 2013 x64 crash!


ppgrainbow

Recommended Posts

I have a problem here. When I try to run the 64-bit version of a application such as Stella 4.0 that was built with the 64-bit version of Visual Studio 2013, the application crashes.

The problem details are as follows:

Problem signature:
  Problem Event Name:    APPCRASH
  Application Name:    Stella.exe
  Application Version:    4.0.0.0
  Application Timestamp:    53b2cfba
  Fault Module Name:    MSVCR120.dll
  Fault Module Version:    12.0.21005.1
  Fault Module Timestamp:    524f83ff
  Exception Code:    c000001d
  Exception Offset:    0000000000092bc3
  OS Version:    6.0.6002.2.2.0.256.1
  Locale ID:    1033
  Additional Information 1:    78c1
  Additional Information 2:    0869ef10dc8cd21b7395bb14415118ff
  Additional Information 3:    0c15
  Additional Information 4:    4d720ac05b49834e684ca24d3d806421

 

Other applications built using the 64-bit version of Visual Studio 2013 such as Media Player Classic do work under Vista x64.

Is there a way to fix or debug this issue? I know that this issue might have been resolved under Windows 7 SP1, but what about Windows Vista SP2 users?

Link to comment
Share on other sites


It looks to be that your application is expecting a certain version of (at least) MSVCR120.dll and you don't have that one. I would run Depends on the program to see what it complains about. Also, run Procmon on Stella.exe at launch to see what its search order for MSVCR120.dll is. If the first place to look is the home or working dir, you could put the correct version into that folder and no effect anything using the one in the Windows folder.

Link to comment
Share on other sites

Exception Code:    c000001d

error c000001d can be those things:

C:\Users\André>err c000001d# for hex 0xc000001d / decimal -1073741795  STATUS_ILLEGAL_INSTRUCTION                                     ntstatus.h# {EXCEPTION}# Illegal Instruction An attempt was made to execute an illegal instruction.# as an HRESULT: Severity: FAILURE (1), FACILITY_NULL (0x0), Code 0x1d# for hex 0x1d / decimal 29  ERROR_WRITE_FAULT                                              winerror.h# The system cannot write to the specified device.# 2 matches found for "c000001d"

maybe it tries to call an API which is not part of Vista. Does the tool have PDB (debug symbols) files? If yes, you can create a dump and we can look at the dmp with Windbg

Link to comment
Share on other sites

Exception Code:    c000001d

error c000001d can be those things:

C:\Users\André>err c000001d# for hex 0xc000001d / decimal -1073741795  STATUS_ILLEGAL_INSTRUCTION                                     ntstatus.h# {EXCEPTION}# Illegal Instruction An attempt was made to execute an illegal instruction.# as an HRESULT: Severity: FAILURE (1), FACILITY_NULL (0x0), Code 0x1d# for hex 0x1d / decimal 29  ERROR_WRITE_FAULT                                              winerror.h# The system cannot write to the specified device.# 2 matches found for "c000001d"

maybe it tries to call an API which is not part of Vista. Does the tool have PDB (debug symbols) files? If yes, you can create a dump and we can look at the dmp with Windbg

 

 

That's what I've been thinking. The 64-bit version of Stella 4.0 tries to call an API that neither exists on Windows XP x64 nor Windows Vista x64.

 

How can I use the Windbg feature with Stella 4.0 to investigate the issue on Vista? Would I have to download the Windows Debugging Tools from the Windows 7 SDK?

Link to comment
Share on other sites

yes, you can use the Debugger from Win7 SDK.

 

Thank you for the help. I will install the Windows 7 SDK Debugger and report back when I'm done. :)

 

Note: In order for the Windows 7 SDK Debugger to work, I have to uninstall Visual Studio 2010 and reinstall the Windows 7.1 SDK.

 

I have the System Restore to revert the changes, so once I'm done...I can revert prior to installing the Windows 7.1 SDK.

 

Update: I did some debugging on the 64-bit executable of Stella 4.0 and here are the results:

Microsoft (R) Windows Debugger Version 6.12.0002.633 AMD64Copyright (c) Microsoft Corporation. All rights reserved.CommandLine: C:\Stella\Stella.exeSymbol search path is: *** Invalid ******************************************************************************** Symbol loading may be unreliable without a symbol search path.           ** Use .symfix to have the debugger choose a symbol path.                   ** After setting your symbol path, use .reload to refresh symbol locations. *****************************************************************************Executable search path is:ModLoad: 00000001`40000000 00000001`40366000   image00000001`40000000ModLoad: 00000000`779d0000 00000000`77b56000   ntdll.dllModLoad: 00000000`77540000 00000000`7766d000   C:\Windows\system32\kernel32.dllModLoad: 00000000`6c740000 00000000`6c86f000   C:\Stella\SDL2.dllModLoad: 000007fe`fe540000 000007fe`fe5a4000   C:\Windows\system32\GDI32.dllModLoad: 00000000`77310000 00000000`773dd000   C:\Windows\system32\USER32.dllModLoad: 000007fe`fe790000 000007fe`fe898000   C:\Windows\system32\ADVAPI32.dllModLoad: 000007fe`fea80000 000007fe`febc2000   C:\Windows\system32\RPCRT4.dllModLoad: 000007fe`fe400000 000007fe`fe42d000   C:\Windows\system32\IMM32.dllModLoad: 000007fe`febd0000 000007fe`fecd2000   C:\Windows\system32\MSCTF.dllModLoad: 000007fe`ffc50000 000007fe`ffcec000   C:\Windows\system32\msvcrt.dllModLoad: 000007fe`fe8a0000 000007fe`fea78000   C:\Windows\system32\ole32.dllModLoad: 000007fe`fe6b0000 000007fe`fe783000   C:\Windows\system32\OLEAUT32.dllModLoad: 000007fe`fef50000 000007fe`ffba3000   C:\Windows\system32\SHELL32.dllModLoad: 000007fe`feed0000 000007fe`fef43000   C:\Windows\system32\SHLWAPI.dllModLoad: 000007fe`fd820000 000007fe`fd82b000   C:\Windows\system32\VERSION.dllModLoad: 000007fe`fc450000 000007fe`fc489000   C:\Windows\system32\WINMM.dllModLoad: 000007fe`fc3f0000 000007fe`fc445000   C:\Windows\system32\OLEACC.dllModLoad: 000007fe`f0900000 000007fe`f09a6000   C:\Stella\MSVCP120.dllModLoad: 000007fe`f06a0000 000007fe`f078f000   C:\Stella\MSVCR120.dll(4a4.13d8): Break instruction exception - code 80000003 (first chance)*** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntdll.dll -ntdll!DbgBreakPoint:00000000`77a161f0 cc              int     3

Now, when I select Debug > Go in the menu, here's the second output that I received:

0:000> gModLoad: 000007fe`feec0000 000007fe`feecd000   C:\Windows\system32\LPK.DLLModLoad: 000007fe`fe5b0000 000007fe`fe64b000   C:\Windows\system32\USP10.dllModLoad: 000007fe`fcf70000 000007fe`fd169000   C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6002.18305_none_1509f852f40ee5cd\comctl32.dllModLoad: 000007fe`f9260000 000007fe`f9267000   C:\Windows\system32\shfolder.dllModLoad: 000007fe`fe270000 000007fe`fe296000   C:\Windows\system32\USERENV.dllModLoad: 000007fe`fe250000 000007fe`fe26c000   C:\Windows\system32\Secur32.dllModLoad: 000007fe`fca30000 000007fe`fca81000   C:\Windows\system32\uxtheme.dllModLoad: 000007fe`ffbb0000 000007fe`ffc49000   C:\Windows\system32\CLBCatQ.DLLModLoad: 000007fe`f5ff0000 000007fe`f602d000   C:\Windows\System32\dinput8.dllModLoad: 000007fe`fc950000 000007fe`fc95b000   C:\Windows\system32\HID.DLLModLoad: 000007fe`fece0000 000007fe`feebc000   C:\Windows\system32\SETUPAPI.DLLModLoad: 000007fe`fd1b0000 000007fe`fd1e9000   C:\Windows\system32\WINTRUST.dllModLoad: 000007fe`fdb40000 000007fe`fdc7b000   C:\Windows\system32\CRYPT32.dllModLoad: 000007fe`fdcf0000 000007fe`fdd09000   C:\Windows\system32\MSASN1.dllModLoad: 000007fe`fe520000 000007fe`fe538000   C:\Windows\system32\imagehlp.dllModLoad: 00000000`022f0000 00000000`0230e000   C:\Windows\system32\XInput1_3.dllModLoad: 000007fe`f0700000 000007fe`f078b000   C:\Windows\system32\XAudio2_7.dllModLoad: 000007fe`fc0a0000 000007fe`fc0d6000   C:\Windows\System32\MMDevApi.dllModLoad: 000007fe`fbca0000 000007fe`fbcd3000   C:\Windows\system32\AUDIOSES.DLLModLoad: 000007fe`fba20000 000007fe`fba9a000   C:\Windows\system32\audioeng.dllModLoad: 00000000`77b70000 00000000`77b79000   C:\Windows\system32\PSAPI.DLLModLoad: 000007fe`fd2b0000 000007fe`fd2b8000   C:\Windows\system32\AVRT.dll(1198.244): Illegal instruction - code c000001d (first chance)(1198.244): Illegal instruction - code c000001d (!!! second chance !!!)*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\Stella\MSVCR120.dll -MSVCR120!log+0x2d3:000007fe`f0952bc3 c5e173d034      vpsrlq  xmm3,xmm0,34h

I checked the C:\Symbols directory and I found that the debugger created the msvcrt120.amd.pdb and ntdll.pdb sub-directories containing the respective files?

 

What should I do with the *.pdb files?

Edited by ppgrainbow
Link to comment
Share on other sites

you need to fix the symbols:

 

http://support.microsoft.com/kb/311503/en-us

 

and you should look if there are PDBs for your tool.

 

Now run !analyze -v in Windbg to see more details.

 

Okay, what I did was to fix the symbols from the C:\Symbols directory by typing this command:

 

!symfix *C:\Symbols*http://msdl.microsoft.com/download/symbols

 

Next when I ran the !analyze -v command, here's the output of what I received:

********************************************************************************                                                                             **                        Exception Analysis                                   **                                                                             ************************************************************************************* OS symbols are WRONG. Please fix symbols to do analysis.****************************************************************************                                                                   ******                                                                   ******    Your debugger is not using the correct symbols                 ******                                                                   ******    In order for this command to work properly, your symbol path   ******    must point to .pdb files that have full type information.      ******                                                                   ******    Certain .pdb files (such as the public OS symbols) do not      ******    contain the required information.  Contact the group that      ******    provided you with these symbols if you need this command to    ******    work.                                                          ******                                                                   ******    Type referenced: ntdll!_PEB                                    ******                                                                   ****************************************************************************FAULTING_IP:MSVCR120!log+2d3000007fe`f2ea2bc3 c5e173d034      vpsrlq  xmm3,xmm0,34hEXCEPTION_RECORD:  ffffffffffffffff -- (.exr 0xffffffffffffffff)ExceptionAddress: 000007fef2ea2bc3 (MSVCR120!log+0x00000000000002d3)   ExceptionCode: c000001d (Illegal instruction)  ExceptionFlags: 00000000NumberParameters: 0FAULTING_THREAD:  0000000000001260DEFAULT_BUCKET_ID:  WRONG_SYMBOLSPROCESS_NAME:  image00000001`40000000ADDITIONAL_DEBUG_TEXT:  Use '!findthebuild' command to search for the target build information.If the build information is available, run '!findthebuild -s ; .reload' to set symbol path and load symbols.FAULTING_MODULE: 0000000076ff0000 ntdllDEBUG_FLR_IMAGE_TIMESTAMP:  524f83ffERROR_CODE: (NTSTATUS) 0xc000001d - {EXCEPTION}  Illegal Instruction  An attempt was made to execute an illegal instruction.EXCEPTION_CODE: (NTSTATUS) 0xc000001d - {EXCEPTION}  Illegal Instruction  An attempt was made to execute an illegal instruction.MOD_LIST: <ANALYSIS/>PRIMARY_PROBLEM_CLASS:  WRONG_SYMBOLSBUGCHECK_STR:  APPLICATION_FAULT_WRONG_SYMBOLSLAST_CONTROL_TRANSFER:  from 00000001400568cc to 000007fef2ea2bc3STACK_TEXT:  00000000`0012f960 00000001`400568cc : 00000000`0012fa10 00000001`40221da0 00000001`40221da0 00000000`00000000 : MSVCR120!log+0x2d300000000`0012f9c0 00000001`4008c44e : 00000000`002ea730 00000001`40221da0 00000000`0012fcf0 00000000`0012fbb8 : image00000001_40000000+0x568cc00000000`0012fb70 00000001`40154cca : 00000000`00000001 00000000`00000001 00000000`001b0010 00000000`00000000 : image00000001_40000000+0x8c44e00000000`0012fd90 00000001`40001020 : 00000000`001f3474 00000000`0000000a 00000000`001f3474 00000000`0000000a : image00000001_40000000+0x154cca00000000`0012fe90 00000001`400010f2 : 00000000`00000001 00000000`001b0010 00000000`000002f4 000007fe`f2e3276b : image00000001_40000000+0x102000000000`0012fed0 00000001`4015419d : 00000001`40000000 00000000`00000000 00000000`001f3474 01cf9d1f`0000000a : image00000001_40000000+0x10f200000000`0012ff20 00000000`76eda54d : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : image00000001_40000000+0x15419d00000000`0012ff60 00000000`77016861 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0xd00000000`0012ff90 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x21FAILED_INSTRUCTION_ADDRESS:MSVCR120!log+2d3000007fe`f2ea2bc3 c5e173d034      vpsrlq  xmm3,xmm0,34hFOLLOWUP_IP:MSVCR120!log+2d3000007fe`f2ea2bc3 c5e173d034      vpsrlq  xmm3,xmm0,34hSYMBOL_STACK_INDEX:  0SYMBOL_NAME:  msvcr120!log+2d3FOLLOWUP_NAME:  MachineOwnerMODULE_NAME: MSVCR120IMAGE_NAME:  MSVCR120.dllSTACK_COMMAND:  ~0s ; kbBUCKET_ID:  WRONG_SYMBOLSFAILURE_BUCKET_ID:  WRONG_SYMBOLS_c000001d_MSVCR120.dll!logFollowup: MachineOwner---------

For some reason, the analyst is telling me that I'm *not* using the correct symbols despite the fact that I set the symbol path to the C:\Symbols directory. Is there a way to make the WinDbg use the correct symbols?

 

Regardless of the fact that I'm not using the correct symbols, it seems that I'm trying to make some progress here and determine what could be causing the 64-bit version of Stella, built with the 64-bit version of VS2013 to crash.

Edited by ppgrainbow
Link to comment
Share on other sites

 

Thanks for telling me.

 

It looks like that this might be a bug that broke 64-bit compatibility in Windows 7 RTM and below. As far as I know, the 64-bit version of Stella 4.0 uses Advanced Vector Extensions (AVX) that only exist in Windows 7 SP1 and later. I'm wondering if there is a way to patch the 64-bit version of MSVCRT120.DLL without vpsrlq and AVX support on Windows Vista or not. Otherwise, I will have to use the 32-bit version of Stella 4.0 as it is built using MSVC2013.

 

As far as I know, the next major release of Stella or the next major version of Visual Studio, will neither support Windows XP nor Windows Vista. :(

 

The AMD FX-4300 CPU does have AVX support, but I'm disappointed to hear that the latest 64-bit release of Stella would not work in Windows Vista, even if the OS is still supported until April 2017.

Link to comment
Share on other sites

Just out of curiosity, do you find any noticeable difference in running (on a supported OS) the 64 bit version vs. running the 32 bit version? :unsure:

I mean, is it:

  1. faster?
  2. allowing to map more RAM memory?
  3. something else?

jaclaz

Link to comment
Share on other sites

Look if you can get the source of the tool and compile it with an older C++ Version (2010, 2012) and make sure no AVX is enabled in the compiler options.

 

The current official version of Stella is compiled with MSVC2013 and can be compiled using MSVC2012. The source can be found here: http://sourceforge.net/projects/stella/files/stella/4.0/stella-4.0-src.tar.gz/download

Link to comment
Share on other sites

Just out of curiosity, do you find any noticeable difference in running (on a supported OS) the 64 bit version vs. running the 32 bit version? :unsure:

I mean, is it:

  1. faster?
  2. allowing to map more RAM memory?
  3. something else?

jaclaz

 

It's hard to tell. AVX code support has been present since Visual Studio 2010 SP1. Although the AMD FX-4300 has AVX support, AVX code is only present in Windows 7 SP1 and later.

 

Developers are starting to use AVX code for 64-bit apps built with MSVC 2013. This is not a issue in 32-bit apps built with MSVC 2013.

 

If you think that my comment is confusing and doesn't make sense, let me know.

Link to comment
Share on other sites

Naah, it was just curiosity :), IF the 32 bit version works fine on your Vista AND there is NO noticeable differences (in practice, i.e. speed, features, capabilities, etc.) between the 32 bit and the 64 bit version in (say) Windows 7 SP1 it's hard for me to understand the reason why you spent more than (still say) 8 minutes in troubleshooting the issue (that seems in my perverted mind a non-issue).

 

Call me "tough" and "hairy reasoner" as much as you want, as I have no idea (and actually I am not particularly interested in learning) what exactly it is AVX code, but it either provides a noticeable bettering in *something* or it does not.

 

If the bettering (if any) is not noticeable then I wouldn't pursue this "chase" for AVX code support, while of course if you are doing this for the fun of it :) or to boldly go where no man has gone before ;), I can understand entirely :yes:.

 

JFYI:

http://reboot.pro/topic/17568-what-advantage-hold-64-bit-programs-over-their-32-bit-version/

 

 

jaclaz

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...