Crash in nvwgf2um.dll while multiple loading threads are running. d3d11.

This is an occasional crash on what appears to be an nvidia worker thread when a game loading thread trys to create textures while the main thread is rendering. The more threads this is attempted with the more often it happens. Serializing calls to createtexture2d appears to avoid the problem. But CreateTexture2D should be threadsafe according to the api documentation.

Driver version 337.88

Unhandled exception at 0x593B84F6 (nvwgf2um.dll) in GameD.exe: 0xC0000005: Access violation reading location 0xBAADF025.

nvwgf2um.dll!593b84f6() Unknown
[Frames below may be incorrect and/or missing, no symbols loaded for nvwgf2um.dll]
nvwgf2um.dll!593dc9ea() Unknown
nvwgf2um.dll!59190ce6() Unknown
nvwgf2um.dll!5914611d() Unknown
nvwgf2um.dll!591415b5() Unknown
nvwgf2um.dll!59253aa5() Unknown
nvwgf2um.dll!599993cf() Unknown
nvwgf2um.dll!599994f7() Unknown
kernel32.dll!@BaseThreadInitThunk@12() Unknown
ntdll.dll!___RtlUserThreadStart@8() Unknown
ntdll.dll!__RtlUserThreadStart@8() Unknown

Loading thread 1

ntdll.dll!_ZwWaitForSingleObject@12()	Unknown
ntdll.dll!_ZwWaitForSingleObject@12()	Unknown
ntdll.dll!_NtReleaseSemaphore@12()	Unknown
d3d11.dll!CResource<struct ID3D11Texture3D>::CLS::FinalConstruct(class CContext *,struct D3D11DDIARG_CREATERESOURCE const *,struct SD3D11SharedResourceCreationArgs *,struct SD3D11CrossLayerData *,struct D3D10DDI_HRTRESOURCE)	Unknown
d3d11.dll!TCLSWrappers<class CTexture2D>::CLSFinalConstructFn(struct CTexture2D::CLS *,class CContext *,struct CTexture2D::TConstructorArgs const *)	Unknown
d3d11.dll!CLayeredObjectWithCLS<class CTexture2D>::FinalConstruct(struct CTexture2D::TConstructorArgs const &,struct _GUID const &,void * *,struct CLayeredObjectWithCLS<class CTexture2D>::SInfo const *)	Unknown
d3d11.dll!CLayeredObjectWithCLS<class CTexture2D>::CreateInstance(struct CTexture2D::TConstructorArgs &,void *,void *,struct _GUID const &,void * *,struct CLayeredObjectWithCLS<class CTexture2D>::SInfo const *)	Unknown
d3d11.dll!CDevice::CreateLayeredChild(unsigned int,void const *,unsigned long,struct ID3D11LayeredUseCounted *,struct _GUID const &,void * *)	Unknown
d3d11.dll!CBridgeImpl<struct ID3D11LayeredDevice,struct ID3D11LayeredDevice,class CLayeredObject<class CDevice> >::CreateLayeredChild(unsigned int,void const *,unsigned long,struct ID3D11LayeredUseCounted *,struct _GUID const &,void * *)	Unknown
d3d11.dll!CD3D11LayeredChild<struct ID3D11DeviceChild,class NDXGI::CDevice,64>::FinalConstruct(enum ED3D11DeviceChildType,struct SLayeredArgs const *,unsigned long,struct ID3D11LayeredUseCounted *,struct _GUID const &)	Unknown
d3d11.dll!NDXGI::CResource::FinalConstruct(struct NDXGI::CResource::TConstructorArgs const &)	Unknown
d3d11.dll!NDXGI::CDevice::CreateLayeredChild(unsigned int,void const *,unsigned long,struct ID3D11LayeredUseCounted *,struct _GUID const &,void * *)	Unknown
d3d11.dll!CBridgeImpl<struct ID3D11LayeredDevice,struct ID3D11LayeredDevice,class CLayeredObject<class NDXGI::CDevice> >::CreateLayeredChild(unsigned int,void const *,unsigned long,struct ID3D11LayeredUseCounted *,struct _GUID const &,void * *)	Unknown
d3d11_1sdklayers.dll!CD3D11LayeredChild<struct ID3D11BlendState1,class NDebug::CDevice,32>::FinalConstruct(enum ED3D11DeviceChildType,struct SLayeredArgs const *,unsigned long,struct ID3D11LayeredUseCounted *,struct _GUID const &)	Unknown

d3d11_1sdklayers.dll!NDebug::CDeviceChild::FinalConstruct(enum ED3D11DeviceChildType,struct SLayeredArgs const *,unsigned long,unsigned long,struct ID3D11LayeredUseCounted *,struct _GUID const &) Unknown
d3d11_1sdklayers.dll!NDebug::CTexture2D::FinalConstruct(struct NDebug::CTexture2D::TConstructorArgs const &) Unknown
d3d11_1sdklayers.dll!CLayeredObject::CreateInstance(struct NDebug::CTexture2D::TConstructorArgs const &,void *,void *,struct _GUID const &,void * *) Unknown
d3d11_1sdklayers.dll!NDebug::CDevice::CreateLayeredChild(unsigned int,void const *,unsigned long,struct ID3D11LayeredUseCounted *,struct _GUID const &,void * *) Unknown
d3d11_1sdklayers.dll!CBridgeImpl<struct ID3D11LayeredDevice,struct ID3D11LayeredDevice,class CLayeredObject >::CreateLayeredChild(unsigned int,void const *,unsigned long,struct ID3D11LayeredUseCounted *,struct _GUID const &,void * *) Unknown
d3d11.dll!NOutermost::CDeviceChild::FinalConstruct(struct NOutermost::CDeviceChild::TConstructorArgs const &) Unknown
d3d11.dll!CUseCountedObject::CUseCountedObject(void *,struct NOutermost::CDeviceChild::TConstructorArgs const &,class NOutermost::CDevice *,struct _GUID const &,void * *) Unknown
d3d11.dll!CUseCountedObject::CreateInstance(struct NOutermost::CDeviceChild::TConstructorArgs const &,class NOutermost::CDevice *,void *,void *,struct _GUID const &,void * *) Unknown
d3d11.dll!NOutermost::CDevice::CreateLayeredChild(unsigned int,void const *,unsigned long,struct ID3D11LayeredUseCounted *,struct _GUID const &,void * *) Unknown
d3d11.dll!CDevice::CreateAndRecreateLayeredChild(unsigned int,struct SD3D11LayeredTexture2DCreationArgs *,struct ID3D11LayeredUseCounted *,struct _GUID const &,void * *,bool) Unknown
d3d11.dll!CDevice::CreateTexture2D_Worker(struct D3D11_TEXTURE2D_DESC const *,struct D3D11_SUBRESOURCE_DATA const *,int,struct ID3D11Texture2D * *,struct SD3D11SharedResourceCreationArgs *,bool) Unknown
d3d11.dll!CDevice::CreateTexture2D(struct D3D11_TEXTURE2D_DESC const *,struct D3D11_SUBRESOURCE_DATA const *,struct ID3D11Texture2D * *) Unknown
d3d11_1sdklayers.dll!NDebug::CDevice::CreateTexture2D(struct D3D11_TEXTURE2D_DESC const *,struct D3D11_SUBRESOURCE_DATA const *,struct ID3D11Texture2D * *) Unknown