> The problem is
> T * volatile * buffer;
> in epicsRingPointer.h.
> I am not sure if "volatile" really makes any sense here.I strongly suggest NOT removing the volatile keyword.
In October 2008 we struggled with a very nasty bug in epicsRingPointer.h. The symptoms were:
- Only failed on multi-processor systems
- Only failed with recent versions of gcc with optimization enabled
- Only failed 1 in 100,000 times
Eric Norum fixed the problem. The changes included the following (comparison of epicsRingPointer.h from base 3.14.8.2 and 3.14.12.4)
-private: // Data
- int nextPush;
- int nextPop;
+private: /* Data */
+ volatile int nextPush;
+ volatile int nextPop;
int size;
- T **buffer;
+ T * volatile * buffer;
};
So he added that volatile keyword, and it would need a lot of testing to prove it is not needed.
Mark
-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Dirk Zimoch
Sent: Wednesday, July 16, 2014 7:00 AM
To: [email protected]
Subject: Re: EPICS on VxWorks6.9
Newer C++ compilers consider more and more things in EPICS errors. And
maybe they are right.
The problem is
T * volatile * buffer;
in epicsRingPointer.h.
I am not sure if "volatile" really makes any sense here.
The other possibility is to cast away the "void" in the destructor.
delete [ ] (T*) buffer;
Or whatever the nicer C++ syntax is (probably using const_cast<T*>()?)
Dirk
On 16.07.2014 08:14, Amit Chauhan wrote:
> Hi,
>
> We are trying to put EPICS on VxWorks.
>
> Various information related to our setup are:
>
> EPICS base version : 3.14.12.4
>
> VxWorks Version : 6.9
>
> Workbench version : 3.3
>
> Host Architecture : win32 on x86
>
> Target Architecture: ppc-32
>
> Target Board : MVME-5500 with PowerPC 7447 processor
>
> On running the 'make' command, the EPICS build stops after a while with
> an error.
>
> *_Following is the output of the make command:_*
>
> make -C ./configure install
>
> make[1]: Entering directory `C:/EPICS/base-3-14-12-4/configure'
>
> perl ../src/tools/makeMakefile.pl O.win32-x86 ../..
>
> perl ../src/tools/makeMakefile.pl O.vxWorks-ppc32 ../..
>
> perl -MExtUtils::Command -e mkpath O.Common
>
> make -C O.win32-x86 -f ../Makefile TOP=../.. T_A=win32-x86 install
>
> make[2]: Entering directory `C:/EPICS/base-3-14-12-4/configure/O.win32-x86'
>
> make[2]: Nothing to be done for `install'.
>
> make[2]: Leaving directory `C:/EPICS/base-3-14-12-4/configure/O.win32-x86'
>
> make -C O.vxWorks-ppc32 -f ../Makefile TOP=../.. T_A=vxWorks-ppc32 install
>
> make[2]: Entering directory
> `C:/EPICS/base-3-14-12-4/configure/O.vxWorks-ppc32'
>
> make[2]: Nothing to be done for `install'.
>
> make[2]: Leaving directory
> `C:/EPICS/base-3-14-12-4/configure/O.vxWorks-ppc32'
>
> make[1]: Leaving directory `C:/EPICS/base-3-14-12-4/configure'
>
> make -C ./src install
>
> make[1]: Entering directory `C:/EPICS/base-3-14-12-4/src'
>
> make -C ./tools install
>
> make[2]: Entering directory `C:/EPICS/base-3-14-12-4/src/tools'
>
> perl ../../src/tools/makeMakefile.pl O.win32-x86 ../../..
>
> perl ../../src/tools/makeMakefile.pl O.vxWorks-ppc32 ../../..
>
> perl -MExtUtils::Command -e mkpath O.Common
>
> make -C O.win32-x86 -f ../Makefile TOP=../../.. T_A=win32-x86 install
>
> make[3]: Entering directory `C:/EPICS/base-3-14-12-4/src/tools/O.win32-x86'
>
> make[3]: Nothing to be done for `install'.
>
> make[3]: Leaving directory `C:/EPICS/base-3-14-12-4/src/tools/O.win32-x86'
>
> make -C O.vxWorks-ppc32 -f ../Makefile TOP=../../.. T_A=vxWorks-ppc32
> install
>
> make[3]: Entering directory
> `C:/EPICS/base-3-14-12-4/src/tools/O.vxWorks-ppc32'
>
> make[3]: Nothing to be done for `install'.
>
> make[3]: Leaving directory
> `C:/EPICS/base-3-14-12-4/src/tools/O.vxWorks-ppc32'
>
> make[2]: Leaving directory `C:/EPICS/base-3-14-12-4/src/tools'
>
> make -C ./makeBaseApp install
>
> make[2]: Entering directory `C:/EPICS/base-3-14-12-4/src/makeBaseApp'
>
> perl C:\EPICS\base-3-14-12-4/bin/win32-x86/makeMakefile.pl O.win32-x86
> ../../..
>
> perl C:\EPICS\base-3-14-12-4/bin/win32-x86/makeMakefile.pl
> O.vxWorks-ppc32 ../../..
>
> perl -MExtUtils::Command -e mkpath O.Common
>
> make -C O.win32-x86 -f ../Makefile TOP=../../.. T_A=win32-x86 install
>
> make[3]: Entering directory
> `C:/EPICS/base-3-14-12-4/src/makeBaseApp/O.win32-x86'
>
> make[3]: Nothing to be done for `install'.
>
> make[3]: Leaving directory
> `C:/EPICS/base-3-14-12-4/src/makeBaseApp/O.win32-x86'
>
> make -C O.vxWorks-ppc32 -f ../Makefile TOP=../../.. T_A=vxWorks-ppc32
> install
>
> make[3]: Entering directory
> `C:/EPICS/base-3-14-12-4/src/makeBaseApp/O.vxWorks-ppc32'
>
> make[3]: Nothing to be done for `install'.
>
> make[3]: Leaving directory
> `C:/EPICS/base-3-14-12-4/src/makeBaseApp/O.vxWorks-ppc32'
>
> make[2]: Leaving directory `C:/EPICS/base-3-14-12-4/src/makeBaseApp'
>
> make -C ./makeBaseExt install
>
> make[2]: Entering directory `C:/EPICS/base-3-14-12-4/src/makeBaseExt'
>
> perl C:\EPICS\base-3-14-12-4/bin/win32-x86/makeMakefile.pl O.win32-x86
> ../../..
>
> perl C:\EPICS\base-3-14-12-4/bin/win32-x86/makeMakefile.pl
> O.vxWorks-ppc32 ../../..
>
> perl -MExtUtils::Command -e mkpath O.Common
>
> make -C O.win32-x86 -f ../Makefile TOP=../../.. T_A=win32-x86 install
>
> make[3]: Entering directory
> `C:/EPICS/base-3-14-12-4/src/makeBaseExt/O.win32-x86'
>
> make[3]: Nothing to be done for `install'.
>
> make[3]: Leaving directory
> `C:/EPICS/base-3-14-12-4/src/makeBaseExt/O.win32-x86'
>
> make -C O.vxWorks-ppc32 -f ../Makefile TOP=../../.. T_A=vxWorks-ppc32
> install
>
> make[3]: Entering directory
> `C:/EPICS/base-3-14-12-4/src/makeBaseExt/O.vxWorks-ppc32'
>
> make[3]: Nothing to be done for `install'.
>
> make[3]: Leaving directory
> `C:/EPICS/base-3-14-12-4/src/makeBaseExt/O.vxWorks-ppc32'
>
> make[2]: Leaving directory `C:/EPICS/base-3-14-12-4/src/makeBaseExt'
>
> make -C ./libCom install
>
> make[2]: Entering directory `C:/EPICS/base-3-14-12-4/src/libCom'
>
> perl C:\EPICS\base-3-14-12-4/bin/win32-x86/makeMakefile.pl O.win32-x86
> ../../..
>
> perl C:\EPICS\base-3-14-12-4/bin/win32-x86/makeMakefile.pl
> O.vxWorks-ppc32 ../../..
>
> perl -MExtUtils::Command -e mkpath O.Common
>
> make -C O.win32-x86 -f ../Makefile TOP=../../.. T_A=win32-x86 install
>
> make[3]: Entering directory `C:/EPICS/base-3-14-12-4/src/libCom/O.win32-x86'
>
> perl ../../../src/libCom/misc/makeEpicsVersion.pl
> ../../../configure/CONFIG_BASE_VERSION ../O.Common
>
> Building epicsVersion.h from ../../../configure/CONFIG_BASE_VERSION
>
> Found EPICS Version 3.14.12.4
>
> "Installing generated generic include file
> C:\EPICS\base-3-14-12-4/include/epicsVersion.h"
>
> rc -l 0x409 -I. -I../O.Common -I. -I../../../src/libCom/osi/os/WIN32
> -I../../../src/libCom/osi/os/default -I..
> -I../../../src/libCom/bucketLib -I../../../src/libCom/ring
> -I../../../src/libCom/calc -I../../../src/libCom/cvtFast
> -I../../../src/libCom/cppStd -I../../../src/libCom/cxxTemplates
> -I../../../src/libCom/dbmf -I../../../src/libCom/ellLib
> -I../../../src/libCom/env -I../../../src/libCom/error
> -I../../../src/libCom/fdmgr -I../../../src/libCom/freeList
> -I../../../src/libCom/gpHash -I../../../src/libCom/iocsh
> -I../../../src/libCom/logClient -I../../../src/libCom/macLib
> -I../../../src/libCom/misc -I../../../src/libCom/osi
> -I../../../src/libCom/taskwd -I../../../src/libCom/timer
> -I../../../src/libCom/tsDefs -IC:\EPICS\base-3-14-12-4/include/os/WIN32
> -IC:\EPICS\base-3-14-12-4/include -fo Com.res ../Com.rc
>
> cl -c /nologo /D__STDC__=0 /D_CRT_SECURE_NO_DEPRECATE
> /D_CRT_NONSTDC_NO_DEPRECATE /Ox /GL /W3 /w44355 /MT
> -DEPICS_DLL_NO -I. -I..\\O.Common -I.
> -I..\\..\\..\\src\\libCom\\osi\\os\\WIN32
> -I..\\..\\..\\src\\libCom\\osi\\os\\default -I..
> -I..\\..\\..\\src\\libCom\\bucketLib -I..\\..\\..\\src\\libCom\\ring
> -I..\\..\\..\\src\\libCom\\calc -I..\\..\\..\\src\\libCom\\cvtFast
> -I..\\..\\..\\src\\libCom\\cppStd
> -I..\\..\\..\\src\\libCom\\cxxTemplates -I..\\..\\..\\src\\libCom\\dbmf
> -I..\\..\\..\\src\\libCom\\ellLib -I..\\..\\..\\src\\libCom\\env
> -I..\\..\\..\\src\\libCom\\error -I..\\..\\..\\src\\libCom\\fdmgr
> -I..\\..\\..\\src\\libCom\\freeList -I..\\..\\..\\src\\libCom\\gpHash
> -I..\\..\\..\\src\\libCom\\iocsh -I..\\..\\..\\src\\libCom\\logClient
> -I..\\..\\..\\src\\libCom\\macLib -I..\\..\\..\\src\\libCom\\misc
> -I..\\..\\..\\src\\libCom\\osi -I..\\..\\..\\src\\libCom\\taskwd
> -I..\\..\\..\\src\\libCom\\timer -I..\\..\\..\\src\\libCom\\tsDefs
> -IC:\EPICS\base-3-14-12-4\\include\\os\\WIN32
> -IC:\EPICS\base-3-14-12-4\\include
> ..\\..\\..\\src\\libCom\\bucketLib\\bucketLib.c
>
> bucketLib.c
>
> cl /nologo /EHsc /GR -c /nologo /D__STDC__=0 /D_CRT_SECURE_NO_DEPRECATE
> /D_CRT_NONSTDC_NO_DEPRECATE /Ox /GL /W3 /w44355 /MT
> -DEPICS_DLL_NO /TP -I. -I..\\O.Common -I.
> -I..\\..\\..\\src\\libCom\\osi\\os\\WIN32
> -I..\\..\\..\\src\\libCom\\osi\\os\\default -I..
> -I..\\..\\..\\src\\libCom\\bucketLib -I..\\..\\..\\src\\libCom\\ring
> -I..\\..\\..\\src\\libCom\\calc -I..\\..\\..\\src\\libCom\\cvtFast
> -I..\\..\\..\\src\\libCom\\cppStd
> -I..\\..\\..\\src\\libCom\\cxxTemplates -I..\\..\\..\\src\\libCom\\dbmf
> -I..\\..\\..\\src\\libCom\\ellLib -I..\\..\\..\\src\\libCom\\env
> -I..\\..\\..\\src\\libCom\\error -I..\\..\\..\\src\\libCom\\fdmgr
> -I..\\..\\..\\src\\libCom\\freeList -I..\\..\\..\\src\\libCom\\gpHash
> -I..\\..\\..\\src\\libCom\\iocsh -I..\\..\\..\\src\\libCom\\logClient
> -I..\\..\\..\\src\\libCom\\macLib -I..\\..\\..\\src\\libCom\\misc
> -I..\\..\\..\\src\\libCom\\osi -I..\\..\\..\\src\\libCom\\taskwd
> -I..\\..\\..\\src\\libCom\\timer -I..\\..\\..\\src\\libCom\\tsDefs
> -IC:\EPICS\base-3-14-12-4\\include\\os\\WIN32
> -IC:\EPICS\base-3-14-12-4\\include
> ..\\..\\..\\src\\libCom\\ring\\epicsRingPointer.cpp
>
> epicsRingPointer.cpp
>
> ..\..\..\src\libCom\ring\epicsRingPointer.h(93) : *error C2664: 'delete'
> : cannot convert parameter 1 from 'void *volatile * ' to 'void *'*
>
> * Conversion loses qualifiers*
>
> ..\..\..\src\libCom\ring\epicsRingPointer.cpp(82) : while compiling
> class-template member function '__thiscall
> epicsRingPointer<void>::~epicsRingPointer<void>(void)'
>
> make[3]: Leaving directory `C:/EPICS/base-3-14-12-4/src/libCom/O.win32-x86'
>
> make[2]: Leaving directory `C:/EPICS/base-3-14-12-4/src/libCom'
>
> make[1]: Leaving directory `C:/EPICS/base-3-14-12-4/src'
>
> */The following code is written in epicsRingPointer.h (line 93):/*
>
> inline epicsRingPointer<T>:: ~epicsRingPointer( )
>
> { delete [ ] buffer; }
>
> If anyone can suggest us the solution to overcome this error it will be
> of help to us.
>
> Regards,
>
> Amit Chauhan,
>
> RRCAT, Indore
>
- Replies:
- Re: EPICS on VxWorks6.9 Dirk Zimoch
- References:
- EPICS on VxWorks6.9 Amit Chauhan
- Re: EPICS on VxWorks6.9 Dirk Zimoch
- Navigate by Date:
- Prev:
Re: EPICS on VxWorks6.9 Dirk Zimoch
- Next:
CSS is frozen after starts an external program Chen Xue
- 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
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: EPICS on VxWorks6.9 Dirk Zimoch
- Next:
Re: EPICS on VxWorks6.9 Dirk Zimoch
- 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
2022
2023
2024
|