I’m have a problem with a Windows IOC crashing during startup. Here is the environment:
-
win32-x86-debug-static
-
Visual Studio 2015
-
Base 7.0.1
-
sscan master branch
-
IOC is in the “dxp” module where I am adding support for the MicroDXP from XIA
Here is the stack trace in the thread that is crashing. The problem seems to be in RecDynLink.c and Channel Access client code.
dxpApp.exe!issue_debug_notification(const wchar_t * const message) Line 28 C++
dxpApp.exe!__acrt_report_runtime_error(const wchar_t * const message) Line 154 + 0x9 bytes C++
dxpApp.exe!abort() Line 51 + 0xa bytes C++
> dxpApp.exe!ca_client_context::vSignal(int ca_status, const char * pfilenm, int lineno, const char * pFormat, char * args) Line 414 C++
dxpApp.exe!ca_signal_formated(long ca_status, const char * pfilenm, int lineno, const char * pFormat, ...) Line 617 C++
dxpApp.exe!ca_signal_with_file_and_lineno(long ca_status, const char * message, const char * pfilenm, int lineno) Line 593 + 0x15 bytes C++
dxpApp.exe!getCallback(event_handler_args eha) Line 625 C
dxpApp.exe!getCallback::completion(epicsGuard<epicsMutex> & guard, unsigned int type, unsigned long count, const void * pData) Line 62 + 0x2d bytes C++
dxpApp.exe!dbContextReadNotifyCache::callReadNotify(epicsGuard<epicsMutex> & guard, dbChannel * dbch, unsigned int type, unsigned long count, cacReadNotify & notify) Line 96 + 0x24 bytes C++
dxpApp.exe!dbContext::callReadNotify(epicsGuard<epicsMutex> & guard, dbChannel * dbch, unsigned int type, unsigned long count, cacReadNotify & notifyIn) Line 236 C++
dxpApp.exe!dbChannelIO::read(epicsGuard<epicsMutex> & guard, unsigned int type, unsigned long count, cacReadNotify & notify, unsigned int * __formal) Line 77 C++
dxpApp.exe!ca_array_get_callback(long type, unsigned long count, oldChannelNotify * pChan, void (event_handler_args)* pfunc, void * arg) Line 357 + 0x32 bytes C++
dxpApp.exe!connectCallback(connection_handler_args cha) Line 577 + 0x16 bytes C
dxpApp.exe!oldChannelNotify::connectNotify(epicsGuard<epicsMutex> & guard) Line 93 + 0xd bytes C++
dxpApp.exe!dbChannelIO::initiateConnect(epicsGuard<epicsMutex> & guard) Line 44 + 0x1e bytes C++
dxpApp.exe!oldChannelNotify::initiateConnect(epicsGuard<epicsMutex> & guard) Line 462 + 0x19 bytes C++
dxpApp.exe!ca_create_channel(const char * name_str, void (connection_handler_args)* conn_func, void * puser, unsigned int priority, oldChannelNotify * * chanptr) Line 341 C++
dxpApp.exe!recDynLinkInp() Line 841 + 0x1e bytes C
dxpApp.exe!epicsWin32ThreadEntry(void * lpParameter) Line 499 + 0x11 bytes C
dxpApp.exe!invoke_thread_procedure(unsigned int (void *)* const procedure, void * const context) Line 92 C++
dxpApp.exe!thread_start<unsigned int (__stdcall*)(void *)>(void * const parameter) Line 115 + 0x10 bytes C++
kernel32.dll!745b8654()
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
ntdll.dll!772d4a77()
ntdll.dll!772d4a47()
Any idea what could be wrong?
Thanks,
Mark