g+
g+ Communities
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  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  <20042005  2006  2007  2008  2009  2010  2011  2012  2013  2014 
<== Date ==> <== Thread ==>

Subject: Possible bug in registerRecordDeviceDriver.pl
From: "Thompson, David H." <thompsondh@ornl.gov>
To: tech-talk@aps.anl.gov
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 
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 
ANJ, 10 Aug 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· EPICSv4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·