[Windows & DMD] No callstack when crash with Access violation reading location 0x00000000

Benjamin Thaut code at benjamin-thaut.de
Sun Jan 12 09:01:54 PST 2014


Am 12.01.2014 17:18, schrieb Xavier Bigand:
> Le 12/01/2014 11:16, Benjamin Thaut a écrit :
>> Am 12.01.2014 00:47, schrieb Xavier Bigand:
>>> I didn't know this menu settings, but activate Access Violation don't
>>> change anything.
>>>
>>
>> It seems that your crash happens inside the OpenGL part of the graphics
>> driver. It is caused by
>> DQuick\src\dquick\renderer3D\openGL\mesh.d line 125
>> I assume that you setup a few OpenGL parameters invalid and thus the
>> driver reads from a null pointer.
>>
>> I found it by single stepping. I started the application, then set the
>> breakpoint like shown below and single steppt into the draw() method.
>>
>> debug
>> {
>>      if (mRebuildDebugMeshes)
>>          updateDebugMesh(); // put breakpoint here
>>      mDebugMesh.draw();
>>      if ((implicitWidth != float.nan && implicitHeight != float.nan)
>>          && (implicitWidth != mSize.x && implicitHeight != mSize.y))
>>          mDebugImplicitMesh.draw();
>> }
>>
>> Have fun debugging ;-)
>>
>> Kind Regards
>> Benjamin Thaut
>
> Thank for your support and your time
>
> I already tried to debug opengl with gdebugger is used to find those
> kind of issues. But it doesn't seems working fine with D binaries.

I higly recommend using either glIntercept 
(http://code.google.com/p/glintercept/) or glslDevil 
(http://www.vis.uni-stuttgart.de/glsldevil/) to debug OpenGL applications.
If you have a nvidia card you could also use nvidia nsight to debug your 
application: 
https://developer.nvidia.com/nvidia-nsight-visual-studio-edition

My guess would be that either your vertex buffer or index buffer is no 
longer valid, thus gets not bound, and as a result the graphics driver 
reads from client memory at address null.

Kind Regards
Benjamin Thaut


More information about the Digitalmars-d-learn mailing list