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  <20102011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  <20102011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: iocStats (was: vxStats memory corruption)
From: Ralph Lange <[email protected]>
To: "Kasemir, Kay" <[email protected]>
Cc: EPICS Tech-Talk <[email protected]>
Date: Fri, 09 Jul 2010 10:51:08 -0400
Hello Kay,

note that vxStats has been superseded (I would consider it replaced) by the iocStats package, which provides the traditional vxStats and a bunch of additional features - on a variety of OS, including vxWorks (5 and 6), RTEMS, Linux, Solaris, and Windows (for a still limited subset).
iocStats is available and accessible as part of the EPICS Applications project on SourceForge.


The CLUSTSIZES issue (that appears on vxWorks 6) has been fixed in iocStats a long time ago. (BTW: Your fix breaks on vxWorks 5.)

Please consider switching to iocStats as a possibly worthwhile alternative to finding all remaining vxWorks 6 issues the hard way...

Hope this helps,
Ralph

And, yes: We could really use the support from a programmer with good in-depth Windows knowledge to add the missing implementations for CPU usage, memory usage, and such to iocStats. Pretty please.....


On Fri 09 Jul 2010 8:47:01 Kasemir, Kay wrote:
Hi:

At the SNS we're using a version of vxStats where devVxStats.c looks similar
to this synapps release:
https://subversion.xor.aps.anl.gov/trac/synApps/browser/vxStats/trunk/vxStat
sApp/src/devVxStats.c

The cluster info support in there seems to cause memory corruption.

clustinfo is defined like this for 10 elements
974 #define CLUSTSIZES 10
975 976 static int clustinfo[2][CLUSTSIZES][4];


... but later filled for CL_TBL_SIZE elements:
997 void getClusts(int dataPool)
998 {
999 NET_POOL_ID pNetPool;
1000 int i;
1001 int test;
1002 1003 if (dataPool)
1004 {
1005 dataPool = 1;
1006 pNetPool = _pNetSysPool;
1007 }
1008 else
1009 {
1010 pNetPool = _pNetDpool;
1011 }
1012 1013 test = pNetPool->clTbl[0]->clSize;
1014 for (i = 0; i < CL_TBL_SIZE; i++)
1015 {
1016 /* first two are constant under current conditions and could
be
1017 * done just once per pool.
1018 */
1019 if (i > 0)
1020 if (pNetPool->clTbl[i]->clSize != (2 * test)) break;
1021 test = pNetPool->clTbl[i]->clSize;
1022 clustinfo[dataPool][i][0] = test;
1023 clustinfo[dataPool][i][1] = pNetPool->clTbl[i]->clNum;
1024 clustinfo[dataPool][i][2] = pNetPool->clTbl[i]->clNumFree;
1025 clustinfo[dataPool][i][3] = pNetPool->clTbl[i]->clUsage;
1026 }
1027 }


On our MV2100 CPUs, CL_TBL_SIZE evaluates to 11, which might be close
enough. With our new MV5500 setups, CL_TBL_SIZE is 16, which in one case
happened to cause getClusts() to clobber a save_restore structure.

Replacing all use of CLUSTSIZES with CL_TBL_SIZE fixes the issue.
We also changed


980 void minMBuf(int dataPool, int *ret)
981 {
982 int i;
983 double lowest = 1.0, comp;
984 985 i = 0;
986 dataPool = dataPool?1:0;
987 while (clustinfo[dataPool][i][0] != 0)


into

987 while (i < CL_TBL_SIZE && clustinfo[dataPool][i][0] != 0)


Thanks, Kay



Replies:
Re: iocStats Ralph Lange
References:
vxStats memory corruption Kasemir, Kay

Navigate by Date:
Prev: Re: linking to shared objects user libraries J. Lewis Muir
Next: Re: linking to shared objects user libraries J. Lewis Muir
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  <20102011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: vxStats memory corruption Kasemir, Kay
Next: Re: iocStats Ralph Lange
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  <20102011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 02 Sep 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·