EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  <20182019  2020  2021  2022  2023  2024  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  <20182019  2020  2021  2022  2023  2024 
<== 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
Sent: Sunday, April 29, 2018 7:38 AM
To: Tim Mooney <[email protected]>; [email protected]
Subject: Crash in RecDynLink?

 

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

 


References:
Crash in RecDynLink? Mark Rivers

Navigate by Date:
Prev: Crash in RecDynLink? Mark Rivers
Next: Teledyne Lecroy waverunner Hassan, Mohamed
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  <20182019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Crash in RecDynLink? Mark Rivers
Next: Teledyne Lecroy waverunner Hassan, Mohamed
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  <20182019  2020  2021  2022  2023  2024 
ANJ, 30 Apr 2018 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·