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  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 
<== Date ==> <== Thread ==>

Subject: Re: Sequencer seem to skip states with EPICS 3.16.1
From: Simon Reiter <Simon.P.Reiter@physik.uni-giessen.de>
To: tech-talk@aps.anl.gov
Date: Thu, 1 Feb 2018 13:00:11 +0100
If doing the above seems like too much work, I want to see what happens
if you replace the internals of your SET_PV macro with a simple printf()
of the state values, because currently you are monitoring the state
machine at the end of a long pipeline:

   SNL CA client → RSRV → dbAccess → record → dbEvent → RSRV → CA client

Calling printf() inside the SNL program would bypass that pipeline and
should prove whether the Sequencer is actually skipping states. Once we
know the answer to that we can decide if we need to investigate further
to explain the results you are seeing by monitoring it over CA.

Since there is a logging implemented, I see that the state are not actually skipped. It is just related to the PV. But a separate initial program is subscribed to that PV and
can not react, when the PV does not change.

src/libCom/test
src/ioc/db/test
src/std/rec/test
Here are my observations: (all other tests passed):
src/libCom/test/cvtFastPerform produces only a hugh load, but does not seem to work

some calculations are not possible on the powerpc, I guess.

src/libCom/test/epicsSpinTest
1..2
ok  1 # SKIP verifyTryLock() only for SMP systems
# spinThread 0 starting
# spinThread 1 starting
# spinThread 2 starting
# spinThread 0 exiting
# spinThread 1 exiting
# spinThread 2 exiting
ok  2 - Loops run = 1500 (expecting 1500)
# lock()*1/unlock()*1 takes 0.812376 microseconds

    Results
    =======
       Tests: 2
      Passed:   2 = 100.00%
     Skipped:   1 = 50.00%

src/libCom/test/epicsStackTraceTest
1..5
ok  1 - epicsStackTraceGetFeatures() obtains features
# calling a few nested routines and eventually dump a stack trace
# now scan the result for what we expect
# found 1 x epicsStackTrace

# found 0 x epicsStackTraceRecurseGbl

# found 0 x epicsStackTraceRecurseLcl

ok  2 - dumping symbol from library
not ok  3 - dumping global symbols
not ok  4 - dumping local symbols
not ok  5 - dumping addresses
# Dumping a stack trace of thread '_main_':
# [0xb7f69c38]: /opt/epics/lib/libCom.so(epicsStackTrace+0xa0)
#

    Results
    =======
       Tests: 5
      Passed:   2 = 40.00%
      Failed:   3 = 60.00%

src/libCom/test/epicsStdlibTest
1..199
ok  1 - Long '' => noConversion
ok  2 - ULong '' => noConversion
ok  3 - LLong '' => noConversion
ok  4 - ULLong '' => noConversion
ok  5 - Float '' => noConversion
ok  6 - Double '' => noConversion
ok  7 - Long '\t 1\n' => noConversion
ok  8 - ULong '\t 1\n' => noConversion
ok  9 - LLong '\t 1\n' => noConversion
ok 10 - ULLong '\t 1\n' => noConversion
ok 11 - Float '\t 1\n' => noConversion
ok 12 - Double '\t 1\n' => noConversion
ok 13 - Long '!' => noConversion
ok 14 - ULong '!' => noConversion
ok 15 - LLong '!' => noConversion
ok 16 - ULLong '!' => noConversion
ok 17 - Float '!' => noConversion
ok 18 - Double '!' => noConversion
ok 19 - Long '0'
ok 20 - ULong '0'
ok 21 - LLong '0'
ok 22 - ULLong '0'
ok 23 - Float '0'
ok 24 - Double '0'
ok 25 - Long '\t 1\n'
ok 26 - ULong '\t 1\n'
ok 27 - LLong '\t 1\n'
ok 28 - ULLong '\t 1\n'
ok 29 - Float '\t 1\n'
ok 30 - Double '\t 1\n'
ok 31 - Long '-1'
ok 32 - ULong '-1'
ok 33 - LLong '-1'
ok 34 - ULLong '-1'
ok 35 - Float '-1'
ok 36 - Double '-1'
ok 37 - Long '2!' => extraneous
ok 38 - ULong '2!' => extraneous
ok 39 - LLong '2!' => extraneous
ok 40 - ULLong '2!' => extraneous
ok 41 - Float '2!' => extraneous
ok 42 - Double '2!' => extraneous
ok 43 - Long '3 \n\t!' => extraneous
ok 44 - ULong '3 \n\t!' => extraneous
ok 45 - LLong '3 \n\t!' => extraneous
ok 46 - ULLong '3 \n\t!' => extraneous
ok 47 - Float '3 \n\t!' => extraneous
ok 48 - Double '3 \n\t!' => extraneous
ok 49 - Long '2!' => units='!'
ok 50 - ULong '2!' => units='!'
ok 51 - LLong '2!' => units='!'
ok 52 - ULLong '2!' => units='!'
ok 53 - Float '2!' => units='!'
ok 54 - Double '2!' => units='!'
ok 55 - Long '3 \n\t!' => units='!'
ok 56 - ULong '3 \n\t!' => units='!'
ok 57 - LLong '3 \n\t!' => units='!'
ok 58 - ULLong '3 \n\t!' => units='!'
ok 59 - Float '3 \n\t!' => units='!'
ok 60 - Double '3 \n\t!' => units='!'
ok 61 - Long '0x0'
ok 62 - ULong '0x0'
ok 63 - LLong '0x0'
ok 64 - ULLong '0x0'
ok 65 - Float '0x0'
ok 66 - Double '0x0'
ok 67 - Long '0x1'
ok 68 - ULong '0x1'
ok 69 - LLong '0x1'
ok 70 - ULLong '0x1'
ok 71 - Float '0x1'
ok 72 - Double '0x1'
ok 73 - Long '+0x1'
ok 74 - ULong '+0x1'
ok 75 - LLong '+0x1'
ok 76 - ULLong '+0x1'
ok 77 - Float '+0x1'
ok 78 - Double '+0x1'
ok 79 - Long '-0x1'
ok 80 - ULong '-0x1'
ok 81 - LLong '-0x1'
ok 82 - ULLong '-0x1'
ok 83 - Float '-0x1'
ok 84 - Double '-0x1'
ok 85 - Long '0xf'
ok 86 - ULong '0xf'
ok 87 - LLong '0xf'
ok 88 - ULLong '0xf'
ok 89 - Float '0xf'
ok 90 - Double '0xf'
ok 91 - Long '0XF'
ok 92 - ULong '0XF'
ok 93 - LLong '0XF'
ok 94 - ULLong '0XF'
ok 95 - Float '0XF'
ok 96 - Double '0XF'
ok 97 - Long '0x0' in base 10 => extraneous
ok 98 - ULong '0x0' in base 10 => extraneous
ok 99 - LLong '0x0' in base 10 => extraneous
ok 100 - ULLong '0x0' in base 10 => extraneous
ok 101 - Long '0x10' in base 0
ok 102 - ULong '0x10' in base 0
ok 103 - Long '0x10' in base 16
ok 104 - ULong '0x10' in base 16
ok 105 - Long '10' in base 16
ok 106 - ULong '10' in base 16
ok 107 - Long '0x7fffffff'
ok 108 - ULong '0xffffffff'
ok 109 - LLong '0x7fffffffffffffff'
ok 110 - ULLong '0xffffffffffffffff'
ok 111 - Float '0xffffff'
ok 112 - Double '0xffffffff'
ok 113 - Long '-0x7fffffff'
ok 114 - ULong '-0x7fffffff'
ok 115 - LLong '-0x7fffffffffffffff'
ok 116 - ULLong '-0x7fffffffffffffff'
ok 117 - Float '-0xffffff'
ok 118 - Double '-0x7fffffff'
ok 119 - Int8 '0x7f'
ok 120 - Int8 '-0x80'
ok 121 - UInt8 '0xff'
ok 122 - UInt8 '-1'
ok 123 - Int8 '0x80' => overflow
ok 124 - Int8 '-0x81' => overflow
ok 125 - UInt8 '0x100' => overflow
ok 126 - UInt8 '-0x100' => overflow
ok 127 - Int16 '0x7fff'
ok 128 - Int16 '-0x8000'
ok 129 - UInt16 '0xffff'
ok 130 - UInt16 '-1'
ok 131 - Int16 '0x8000' => overflow
ok 132 - Int16 '-0x8001' => overflow
ok 133 - UInt16 '0x10000' => overflow
ok 134 - UInt16 '-0x10000' => overflow
ok 135 - Int32 '0x7fffffff'
ok 136 - Int32 '-0x80000000'
ok 137 - UInt32 '0xffffffff'
ok 138 - UInt32 '-1'
ok 139 - Int32 '0x80000000' => overflow
ok 140 - Int32 '-0x80000001' => overflow
ok 141 - UInt32 '0x100000000' => overflow
ok 142 - UInt32 '-0x100000000' => overflow
ok 143 - Int64 '0x7fffffffffffffff'
ok 144 - Int64 '-0x8000000000000000'
ok 145 - UInt64 '0xffffffffffffffff'
ok 146 - UInt64 '-1'
ok 147 - Int64 '0x8000000000000000' => overflow
ok 148 - Int64 '-0x8000000000000001' => overflow
ok 149 - UInt64 '0x10000000000000000' => overflow
ok 150 - UInt64 '-0x10000000000000000' => overflow
ok 151 - Float '.1'
ok 152 - Double '.1'
ok 153 - Float '0.1'
ok 154 - Double '0.1'
ok 155 - Float '1e-1'
ok 156 - Double '1e-1'
ok 157 - Float '-.1'
ok 158 - Double '-.1'
ok 159 - Float '-0.1'
ok 160 - Double '-0.1'
ok 161 - Float '-1e-1'
ok 162 - Double '-1e-1'
ok 163 - Float '1e-30'
ok 164 - Double '1e-300'
ok 165 - Float '1e-40' => underflow
ok 166 - Double '1e-330' => underflow
ok 167 - Float '1e30'
ok 168 - Double '1e300'
ok 169 - Float '1e40' => overflow
ok 170 - Double '1e330' => overflow
ok 171 - Long '2147483647'
ok 172 - Long '-2147483647'
ok 173 - ULong '4294967295'
ok 174 - Float '16777214'
ok 175 - Float '16777215'
ok 176 - Float '-16777215'
ok 177 - Float '-16777216'
ok 178 - Double '4294967294'
ok 179 - Double '4294967295'
ok 180 - Double '-4294967295'
ok 181 - Double '-4294967296'
ok 182 - Float 'NAN'
ok 183 - Double 'NAN'
ok 184 - Float 'Nan'
ok 185 - Double 'Nan'
not ok 186 - Float 'nan()'
not ok 187 - Double 'nan()'
ok 188 - Float 'INF'
ok 189 - Double 'INF'
ok 190 - Float 'Infinity'
ok 191 - Double 'Infinity'
ok 192 - Float '+INF'
ok 193 - Double '+INF'
ok 194 - Float '+Infinity'
ok 195 - Double '+Infinity'
ok 196 - Float '-INF'
ok 197 - Double '-INF'
ok 198 - Float '-Infinity'
ok 199 - Double '-Infinity'
# This target defines epicsStrtod as strtod

    Results
    =======
       Tests: 199
      Passed: 197 = 98.99%
      Failed:   2 =  1.01%

src/libCom/test/epicsUnitTestTest
1..11
ok  1 - testOk(1)
not ok  2 - testOk(0)
ok  3 - testPass()
not ok  4 - testFail()
ok  5 # SKIP Skipping two
ok  6 # SKIP Skipping two
ok  7 - Todo pass # TODO Testing Todo
not ok  8 - Todo fail # TODO Testing Todo
ok  9 # SKIP Todo skip
ok 10 - testOk1_success
not ok 11 - testOk1_failure
# Diagnostic

    Results
    =======
       Tests: 11
      Passed:   8 = 72.73%
 Todo Passes:   1 =  9.09%
      Failed:   3 = 27.27%
     Skipped:   3 = 27.27%

In src/ioc/db/test only dbStressTest fails:
1..95
# lock set stress test
############################################################################
## EPICS R3.16.1
## EPICS Base built Jan 31 2018
############################################################################
# Running with 5 workers and 40 records
# worker 0 is 0x1003c310
# All started.  Will run for 18.000000 sec
# Stopping
# worker 1 is 0x1003cd08
# worker 2 is 0x1003ce68
# worker 3 is 0x1003c5a0
# worker 4 is 0x1003d0b8
# All stopped
# Validate lockSet ref counts
ok  1 - rec01 only lockRecords hold refs. 38 == 38
ok  2 - ls->ownerlocker==NULL
ok  3 - rec02 only lockRecords hold refs. 38 == 38
ok  4 - ls->ownerlocker==NULL
ok  5 - rec03 only lockRecords hold refs. 38 == 38
ok  6 - ls->ownerlocker==NULL
ok  7 - rec04 only lockRecords hold refs. 38 == 38
ok  8 - ls->ownerlocker==NULL
ok  9 - rec05 only lockRecords hold refs. 38 == 38
ok 10 - ls->ownerlocker==NULL
ok 11 - rec06 only lockRecords hold refs. 1 == 1
ok 12 - ls->ownerlocker==NULL
ok 13 - rec07 only lockRecords hold refs. 38 == 38
ok 14 - ls->ownerlocker==NULL
ok 15 - rec08 only lockRecords hold refs. 38 == 38
ok 16 - ls->ownerlocker==NULL
ok 17 - rec09 only lockRecords hold refs. 38 == 38
ok 18 - ls->ownerlocker==NULL
ok 19 - rec10 only lockRecords hold refs. 38 == 38
ok 20 - ls->ownerlocker==NULL
ok 21 - rec11 only lockRecords hold refs. 38 == 38
ok 22 - ls->ownerlocker==NULL
ok 23 - rec12 only lockRecords hold refs. 38 == 38
ok 24 - ls->ownerlocker==NULL
ok 25 - rec13 only lockRecords hold refs. 38 == 38
ok 26 - ls->ownerlocker==NULL
ok 27 - rec14 only lockRecords hold refs. 38 == 38
ok 28 - ls->ownerlocker==NULL
ok 29 - rec15 only lockRecords hold refs. 38 == 38
ok 30 - ls->ownerlocker==NULL
ok 31 - rec16 only lockRecords hold refs. 38 == 38
ok 32 - ls->ownerlocker==NULL
ok 33 - rec17 only lockRecords hold refs. 38 == 38
ok 34 - ls->ownerlocker==NULL
ok 35 - rec18 only lockRecords hold refs. 38 == 38
ok 36 - ls->ownerlocker==NULL
ok 37 - rec19 only lockRecords hold refs. 38 == 38
ok 38 - ls->ownerlocker==NULL
ok 39 - rec20 only lockRecords hold refs. 38 == 38
ok 40 - ls->ownerlocker==NULL
ok 41 - rec21 only lockRecords hold refs. 38 == 38
ok 42 - ls->ownerlocker==NULL
ok 43 - rec22 only lockRecords hold refs. 38 == 38
ok 44 - ls->ownerlocker==NULL
ok 45 - rec23 only lockRecords hold refs. 38 == 38
ok 46 - ls->ownerlocker==NULL
ok 47 - rec24 only lockRecords hold refs. 38 == 38
ok 48 - ls->ownerlocker==NULL
ok 49 - rec25 only lockRecords hold refs. 38 == 38
ok 50 - ls->ownerlocker==NULL
ok 51 - rec26 only lockRecords hold refs. 38 == 38
ok 52 - ls->ownerlocker==NULL
ok 53 - rec27 only lockRecords hold refs. 38 == 38
ok 54 - ls->ownerlocker==NULL
ok 55 - rec28 only lockRecords hold refs. 38 == 38
ok 56 - ls->ownerlocker==NULL
ok 57 - rec29 only lockRecords hold refs. 38 == 38
ok 58 - ls->ownerlocker==NULL
ok 59 - rec30 only lockRecords hold refs. 38 == 38
ok 60 - ls->ownerlocker==NULL
ok 61 - rec31 only lockRecords hold refs. 38 == 38
ok 62 - ls->ownerlocker==NULL
ok 63 - rec32 only lockRecords hold refs. 38 == 38
ok 64 - ls->ownerlocker==NULL
ok 65 - rec33 only lockRecords hold refs. 38 == 38
ok 66 - ls->ownerlocker==NULL
ok 67 - rec34 only lockRecords hold refs. 38 == 38
ok 68 - ls->ownerlocker==NULL
ok 69 - rec35 only lockRecords hold refs. 38 == 38
ok 70 - ls->ownerlocker==NULL
ok 71 - rec36 only lockRecords hold refs. 38 == 38
ok 72 - ls->ownerlocker==NULL
ok 73 - rec37 only lockRecords hold refs. 38 == 38
ok 74 - ls->ownerlocker==NULL
ok 75 - rec38 only lockRecords hold refs. 38 == 38
ok 76 - ls->ownerlocker==NULL
ok 77 - rec39 only lockRecords hold refs. 38 == 38
ok 78 - ls->ownerlocker==NULL
ok 79 - rec40 only lockRecords hold refs. 1 == 1
ok 80 - ls->ownerlocker==NULL
# Statistics
# Worker 0
# N = 100442 99890 103835
# X = 987742 984295 1.02229e+06
# X2= 1.30059e+07 1.29665e+07 1.34493e+07
ok 81 - priv[i].N[0]>0
ok 82 - priv[i].N[1]>0
ok 83 - priv[i].N[2]>0
# Worker 1
# N = 0 0 0
# X = 0 0 0
# X2= 0 0 0
not ok 84 - priv[i].N[0]>0
not ok 85 - priv[i].N[1]>0
not ok 86 - priv[i].N[2]>0
# Worker 2
# N = 0 0 0
# X = 0 0 0
# X2= 0 0 0
not ok 87 - priv[i].N[0]>0
not ok 88 - priv[i].N[1]>0
not ok 89 - priv[i].N[2]>0
# Worker 3
# N = 0 0 0
# X = 0 0 0
# X2= 0 0 0
not ok 90 - priv[i].N[0]>0
not ok 91 - priv[i].N[1]>0
not ok 92 - priv[i].N[2]>0
# Worker 4
# N = 0 0 0
# X = 0 0 0
# X2= 0 0 0
not ok 93 - priv[i].N[0]>0
not ok 94 - priv[i].N[1]>0
not ok 95 - priv[i].N[2]>0

    Results
    =======
       Tests: 95
      Passed:  83 = 87.37%
      Failed:  12 = 12.63%
But I also got message like
xRecord.db ..../xRecord.db: line 1: syntax error: unexpected word (expecting ")")
and
dbStaticTest.db ..../dbStaticTest.db: line 2: syntax error: unexpected word (expecting ")") dbPutGetTest.db ..../dbPutGetTest.db: line 2: syntax error: unexpected word (expecting ")") dbCaLinkTest1.db ..../dbCaLinkTest1.db: line 1: syntax error: unexpected word (expecting ")")
I copied all db and dbd files. Are there more files, I need to copy?


All tests of src/std/rec/test worked 100%.

Sorry for such a long message, I hope, this helps at least a bit.

Best,
Simon

Replies:
Re: Sequencer seem to skip states with EPICS 3.16.1 Simon Reiter
References:
Sequencer seem to skip states with EPICS 3.16.1 Simon Reiter
Re: Sequencer seem to skip states with EPICS 3.16.1 Simon Reiter
Re: Sequencer seem to skip states with EPICS 3.16.1 Ralph Lange
Re: Sequencer seem to skip states with EPICS 3.16.1 Simon Reiter
Re: Sequencer seem to skip states with EPICS 3.16.1 Ralph Lange
Re: Sequencer seem to skip states with EPICS 3.16.1 Simon Reiter
Re: Sequencer seem to skip states with EPICS 3.16.1 Benjamin Franksen
Re: Sequencer seem to skip states with EPICS 3.16.1 Simon Reiter
Re: Sequencer seem to skip states with EPICS 3.16.1 Benjamin Franksen
Re: Sequencer seem to skip states with EPICS 3.16.1 Simon Reiter
Re: Sequencer seem to skip states with EPICS 3.16.1 Andrew Johnson
Re: Sequencer seem to skip states with EPICS 3.16.1 Simon Reiter
Re: Sequencer seem to skip states with EPICS 3.16.1 Simon Reiter
Re: Sequencer seem to skip states with EPICS 3.16.1 Andrew Johnson

Navigate by Date:
Prev: RE: Seq-2.2.5 compilation on windows freddie.akeroyd
Next: Segmentation fault when setting motorStatusProblem_ to 1 Sobhani, Bayan
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 
Navigate by Thread:
Prev: Re: Sequencer seem to skip states with EPICS 3.16.1 Andrew Johnson
Next: Re: Sequencer seem to skip states with EPICS 3.16.1 Simon Reiter
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 
ANJ, 07 Feb 2018 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·