Driver crash

I couldn’t find an official “submit bug” spot in the dev zone so I’m posting this here:

Driver v335.23 on Win8.1 Pro x64 with Geforce GTX 680

Code is running D3D 11.0 feature level 11 in an x64 debug application with the debug device. The crash also occurs in release mode.

I get a crash on a thread in the driver in nvwgf2umx.dll:

nvwgf2umx.dll!00007ffec13721cf() Unknown
nvwgf2umx.dll!00007ffec0f5a554() Unknown
nvwgf2umx.dll!00007ffec0f5dd2e() Unknown
nvwgf2umx.dll!00007ffec0f5e478() Unknown
nvwgf2umx.dll!00007ffec0f5e7de() Unknown
nvwgf2umx.dll!00007ffec0f5e96d() Unknown
nvwgf2umx.dll!00007ffec0f4c3ae() Unknown
nvwgf2umx.dll!00007ffec0e0ec98() Unknown
nvwgf2umx.dll!00007ffec0dbe0f4() Unknown
nvwgf2umx.dll!00007ffec0da23fc() Unknown
nvwgf2umx.dll!00007ffec0da0a3a() Unknown
nvwgf2umx.dll!00007ffec0d5f451() Unknown
nvwgf2umx.dll!00007ffec0d1b9c5() Unknown
nvwgf2umx.dll!00007ffec0a7f3d7() Unknown
nvwgf2umx.dll!00007ffec099f881() Unknown
nvwgf2umx.dll!00007ffec0aea64e() Unknown
nvwgf2umx.dll!00007ffec0af8a4f() Unknown
nvwgf2umx.dll!00007ffec0af898f() Unknown
nvwgf2umx.dll!00007ffec13702c7() Unknown
nvwgf2umx.dll!00007ffec137046e() Unknown
kernel32.dll!BaseThreadInitThunk() Unknown
ntdll.dll!RtlUserThreadStart() Unknown

On the main thread (crash did not occur on this thread):

ntdll.dll!RtlCompareMemoryUlong()	Unknown
ntdll.dll!RtlpAllocateHeap()	Unknown
ntdll.dll!RtlAllocateHeap()	Unknown
ntdll.dll!RtlDebugAllocateHeap()	Unknown
ntdll.dll!RtlpAllocateHeap()	Unknown
ntdll.dll!RtlAllocateHeap()	Unknown
d3dcompiler_47.dll!Util::Vector<class CArgument * *,class Util::NewDeleteObjectTraits<class CArgument * *>,class CompilerThreadAllocTraits,class Util::DoublingCount<unsigned int> >::AllocToCount(unsigned int)	Unknown
d3dcompiler_47.dll!Util::Vector<class CArgument *,class Util::NewDeleteObjectTraits<class CArgument *>,class CompilerThreadAllocTraits,class Util::DoublingCount<unsigned int> >::Append(class CArgument *)	Unknown
d3dcompiler_47.dll!CProgram::PropagateFlags_AddLinkRange(class CArgument *,class CArgument *,class CArgument *,class CompThreadVector<class CArgument *> *)	Unknown
d3dcompiler_47.dll!CProgram::PropagateFlags_AddInstLinks(class CArgument *,unsigned __int64,class CArgument *,class CompThreadVector<class CArgument *> *,bool)	Unknown
d3dcompiler_47.dll!CProgram::PropagateFlags_AddRangeLinks(class CArgument *,class CArgument *,class CompThreadVector<class CArgument *> *)	Unknown
d3dcompiler_47.dll!CProgram::PropagateFlags_InitializeGraphRange(class CInstruction *,class CArgument *,bool)	Unknown
d3dcompiler_47.dll!CProgram::PropagateFlags_ApplyDataflowRanges(class CInstruction *,class CArgument *,bool,bool)	Unknown
d3dcompiler_47.dll!CCompiler::ApplySFPSRange(class CInstruction *,unsigned int,class CArgument * const *,bool)	Unknown
d3dcompiler_47.dll!CCompiler::EmitInstAll(struct ArSourceLocation const *,unsigned int,class CArgument * *,class CArgument * const *,class CArgument * const *,unsigned __int64,enum ArRangeFlags,enum ArBasicKind)	Unknown
d3dcompiler_47.dll!CCompiler::EmitAssignInsts(struct ArSourceLocation const *,unsigned int,class CArgument * *,class CArgument * *,unsigned int,class CInstruction *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitExpression(class CNode const *,unsigned int,class CArgument * *,unsigned int,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitExpression(class CNode const *,unsigned int,class CArgument * *,unsigned int,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitAndMarkExpression(struct ArSourceLocation const *,class CNode const *)	Unknown
d3dcompiler_47.dll!CCompiler::EmitStatement(class CNode const *,class CPacker *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitStatement(class CNode const *,class CPacker *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitForUnrolled(class CNode const *,class CNode const *,class CNode const *,class CNode const *,class CNode const *,class CArgument * *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitFor(class CNode const *,class CNode const *,class CNode const *,class CNode const *,class CNode const *)	Unknown
d3dcompiler_47.dll!CCompiler::EmitStatement(class CNode const *,class CPacker *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitStatement(class CNode const *,class CPacker *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitStatement(class CNode const *,class CPacker *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitForUnrolled(class CNode const *,class CNode const *,class CNode const *,class CNode const *,class CNode const *,class CArgument * *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitFor(class CNode const *,class CNode const *,class CNode const *,class CNode const *,class CNode const *)	Unknown
d3dcompiler_47.dll!CCompiler::EmitStatement(class CNode const *,class CPacker *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitStatement(class CNode const *,class CPacker *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitStatement(class CNode const *,class CPacker *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitFunction(class ArSymbolFunction *,class CNode const *,struct FCallMappingInfo *,class CArgument * *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitBaseFunctionCall(class CNodeExpression *,class ArSymbolFunction *,struct FCallMappingInfo *,unsigned int,unsigned int,class CArgument * *)	Unknown
d3dcompiler_47.dll!CCompiler::EmitCallExpr(class CNodeExpression *,unsigned int,class CArgument * *)	Unknown
d3dcompiler_47.dll!CCompiler::EmitExpression(class CNode const *,unsigned int,class CArgument * *,unsigned int,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitExpression(class CNode const *,unsigned int,class CArgument * *,unsigned int,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitExpression(class CNode const *,unsigned int,class CArgument * *,unsigned int,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitAndMarkExpression(struct ArSourceLocation const *,class CNode const *)	Unknown
d3dcompiler_47.dll!CCompiler::EmitStatement(class CNode const *,class CPacker *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitStatement(class CNode const *,class CPacker *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitStatement(class CNode const *,class CPacker *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitIf(class CNode const *,struct ArSourceLocation const *,struct ArSourceLocation const *,class CArgument *,class CNode const *,class CNode const *,bool,class CArgument * * const,class CArgument * *,class CTrackVarMapChanges *,struct SEmitIfSwitchData *)	Unknown
d3dcompiler_47.dll!CCompiler::EmitStatement(class CNode const *,class CPacker *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitStatement(class CNode const *,class CPacker *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitStatement(class CNode const *,class CPacker *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitSwitchInst(class CSwitchInfo *)	Unknown
d3dcompiler_47.dll!CCompiler::EmitSwitch(class CNode const *,class CNode const *,class CNode const *,class CArgument *)	Unknown
d3dcompiler_47.dll!CCompiler::EmitStatement(class CNode const *,class CPacker *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitStatement(class CNode const *,class CPacker *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitStatement(class CNode const *,class CPacker *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitForUnrolled(class CNode const *,class CNode const *,class CNode const *,class CNode const *,class CNode const *,class CArgument * *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitFor(class CNode const *,class CNode const *,class CNode const *,class CNode const *,class CNode const *)	Unknown
d3dcompiler_47.dll!CCompiler::EmitStatement(class CNode const *,class CPacker *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitStatement(class CNode const *,class CPacker *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitStatement(class CNode const *,class CPacker *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitFunction(class ArSymbolFunction *,class CNode const *,struct FCallMappingInfo *,class CArgument * *,unsigned int)	Unknown
d3dcompiler_47.dll!CCompiler::EmitAndGenerateCode(struct ArParseResult *,char const *,class ArSymbolFunction *,class CNode const *,class CNode const *,unsigned int,struct ID3D10Blob * *)	Unknown
d3dcompiler_47.dll!CCompiler::CompileInternal(class CPreProcessor *,struct ArParseResult *,char const *,class ArSymbolFunction *,class CNode const *,class CNode const *,bool,char const *,unsigned long,unsigned int,void const *,unsigned __int64,struct ID3D10Blob * *,class CLibraryContext *)	Unknown
d3dcompiler_47.dll!D3DCompileShader(void const *,unsigned __int64,char const *,struct _D3D_SHADER_MACRO const *,struct ID3DInclude *,char const *,char const *,unsigned int,unsigned int,unsigned int,void const *,unsigned __int64,struct ID3D10Blob * *,struct ID3D10Blob * *,class CLibraryContext *)	Unknown
d3dcompiler_47.dll!D3DCompileImpl(void const *,unsigned __int64,char const *,struct _D3D_SHADER_MACRO const *,struct ID3DInclude *,char const *,char const *,unsigned int,unsigned int,unsigned int,void const *,unsigned __int64,struct ID3D10Blob * *,struct ID3D10Blob * *)	Unknown
d3dcompiler_47.dll!D3DCompileSaveReplay(void const *,unsigned __int64,char const *,struct _D3D_SHADER_MACRO const *,struct ID3DInclude *,char const *,char const *,unsigned int,unsigned int,unsigned int,void const *,unsigned __int64,struct ID3D10Blob * *,struct ID3D10Blob * *)	Unknown
d3dcompiler_47.dll!D3DCompile2()	Unknown
d3dcompiler_47.dll!D3DCompile()	Unknown

The flags for D3DCompile() are:

D3DCOMPILE_ENABLE_STRICTNESS | D3DCOMPILE_PREFER_FLOW_CONTROL | D3DCOMPILE_DEBUG | D3DCOMPILE_SKIP_OPTIMIZATION

Finally what’s even crazier is that this crash seems to be caused by a simple multiplication in my shader. Specifically a shader that works fine:

float3 light;
float ndotl;

swith(lightType)
{
case X:
{
light = blah;
ndotl = dot(lightDir, normal);
light *= ndotl;
break;
}
}

Crashes:

float3 light;
float ndotl;

swith(lightType)
{
case X:
{
light = blah;
ndotl = dot(lightDir, normal);
break;
}
}

light *= ndotl;

I can provide a sample application and the actual shaders upon request. Thanks!