[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

Annoying:  Access Violation / Null Reference

Posted on 2004-03-31
7
Medium Priority
?
775 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
  • 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
Windows Server 2016: All you need to know

Learn about Hyper-V features that increase functionality and usability of Microsoft Windows Server 2016. Also, throughout this eBook, you’ll find some basic PowerShell examples that will help you leverage the scripts in your environments!

 
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

Transaction-level recovery for Oracle database

Veeam Explore for Oracle delivers low RTOs and RPOs with agentless transaction log backup and transaction-level recovery of Oracle databases. You can restore the database to a precise point in time, even to a specific transaction.

Question has a verified solution.

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

More often than not, we developers are confronted with a need: a need to make some kind of magic happen via code. Whether it is for a client, for the boss, or for our own personal projects, the need must be satisfied. Most of the time, the Framework…
Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
This video shows how to quickly and easily deploy an email signature for all users in Office 365 and prevent it from being added to replies and forwards. (the resulting signature is applied on the server level in Exchange Online) The email signat…
Please read the paragraph below before following the instructions in the video — there are important caveats in the paragraph that I did not mention in the video. If your PaperPort 12 or PaperPort 14 is failing to start, or crashing, or hanging, …
Suggested Courses
Course of the Month19 days, 10 hours left to enroll

873 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