1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 <2018> 2019 2020 2021 2022 2023 2024 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 <2018> 2019 2020 2021 2022 2023 2024 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | RE: Crash in RecDynLink? |
From: | Mark Rivers <[email protected]> |
To: | Tim Mooney <[email protected]>, "[email protected]" <[email protected]> |
Date: | Sun, 29 Apr 2018 13:22:34 +0000 |
This error is in the call to ca_add_array_event at line 618 in recDynLink.c, in the getCallback() function. I added a printf to see what PV is being added there, and it is the .ACQG field of the mca record. recDynLink::getCallback calling ca_add_array_event pv=microDXP:mca1.ACQG ca_add_array_event is printing this error: CA.Client.Exception............................................... Error: "The data type specifed is invalid" Context: "ca_add_array_event" Source File: ../recDynLink.c line 624 Current Time: Sun Apr 29 2018 08:09:06.304102377 This is the debug dump of the variables in the recDynLink::getCallback function + &pdynLinkPvt 0x06b8fa1c dynLinkPvt * * + &pdynLinkPvt->evid 0x062a5c24 oldSubscription * * + mapNewToOld 0x00de8de8 mapNewToOld short [10] mapNewToOld[pdynLinkPvt->dbrType] 256 short - pdynLinkPvt 0x062a5c18 {lock=0x062491c0 pvname=0x05823658 "microDXP:mca1.ACQG" chid=0x06e6dad8 ...} dynLinkPvt * + lock 0x062491c0 {node={...} id=0x06276a30 pFileName=0x00de8f9c "../recDynLink.c" ...} epicsMutexParm * + pvname 0x05823658 "microDXP:mca1.ACQG" char * - chid 0x06e6dad8 {cacCtx={...} io={...} pConnCallBack=0x003247e0 ...} oldChannelNotify * + cacChannelNotify {...} cacChannelNotify + cacCtx {sgTable={...} oldChannelNotifyFreeList={...} getCopyFreeList={...} ...} ca_client_context & + io {priorityMax=99 priorityMin=0 priorityDefault=0 ...} cacChannel & pConnCallBack 0x003247e0 connectCallback(connection_handler_args) void (connection_handler_args)* pPrivate 0x0583eee4 void * pAccessRightsFunc 0x003f1fc0 cacNoopAccesRightsHandler(access_rights_handler_args) void (access_rights_handler_args)* ioSeqNo 0 unsigned int currentlyConnected true bool prevConnected true bool + evid 0x00000000 {chan=??? id=??? pFunc=??? ...} oldSubscription * searchCallback 0x002d3490 pvSearchCallback(recDynLink *) void (recDynLink *)* monitorCallback 0x002d3570 inputChanged(recDynLink *) void (recDynLink *)* notifyCallback 0x00000000 void (recDynLink *)* userGetCallback 0x00000000 void (recDynLink *)* notifyInProgress 0 short + timestamp {secPastEpoch=0 nsec=0 } epicsTimeStamp status 0 short severity 0 short pbuffer 0x06e7bf68 void * nRequest 1 unsigned int dbrType 10 short graphicLow 0.00000000000000000 double graphHigh 0.00000000000000000 double controlLow 0.00000000000000000 double controlHigh 0.00000000000000000 double + units 0x062a5c78 "" char [8] precision 0 short io ioInput ioType state stateConnected stateType scalar 1 short + pdynLinkPvt->chid 0x06e6dad8 {cacCtx={...} io={...} pConnCallBack=0x003247e0 ...} oldChannelNotify * pdynLinkPvt->dbrType 10 short pdynLinkPvt->nRequest 1 unsigned int + precDynLink 0x0583eee4 {puserPvt=0x056cce70 pdynLinkPvt=0x062a5c18 status=0 ...} recDynLink * From: Mark Rivers 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 |