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  2018  2019  2020  2021  <20222023  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  2018  2019  2020  2021  <20222023  2024 
<== Date ==> <== Thread ==>

Subject: RE: [EXTERNAL] Bus errors accessing VME with base 7.0.6.1 and latest synApps modules
From: Mark Rivers via Tech-talk <tech-talk at aps.anl.gov>
To: "Hartman, Steven" <hartmansm at ornl.gov>
Cc: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Thu, 9 Jun 2022 20:03:04 +0000

The failure is very sensitive to minor changes to the source code.  If I add the following simple check of the value of pfl->u.r.dtor then there are no bus errors in over 2500 seconds.

 

diff --git a/modules/database/src/ioc/db/dbEvent.c b/modules/database/src/ioc/db/dbEvent.c

index 9fcc1ee..7b9970d 100644

--- a/modules/database/src/ioc/db/dbEvent.c

+++ b/modules/database/src/ioc/db/dbEvent.c

@@ -1199,7 +1199,12 @@ void db_delete_field_log (db_field_log *pfl)

{

     if (pfl) {

         /* Free field if reference type field log and dtor is set */

-        if (pfl->type == dbfl_type_ref && pfl->u.r.dtor) pfl->u.r.dtor(pfl);

+        if (pfl->type == dbfl_type_ref && pfl->u.r.dtor) {

+            if ((pfl->u.r.dtor >= (dbfl_freeFunc *)0x80000000) && (pfl->u.r.dtor <= (dbfl_freeFunc *)0xBFFFFFFF)) {

+                printf("db_delete_field_log pfl->u.r.dtor is in A32 address space %p\n", pfl->u.r.dtor);

+            }

+            pfl->u.r.dtor(pfl);

+        }

         /* Free the field log chunk */

         freeListFree(dbevFieldLogFreeList, pfl);

     }

 

If I then comment out those lines like this then I get a bus error in less than 20 seconds.

 

corvette:local/epics-devel/base-7.0.6>git diff modules

diff --git a/modules/database/src/ioc/db/dbEvent.c b/modules/database/src/ioc/db/dbEvent.c

index 9fcc1ee..6addadc 100644

--- a/modules/database/src/ioc/db/dbEvent.c

+++ b/modules/database/src/ioc/db/dbEvent.c

@@ -1199,7 +1199,12 @@ void db_delete_field_log (db_field_log *pfl)

{

     if (pfl) {

         /* Free field if reference type field log and dtor is set */

-        if (pfl->type == dbfl_type_ref && pfl->u.r.dtor) pfl->u.r.dtor(pfl);

+        if (pfl->type == dbfl_type_ref && pfl->u.r.dtor) {

+//            if ((pfl->u.r.dtor >= (dbfl_freeFunc *)0x80000000) && (pfl->u.r.dtor <= (dbfl_freeFunc *)0xBFFFFFFF)) {

+//                printf("db_delete_field_log pfl->u.r.dtor is in A32 address space %p\n", pfl->u.r.dtor);

+//            }

+            pfl->u.r.dtor(pfl);

+        }

         /* Free the field log chunk */

         freeListFree(dbevFieldLogFreeList, pfl);

     }

 

Mark

 

 

From: Hartman, Steven <hartmansm at ornl.gov>
Sent: Thursday, June 9, 2022 12:56 PM
To: Mark Rivers <rivers at cars.uchicago.edu>
Cc: Till Straumann <till.straumann at psi.ch>; tech-talk at aps.anl.gov
Subject: Re: [EXTERNAL] Bus errors accessing VME with base 7.0.6.1 and latest synApps modules

 




On Jun 9, 2022, at 12:05 PM, Mark Rivers via Tech-talk <tech-talk at aps.anl.gov> wrote:

I am now convinced that the A32 addresses which generate VME bus errs are in fact the double values that are written to the ao records.

 


And this number shows up in the floating point register for the terminated task as FR0 . . .

VME Bus Error accessing A32: 0xbfe26ed0

...
fr0    = -0.576028


0xbfe26ed000000000 = -5.7602691650390620e-1

VME Bus Error accessing A32: 0xbffffffc

...
fr0    =       -2


0xbffffffc00000000 = -1.9999961853027344


Still the big question as to where this is being treated as an address.

-- 
Steven Hartman
hartmansm at ornl.gov

 


References:
Re: Bus errors accessing VME with base 7.0.6.1 and latest synApps modules Michael Davidsaver via Tech-talk
Re: Bus errors accessing VME with base 7.0.6.1 and latest synApps modules Mark Rivers via Tech-talk
Re: Bus errors accessing VME with base 7.0.6.1 and latest synApps modules Mark Rivers via Tech-talk
Re: Bus errors accessing VME with base 7.0.6.1 and latest synApps modules Till Straumann via Tech-talk
RE: Bus errors accessing VME with base 7.0.6.1 and latest synApps modules Mark Rivers via Tech-talk
Re: Bus errors accessing VME with base 7.0.6.1 and latest synApps modules Till Straumann via Tech-talk
RE: Bus errors accessing VME with base 7.0.6.1 and latest synApps modules Mark Rivers via Tech-talk
Re: Bus errors accessing VME with base 7.0.6.1 and latest synApps modules Till Straumann via Tech-talk
RE: Bus errors accessing VME with base 7.0.6.1 and latest synApps modules Mark Rivers via Tech-talk
Re: [EXTERNAL] Bus errors accessing VME with base 7.0.6.1 and latest synApps modules Hartman, Steven via Tech-talk

Navigate by Date:
Prev: Re: Removing battery/crystal from MVME 5100 Maren Purves via Tech-talk
Next: RE: PyEpics: Cannot connect to DEVICE Mark Rivers via Tech-talk
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  <20222023  2024 
Navigate by Thread:
Prev: Re: [EXTERNAL] Bus errors accessing VME with base 7.0.6.1 and latest synApps modules Hartman, Steven via Tech-talk
Next: Re: [EXTERNAL] Bus errors accessing VME with base 7.0.6.1 and latest synApps modules Hartman, Steven via Tech-talk
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  <20222023  2024 
ANJ, 14 Sep 2022 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·