01-22-2014 03:34 AM
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