EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  <2024 Index 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  <2024
<== Date ==> <== Thread ==>

Subject: RE: startPVAServer prevents windows-x64 IOC from exiting
From: Mark Rivers via Core-talk <core-talk at aps.anl.gov>
To: 'Michael Davidsaver' <mdavidsaver at gmail.com>
Cc: "core-talk at aps.anl.gov" <core-talk at aps.anl.gov>
Date: Wed, 13 Mar 2024 13:19:51 +0000

Hi Michael,

 

Thanks for the suggestion. 

 

Here is the output when I run with the atExitDebug variable set on windows-x64-static.  It exits normally.

 

J:\epics\devel\example\iocBoot\iocexample>..\..\bin\windows-x64-static\example.exe st.cmd

#!../../bin/windows-x64/example

#< envPaths

## Register all support components

dbLoadDatabase "../../dbd/example.dbd"

example_registerRecordDeviceDriver(pdbbase)

## Load record instances

#dbLoadRecords("../../db/example.db","user=epics")

var atExitDebug 1

startPVAServer

iocInit()

Starting iocInit

############################################################################

## EPICS R7.0.8

## Rev.

## Rev. Date :

############################################################################

iocRun: All initialization complete

## Start any sequence programs

#seq sncexample,"user=epics"

epics>

epics> exit

atExit exitDatabase(0000000000000000)

atExit errlogExitHandler(000002B83242E040)

atExit twdShutdown(0000000000000000)

atExit syncShutdown(0000000000000000)

atExit decShutdown(0000000000000000)

atExit dbndShutdown(0000000000000000)

atExit arrShutdown(0000000000000000)

 

J:\epics\devel\example\iocBoot\iocexample>

 

Here is the output when I run with the atExistDebug variable set on windows-x64.  It prints the same atExit messages but then hangs.  Does this mean it is handing in arrShutdown, or later on?

 

J:\epics\devel\example\iocBoot\iocexample>..\..\bin\windows-x64\example.exe st.cmd

#!../../bin/windows-x64/example

#< envPaths

## Register all support components

dbLoadDatabase "../../dbd/example.dbd"

example_registerRecordDeviceDriver(pdbbase)

## Load record instances

#dbLoadRecords("../../db/example.db","user=epics")

var atExitDebug 1

startPVAServer

iocInit()

Starting iocInit

############################################################################

## EPICS R7.0.8

## Rev.

## Rev. Date :

############################################################################

iocRun: All initialization complete

## Start any sequence programs

#seq sncexample,"user=epics"

epics> exit

atExit exitDatabase(0000000000000000)

atExit errlogExitHandler(0000020FE7181060)

atExit twdShutdown(0000000000000000)

atExit syncShutdown(0000000000000000)

atExit decShutdown(0000000000000000)

atExit dbndShutdown(0000000000000000)

atExit arrShutdown(0000000000000000)

 

I had to kill the process with the Windows Task Manager at this point.

 

I just found something interesting.  If I comment out the startPVAServer line it does not hang (which I already knew), but there is now a new atExit handler called first, @pva_server_cleanup.

 

J:\epics\devel\example\iocBoot\iocexample>..\..\bin\windows-x64\example.exe st.cmd

#!../../bin/windows-x64/example

#< envPaths

## Register all support components

dbLoadDatabase "../../dbd/example.dbd"

example_registerRecordDeviceDriver(pdbbase)

## Load record instances

#dbLoadRecords("../../db/example.db","user=epics")

var atExitDebug 1

#startPVAServer

iocInit()

Starting iocInit

############################################################################

## EPICS R7.0.8

## Rev.

## Rev. Date :

############################################################################

iocRun: All initialization complete

## Start any sequence programs

#seq sncexample,"user=epics"

epics> exit

atExit &pva_server_cleanup(0000000000000000)

atExit exitDatabase(0000000000000000)

atExit twdShutdown(0000000000000000)

atExit errlogExitHandler(0000019F55DD8340)

atExit syncShutdown(0000000000000000)

atExit decShutdown(0000000000000000)

atExit dbndShutdown(0000000000000000)

atExit arrShutdown(0000000000000000)

 

J:\epics\devel\example\iocBoot\iocexample>

 

If I type the iocsh command stopPVAServer before typing exit then it works fine.

 

J:\epics\devel\example\iocBoot\iocexample>..\..\bin\windows-x64\example.exe st.cmd

#!../../bin/windows-x64/example

#< envPaths

## Register all support components

dbLoadDatabase "../../dbd/example.dbd"

example_registerRecordDeviceDriver(pdbbase)

## Load record instances

#dbLoadRecords("../../db/example.db","user=epics")

var atExitDebug 1

startPVAServer

iocInit()

Starting iocInit

############################################################################

## EPICS R7.0.8

## Rev.

## Rev. Date :

############################################################################

iocRun: All initialization complete

## Start any sequence programs

#seq sncexample,"user=epics"

epics> stopPVAServer

epics> exit

atExit exitDatabase(0000000000000000)

atExit errlogExitHandler(00000259BB9AEA70)

atExit twdShutdown(0000000000000000)

atExit syncShutdown(0000000000000000)

atExit decShutdown(0000000000000000)

atExit dbndShutdown(0000000000000000)

atExit arrShutdown(0000000000000000)

 

J:\epics\devel\example\iocBoot\iocexample>

 

It looks to me like the PVA server is not stopping as part of the IOC shutdown on windows-x64 unless it is done manually at the command line first.

 

Thanks,

Mark

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-----Original Message-----
From: Michael Davidsaver <mdavidsaver at gmail.com>
Sent: Wednesday, March 13, 2024 6:10 AM
To: Mark Rivers <rivers at cars.uchicago.edu>
Cc: core-talk at aps.anl.gov
Subject: Re: startPVAServer prevents windows-x64 IOC from exiting

 

Hi Mark,

 

My first suspicion is that an epicsAtExit() handler is hanging, although I can't explain why this would differ between static to dynamic linking.

 

Setting the atExitDebug IOC shell variable will print each handler name as it is executed.

 

> epics> var atExitDebug 1

> epics> exit

> atExit exitDatabase((nil))

> atExit twdShutdown((nil))

> atExit errlogExitHandler(0x558c4d454fb0) atExit rlExit((nil)) atExit

> syncShutdown((nil)) atExit decShutdown((nil)) atExit

> dbndShutdown((nil)) atExit arrShutdown((nil)) atExit

> ClockTime_Shutdown((nil))

 

 

On 3/12/24 15:08, Mark Rivers via Core-talk wrote:

> I previously sent this message to both tech-talk and core-talk.  Neither Andrew Johnson nor I received it.  I know that some people who are subscribed to tech-talk did receive it.  It looks like perhaps people who are subscribed to both lists do not receive the message at all?

>

> I the future I will only send to one list or the other, since Andrew points out that core-talk is a subset of tech-talk.

>

> *From:*Mark Rivers

> *Sent:* Tuesday, March 12, 2024 3:54 PM

> *To:* tech-talk at aps.anl.gov; core-talk at aps.anl.gov

> *Subject:* startPVAServer prevents windows-x64 IOC from exiting

>

> Folks,

>

> I have found a serious problem with using the PVA server on Windows IOCs that are dynamically built.  The IOC runs fine, but cannot be exited either with the “exit” command or with ^C.  It can only be killed with the Windows Task Manager.  The problem occurs on the following:

>

>   * EPICS_HOST_ARCH: window-x64, windows-x64-debug.  Does not occur on windows-x64-static.

>   * EPICS BASE: 7.0.7 and 7.0.8.  Did not test other versions.

>   * Test application: makeBaseApp.pl from base 7.0.8.  Modified st.cmd to add the line startPVAServer just before iocInit.  Also happens in ADSimDetector with commonPlugins.cmd.

>

> Thanks,

>

> Mark

>

 


Replies:
Re: startPVAServer prevents windows-x64 IOC from exiting Michael Davidsaver via Core-talk
References:
startPVAServer prevents windows-x64 IOC from exiting Mark Rivers via Core-talk
startPVAServer prevents windows-x64 IOC from exiting Mark Rivers via Core-talk
Re: startPVAServer prevents windows-x64 IOC from exiting Michael Davidsaver via Core-talk

Navigate by Date:
Prev: Re: startPVAServer prevents windows-x64 IOC from exiting Michael Davidsaver via Core-talk
Next: Re: startPVAServer prevents windows-x64 IOC from exiting Michael Davidsaver via Core-talk
Index: 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: startPVAServer prevents windows-x64 IOC from exiting Michael Davidsaver via Core-talk
Next: Re: startPVAServer prevents windows-x64 IOC from exiting Michael Davidsaver via Core-talk
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  <2024
ANJ, 13 Mar 2024 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·