?
Solved

Annoying:  Access Violation / Null Reference

Posted on 2004-03-31
7
Medium Priority
?
756 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 400 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 400 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
Cloud Training Guides

FREE GUIDES: In-depth and hand-crafted Linux, AWS, OpenStack, DevOps, Azure, and Cloud training guides created by Linux Academy instructors and the community.

 
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 400 total points
ID: 10731756
Use GetLastError()

VV

0
 
LVL 1

Author Comment

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

Featured Post

Congratulations! You’re Certified – Now What?

Starting a new career can be overwhelming. Becoming certified in your field of expertise is a great start, but where do you go from here?  Here are some tips to help you on your career journey.

Question has a verified solution.

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

Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
In this brief tutorial Pawel from AdRem Software explains how you can quickly find out which services are running on your network, or what are the IP addresses of servers responsible for each service. Software used is freeware NetCrunch Tools (https…
This tutorial will teach you the special effect of super speed similar to the fictional character Wally West aka "The Flash" After Shake : http://www.videocopilot.net/presets/after_shake/ All lightning effects with instructions : http://www.mediaf…
Suggested Courses

771 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