Hi Dirk, Thanks for this. It built fine for me with
EPICS 3.14.12.1 and the latest synApps repository, for
solaris and linux-x86_64, after one fix:
in StreamDevice-2-5/streamApp/Makefile, I had to
change
streamApp_DBD += calc.dbd
to
streamApp_DBD += calcSupport.dbd
calc.db no longer exists, and you would not have wanted
to use it anyway, because it included base.dbd.
Also, I think StreamDevice-2-5 is not ready for parallel make.
Here a context diff of StreamDevice-2-5/Makefile:
diff -c StreamDevice-2-5/Makefile streamDevice
*** StreamDevice-2-5/Makefile Thu Sep 2 09:19:11 2010
--- streamDevice/Makefile Wed Apr 27 15:53:43 2011
***************
*** 1,6 ****
--- 1,7 ----
TOP = ..
DIRS = src
+ streamApp_DEPEND_DIRS = src
# Look if we have EPICS R3.13 or R3.14
ifeq ($(wildcard $(TOP)/configure),)
***************
*** 13,18 ****
--- 14,21 ----
ifneq ($(words $(CALC) $(SYNAPPS)), 0)
# with synApps calc module (contains scalcout)
DIRS += srcSynApps
+ srcSynApps_DEPEND_DIRS = src
+ streamApp_DEPEND_DIRS += srcSynApps
endif
endif
----- Original Message -----
From: "Dirk Zimoch" <[email protected]>
To: "EPICS Tech Talk" <[email protected]>
Sent: Wednesday, September 14, 2011 8:00:53 AM
Subject: Re: Bugs in StreamDevice 2
Hi all,
I have put the new version 2.5 on our web site
http://epics.web.psi.ch/software/streamdevice/
This version fixes the bugs Ralph had found (and some more similar
problems with 64 bit machines). However it still shows different
behavior on 64 bit machine when negative DBF_LONG values (e.g.
ao.RVAL)
are printed with unsigned int formats like %x. The values are then
sign
extended to 64 bits. Is this a bug?
It also fixes a bug which can hang up a record in PACT=1 state. Dehong
had reported such a problem.
I have tested this version against asyn 4-8, 4-16 and 4-17 and base
3.13.10, 3.14.8 and 3.14.12 on vxWorks and Linux.
There are some new features compared to version 2.4:
* in "%?..."; with any format converter returns 0/0.0/"" when the
input
does not match.
* in "%=..."; with any format allows matching variable values. It does
an _output_ conversion and then matches input against the resulting
string.
* "%{...}" now allows value assignment when used with # flag:
"%#{string1=3|string2=-2|string4=0}"
* exec command can have formats:
exec "dbpr %(NAME)s,%i > %(NAME)s.txt";
* redirection %(record)... is equivalent to %(record.VAL)...
* in "\_"; matches any amount of whitespace (incl. none)
* in "%#..."; allows spaces inside strings (%#s) and between sign and
number in inputs (%#f %#d %#i ...)
* in "%-o %-x"; allows reading signed octal or hex values.
* "%T(format)" converts from and to timestamps. Seconds past 1970 or
EPICS time stamps when redirected to TIME filed: %(TIME)T(format)
Please test and report bugs.
Dirk
Ralph Lange wrote:
Hi Dirk,
I discovered two bugs in current StreamDevice.
1. (trivial): StreamBuffer uses the wrong operator delete for
arrays.
2. (major): On 64bit archs, the waveform device support corrupts IOC
memory when the record's FTVL is LONG or ULONG, leading to IOC
crashes
(segfaults).
Patches are enclosed, the IOC is running happily ever after.
Cheers,
~Ralph