0xC0000005: 0x0000000000000000 access violation...

Robert M. Münch robert.muench at saphirion.com
Sun Jul 1 09:05:56 UTC 2018


This one look nasty...

I get an access violation crash after some time. The crash is 
reproducible in that it always happens after some time while executing 
the same code sequence (meaning the same function call chain).

The debugger kicks in with a call stack, but it looks strange to me:

 	0000000000000000()	Unbekannt
>	reactive-gui.exe!app.mouseMove.__lambda3(app.box * b, bool a) Zeile 
875 	reactive-gui.exe!app.mouseMove.dispatchHandler!((a, b) => 
a.mouseMove_downward(b), (a, b) => 
a.mouseMove_upward(b)).dispatchHandler(app.winMsg this, app.osStream * 
s) Zeile 947 	reactive-gui.exe!app.mouseMove(app.winMsg s, app.osStream 
* wm) Zeile 875

That's line 875: a is an object and b a bool. So, I'm giving the 
memember function to call by the handler

  	dispatchHandler!((a,b) => a.mouseMove_downward(b), (a,b) => 
a.mouseMove_upward(b))(wm,s);

That's the signature of dispatchHandler:

	void dispatchHandler(alias funcDownward, alias funcUpward)(winMsg wm, 
osStream s) {

And the line the debugger kick in is: node_box is valid

        if(funcDownward(node_box, false))
          updateScreen = true;


In the variable inspect window there is nothing unnormal for the 
variables I use, up to one thing. I see a

	this 0x0000000000000000

So, why do I see a "this" at all? Is this because the code gets called 
via a lambda? How can such a situation happen?


-- 
Robert M. Münch
http://www.saphirion.com
smarter | better | faster



More information about the Digitalmars-d-learn mailing list