Link to home
Start Free TrialLog in
Avatar of Jazzle
JazzleFlag for United Kingdom of Great Britain and Northern Ireland

asked on

Annoying: Access Violation / Null Reference

Hi Experts,
I have a C# application that calls a DLL written by me in C++.
GPGUI.exe calls gpmain() in simplegpdll.dll with the following line:

if (simplegpdll.gpmain(...,...,...) == 1) {... return true;}


Most of the time it runs with no problems - however, sometimes (and I can't spot a pattern), it crashes with the following error:

   First-chance exception at 0x77f5b2ab in GPGUI.exe: 0xC0000005: Access violation reading location 0x00000034.
   An unhandled exception of type 'System.NullReferenceException' occurred in simplegpdll.dll

   Additional information: Object reference not set to an instance of an object.

The DLL reads a text file, and writes three (once each per operation).  All reads and writes look like this:
FILE *solstream;
solstream=fopen("solution.csv","w+");
fprintf(solstream,"Gen,Best Program\n%d,%d\n", generation, best_prog);
fclose(solstream);
fcloseall();

Any suggestions on what's at 0x00...34 (or how to find out), and also what is throwing the Null Ref?

Thanks in advance, J
ASKER CERTIFIED SOLUTION
Avatar of vascov
vascov
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Jazzle

ASKER

I have compiled it with the debuging info (it was anyway) but unfortunately it doesn't give me any extra info. :(
also, I know that solstream can't be null because of the way it's created.

I did wonder about file sharing, but i have found found that it gives a different error if the file is in use.

thanks for looking.

J


PS - 'hth'?
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Jazzle

ASKER

Okay, so I have now found that the exception is caused by the fprintf() command - so i suppose it's refering to the file i want to write to.  all the files written to are closed afterwards - so could it be a matter of threads confusing each other? (I haven't specifed any thread usage)

************* Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
   at fprintf(_iobuf* , SByte* )
   at gpmain(Int32 POPULATION_SIZ.....
Avatar of Jazzle

ASKER

You were right it seems the fopen() command is sometimes returning NULL - but I can't see why - any ideas anyone?

J
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Jazzle

ASKER

thanks - will look into GetLastError().