Solved

Annoying:  Access Violation / Null Reference

Posted on 2004-03-31
7
738 Views
Last Modified: 2007-12-19
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
0
Comment
Question by:Jazzle
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
7 Comments
 
LVL 12

Accepted Solution

by:
vascov earned 100 total points
ID: 10728298
Hi Jazzle,

Compile your C++ DLL with debuging info. That may help you showing more info when an AV occurs.

Regarding your code, check to see that solstream is NOT null after opening it. You might be experiencing issues with file sharing, or something like that.
The NullRef might be a consequence of the other error... (the access violation)

hth

Vasco
0
 
LVL 1

Author Comment

by:Jazzle
ID: 10728376
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'?
0
 
LVL 12

Assisted Solution

by:vascov
vascov earned 100 total points
ID: 10730184
Launch your application using the debugger.

Please, do check if solstream is NOT null anyway. It wont hurt, and it might surprise you the situations that can occur. (i'm not saying with 100% sure that the problem is in this area, but since this is the only code you're showing i definetely recommend for you to test it...)

That exception can also be happening in some marshalling between managed / unmanaged.

hope this helps (hth),

Vasco
0
Guide to Performance: Optimization & Monitoring

Nowadays, monitoring is a mixture of tools, systems, and codes—making it a very complex process. And with this complexity, comes variables for failure. Get DZone’s new Guide to Performance to learn how to proactively find these variables and solve them before a disruption occurs.

 
LVL 1

Author Comment

by:Jazzle
ID: 10731085
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.....
0
 
LVL 1

Author Comment

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

J
0
 
LVL 12

Assisted Solution

by:vascov
vascov earned 100 total points
ID: 10731756
Use GetLastError()

VV

0
 
LVL 1

Author Comment

by:Jazzle
ID: 10731905
thanks - will look into GetLastError().
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In my previous article (http://www.experts-exchange.com/Programming/Languages/.NET/.NET_Framework_3.x/A_4362-Serialization-in-NET-1.html) we saw the basics of serialization and how types/objects can be serialized to Binary format. In this blog we wi…
This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below. https://filedb.experts-exchange.com/incoming/2017/03_w12/1151775/Permutations.txt https://filedb.experts-exchange.com/incoming/201…

726 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question