Measurement Studio for VC++

cancel
Showing results for 
Search instead for 
Did you mean: 

NIDS.dll showing EXCEPTION_ACCESS_VIOLATION Error

We are facing application crash problem in our product . We enable the crash dump we find the following information.

 

Application exception occurred:

Write a dump to file: C:\EdacsNT\Exe\..\Crash Files\AIOH20140121_120200_0000_0000.dmp

App: C:\EdacsNT\Exe\AIOH.Exe P:0 B:0   Last called exception handler: C:\EdacsNT\Exe\AIOH.Exe

Symbolfiles loaded for App:  (0)    Modul:  (0)

When: 2014-01-21;12:02:00.187

Reason: AIOH.Exe caused an EXCEPTION_ACCESS_VIOLATION in module nids.dll at 001B:01AAC99D, DllUnregisterServer()+10484 byte(s)

Register: EAX=02DCA848  EBX=00000003  ECX=00000000  EDX=00918430  ESI=02DCA620

EDI=02DCA558  EBP=0012FCA8  ESP=0012FC90  EIP=01AAC99D  FLG=00010206

CS=001B   DS=0023  SS=0023  ES=0023   FS=003B  GS=0000

Stacktrace:

001B:01AAC99D nids.dll, DllUnregisterServer()+10484 byte(s)

001B:01AAC938 nids.dll, DllUnregisterServer()+10383 byte(s)

001B:01AA11C3 nids.dll

001B:01AA124F nids.dll

001B:01AABB7C nids.dll, DllUnregisterServer()+6867 byte(s)

001B:01AABA94 nids.dll, DllUnregisterServer()+6635 byte(s)

 

AIOH.Exe is the application which is responsible for data read and write from Ni cFP.

 

We have two application which are communicating simultaneously from cFP , One is reading and writing analog data (AIOH) and another one is reading and writing digital data .  Both modules are creating their own connections  and their frequency of reading and writing is also different.  Always this issue is occurred in AIOH .

 

In AIOH we are reading data upto 100 hz from analog input from AI118 and 1 to 10 hz from other RTD and TH couple modules and analog output.  This issue is very random generally occurred on 15 to 20 days . But reason looks same from dump.

We have installed test machine environment.

Win xp with sp3.

MS office  2003

Ni Field Point - 3.1 or latter

 

Brief over overview of Implementation and System Calls Details are given bellow.

 

We are using the nids.dll . 

#import "nids.dll" no_namespace

 

 

INIDSCtlPtr m_PtrChannelConnect;

INIDSCtlPtr : This is the smart pointer that is declare in nids.tlh

 

 

Basic Flow of Connection and data Acquisition:

 

We initialize the two connection instance in our product we write following code to connect from module (cFP-2000, cFP-2200 )

 

CLSID clSid;

CLSIDFromString(L"CWDSLib.CWDataSocket",&clSid);

 

if(m_ m_PtrChannelConnect.CreateInstance(clSid)==S_OK)

{

 

m_ m_PtrChannelConnect ->SyncConnectTo(a_strConnectionString,cwdsRead,5500);

m_ m_PtrChannelConnect ->SyncConnectTo(a_strConnectionString,cwdsWrite,5500);

 

}

 

After successfully connection implementation,we run multiple threads which acquire the data on the different frequency for data reading we use

 

m_ m_PtrChannelConnect ->SyncRead(100);  

m_ m_PtrChannelConnect ->Update();

m_ m_PtrChannelConnect ->Data->GetValue().bVal;

 

After successfully connection implementation, We use on demand write on the different module.

 

m_ m_PtrChannelConnect ->SyncWrite(a_strValue,0);

 

 

Please suggest what we can check for this .

 

 

Best Regards

Pradeep

 

0 Kudos
Message 1 of 1
(5,399 Views)