EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  <20042005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  <20042005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Possible bug in registerRecordDeviceDriver.pl
From: "Thompson, David H." <[email protected]>
To: [email protected]
Date: Fri, 23 Jan 2004 09:17:39 -0500

I get the following error loading a library file on vxWorks/Epics 3.14.4:

 

 

 

cd timingbin

value = 0 = 0x0

ld<timingLib.munch

Undefined symbol: p (binding 1 type 0)  <<<<<<<<<<<<<<<<<<<<<

value = 28536800 = 0x1b36fe0

cd timing

value = 0 = 0x0

dbLoadDatabase("dbd/timing.dbd",0,0)

value = 0 = 0x0

timing_registerRecordDeviceDriver(pdbbase)

 

program

Exception current instruction address: 0x01b47334

Machine Status Register: 0x0008b030

Condition Register: 0x44200082

Task: 0x1b51b18 "tShell"

 

In timing.dbd I have:

……

driver (drvV124S)

 

device (ai,       VME_IO,   devAiV124S,      "Timing Gate")

…….

#registrar("timingSubs") <<<<<<<<<<<<<<<<<<<<< Commented out

 

And from that   registerRecordDeviceDriver.pl  generates:

 

……

epicsShareExtern void (*p)(void);   <<<<<<<<<<<<<<<<<<<<<<<<

 

int timing_registerRecordDeviceDriver(DBBASE *pbase)

{

    int i;

    for(i=0; i< 11;  i++ ) {

        if(registryDeviceSupportFind(deviceSupportNames[i])) continue;

        if(!registryDeviceSupportAdd(deviceSupportNames[i],devsl[i])) {

            errlogPrintf("registryDeviceSupportAdd failed %s\n",

                deviceSupportNames[i]);

            continue;

        }

    }

    for(i=0; i< 1;  i++ ) {

        if(registryDriverSupportFind(driverSupportNames[i])) continue;

        if(!registryDriverSupportAdd(driverSupportNames[i],drvsl[i])) {

            errlogPrintf("registryDriverSupportAdd failed %s\n",

                driverSupportNames[i]);

            continue;

        }

    }

    (*p)();   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    return(0);

}

 

 

The call to (*p)() generates the bus error and the unresolved link error.

The registrar line was commented out since I hadn’t actually completed the registrar function for that source file.  Apparently some pass that registerRecordDeviceDriver.pl made on the dbd file counted the line has having a registrar spec but didn’t pick up its argument.  The work around is to misspell “registrar”.

 

 

 


Replies:
Re: Possible bug in registerRecordDeviceDriver.pl Kay-Uwe Kasemir

Navigate by Date:
Prev: RE: ? initHookRegister() Liyu, Andrei
Next: Addendum to previous messgge: Possible bug in registerRecordDeviceDriver.pl Thompson, David H.
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  <20042005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: RE: ? initHookRegister() Liyu, Andrei
Next: Re: Possible bug in registerRecordDeviceDriver.pl Kay-Uwe Kasemir
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  <20042005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 10 Aug 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·