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  <20202021  2022  2023  2024  Index 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: AW: AW: Problems with hanging osiSockTest
From: Michael Davidsaver via Core-talk <core-talk at aps.anl.gov>
To: "Zimoch Dirk (PSI)" <dirk.zimoch at psi.ch>
Cc: "'core-talk at aps.anl.gov'" <core-talk at aps.anl.gov>
Date: Thu, 19 Nov 2020 10:20:41 -0800
On 11/19/20 2:30 AM, Zimoch Dirk (PSI) wrote:
> The strings " MRIMA-CH-01D1:O" and similar correspond to CA search broadcasts on the net, coming in over the "real" network interface.

Yes, which I know is unexpected for a unittest, which would normally be isolated.
The udpSockFanoutTest() which is causing you problems was added after a regression
as a way ensure that the OS specific epicsSocketEnableAddressUseForDatagramFanout()
functions have the intended effects, and that CA/PVA search will work.

I couldn't think of an isolated way to do this (eg. broadcast over loopback isn't portable).

https://github.com/epics-base/epics-base/commit/416061088567f401cfc3cfe9acbc82c7cbcb173d#diff-e2d4c9066a589e7f761c71e5170648cf32efb6c8f6dcb8b59bf605c00493d917R350


>> -----Ursprüngliche Nachricht-----
>> Von: Core-talk <core-talk-bounces at aps.anl.gov> Im Auftrag von Zimoch Dirk
>> (PSI) via Core-talk
>> Gesendet: Donnerstag, 19. November 2020 11:28
>> An: Michael Davidsaver <mdavidsaver at gmail.com>
>> Cc: EPICS core-talk <core-talk at aps.anl.gov>
>> Betreff: AW: AW: Problems with hanging osiSockTest
>>
>> I have tested the latest 7.0 commit.
>>
>> osiSockTest still hangs on the virbr0 interface:
>>
>> # Interface 192.168.122.255:5064
>> # Not LO
>> # RX1 start
>> # RX2 start
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=6 size=32 dtype=5 dcnt=8 body=MRIMA-CH-01D1:O
>> # RX ignore n=32 cmd=6 size=32 dtype=5 dcnt=8 body=MRIMA-CH-01D1:O
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=6 size=32 dtype=5 dcnt=8 body=MRIDI-BPM-SEC3:
>> # RX ignore n=32 cmd=6 size=32 dtype=5 dcnt=8 body=MRIDI-BPM-SEC3:
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=6 size=32 dtype=5 dcnt=8 body=MRIDI-BPM-SEC12
>> # RX ignore n=32 cmd=6 size=32 dtype=5 dcnt=8 body=MRIDI-BPM-SEC12
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=6 size=32 dtype=5 dcnt=8 body=MRIMA-CV-02SB:O
>> # RX ignore n=32 cmd=6 size=32 dtype=5 dcnt=8 body=MRIMA-CV-02SB:O
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> # RX ignore n=32 cmd=0 size=0 dtype=1 dcnt=13 body=
>> [...]
>>
>>
>>> -----Ursprüngliche Nachricht-----
>>> Von: Michael Davidsaver <mdavidsaver at gmail.com>
>>> Gesendet: Donnerstag, 19. November 2020 00:52
>>> An: Zimoch Dirk (PSI) <dirk.zimoch at psi.ch>
>>> Cc: Johnson, Andrew N. <anj at anl.gov>; EPICS core-talk <core-
>>> talk at aps.anl.gov>
>>> Betreff: Re: AW: Problems with hanging osiSockTest
>>>
>>> On 11/18/20 10:00 AM, Michael Davidsaver wrote:
>>>> Running this test again myself, I realize that osiSockTest
>>>> is not so robust against firewalls.  I'm adding a check to
>>>> handle EPERM from sendto().  This may not be related to
>>>> what you see, but I'm also adding some detail to the
>>>> 'RX ignore' message.
>>>
>>> Dirk, can you test the lastest from the 7.0 branch?
>>>
>>> The relevant change is:
>>>
>>> https://github.com/epics-base/epics-
>>> base/commit/d83e3b5de11f8ed52e76498c6f6fc412ba20b000
>>>
>>>
>>>> On 11/18/20 4:32 AM, Zimoch Dirk (PSI) via Core-talk wrote:
>>>>> After this:
>>>>>
>>>>> 1..24
>>>>>
>>>>> ok  1 - osiSockAttach
>>>>>
>>>>> # udpSockTest()
>>>>>
>>>>> ok  2 - epicsSocketCreate INET, DGRAM, 0
>>>>>
>>>>> ok  3 - setsockopt BROADCAST := 1
>>>>>
>>>>> ok  4 - getsockopt BROADCAST => 1
>>>>>
>>>>> ok  5 - setsockopt BROADCAST := 0
>>>>>
>>>>> ok  6 - getsockopt BROADCAST => 0
>>>>>
>>>>> ok  7 - setsockopt MULTICAST_LOOP := 1
>>>>>
>>>>> ok  8 - getsockopt MULTICAST_LOOP => 1
>>>>>
>>>>> ok  9 - setsockopt MULTICAST_LOOP := 0
>>>>>
>>>>> ok 10 - getsockopt MULTICAST_LOOP => 0
>>>>>
>>>>> ok 11 - setsockopt IP_MULTICAST_TTL := 2
>>>>>
>>>>> ok 12 - getsockopt IP_MULTICAST_TTL => 2
>>>>>
>>>>> ok 13 - setsockopt IP_MULTICAST_TTL := 1
>>>>>
>>>>> ok 14 - getsockopt IP_MULTICAST_TTL => 1
>>>>>
>>>>> # udpSockFanoutBindTest()
>>>>>
>>>>> # First test if epicsSocketEnableAddressUseForDatagramFanout() is
>> necessary
>>>>>
>>>>> ok 15 - bind() to port 43731
>>>>>
>>>>> ok 16 - bind() to 43731 error -1, 98
>>>>>
>>>>> # Now the real test
>>>>>
>>>>> ok 17 - bind() to port 43731
>>>>>
>>>>> ok 18 - bind() to port 43731
>>>>>
>>>>> # udpSockFanoutTest()
>>>>>
>>>>> # Interface 129.129.130.255:5064
>>>>>
>>>>> # Not LO
>>>>>
>>>>> # RX1 start
>>>>>
>>>>> # RX2 start
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> # RX2 success 0
>>>>>
>>>>> # RX1 success 0
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> # RX2 success 1
>>>>>
>>>>> # RX1 success 1
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> # RX2 success 2
>>>>>
>>>>> # RX1 success 2
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> # RX2 success 3
>>>>>
>>>>> # RX1 success 3
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> # RX1 success 4
>>>>>
>>>>> # RX2 success 4
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> # RX1 success 5
>>>>>
>>>>> # RX1 end
>>>>>
>>>>> # RX2 success 5
>>>>>
>>>>> # RX2 end
>>>>>
>>>>> # Result: RX1 3f:0 RX2 3f:0
>>>>>
>>>>> # Interface 192.168.122.255:5064
>>>>>
>>>>> # Not LO
>>>>>
>>>>> # RX1 start
>>>>>
>>>>> # RX2 start
>>>>>
>>>>> # RX ignore
>>>>>
>>>>> [...]
>>>>>
>>>>> Now it repeatedly prints "# RX ignore" forever...
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> *Von:*Johnson, Andrew N. <anj at anl.gov>
>>>>> *Gesendet:* Dienstag, 17. November 2020 18:11
>>>>> *An:* Zimoch Dirk (PSI) <dirk.zimoch at psi.ch>
>>>>> *Cc:* EPICS core-talk <core-talk at aps.anl.gov>
>>>>> *Betreff:* Re: Problems with hanging osiSockTest
>>>>>
>>>>>
>>>>>
>>>>> Dirk,
>>>>>
>>>>>
>>>>>
>>>>> What happens if you run that test manually? All EPICS unit tests can be run
>>> individually without using the test harness to see more details as the test
>>> proceeds. This is my output on RHEL-7.8, which takes about 6 seconds to run:
>>>>>
>>>>>
>>>>>
>>>>>     *tux% *cd modules/libcom/test/O.linux-x86_64/
>>>>>
>>>>>     *tux% *./osiSockTest
>>>>>
>>>>>     1..24
>>>>>
>>>>>     ok  1 - osiSockAttach
>>>>>
>>>>>     # udpSockTest()
>>>>>
>>>>>     ok  2 - epicsSocketCreate INET, DGRAM, 0
>>>>>
>>>>>     ok  3 - setsockopt BROADCAST := 1
>>>>>
>>>>>     ok  4 - getsockopt BROADCAST => 1
>>>>>
>>>>>     ok  5 - setsockopt BROADCAST := 0
>>>>>
>>>>>     ok  6 - getsockopt BROADCAST => 0
>>>>>
>>>>>     ok  7 - setsockopt MULTICAST_LOOP := 1
>>>>>
>>>>>     ok  8 - getsockopt MULTICAST_LOOP => 1
>>>>>
>>>>>     ok  9 - setsockopt MULTICAST_LOOP := 0
>>>>>
>>>>>     ok 10 - getsockopt MULTICAST_LOOP => 0
>>>>>
>>>>>     ok 11 - setsockopt IP_MULTICAST_TTL := 2
>>>>>
>>>>>     ok 12 - getsockopt IP_MULTICAST_TTL => 2
>>>>>
>>>>>     ok 13 - setsockopt IP_MULTICAST_TTL := 1
>>>>>
>>>>>     ok 14 - getsockopt IP_MULTICAST_TTL => 1
>>>>>
>>>>>     # udpSockFanoutBindTest()
>>>>>
>>>>>     # First test if epicsSocketEnableAddressUseForDatagramFanout() is
>>> necessary
>>>>>
>>>>>     ok 15 - bind() to port 55467
>>>>>
>>>>>     ok 16 - bind() to 55467 error -1, 98
>>>>>
>>>>>     # Now the real test
>>>>>
>>>>>     ok 17 - bind() to port 55467
>>>>>
>>>>>     ok 18 - bind() to port 55467
>>>>>
>>>>>     # udpSockFanoutTest()
>>>>>
>>>>>     # Interface 164.54.11.255:5064
>>>>>
>>>>>     # Not LO
>>>>>
>>>>>     # RX1 start
>>>>>
>>>>>     # RX2 start
>>>>>
>>>>>     # RX2 success 0
>>>>>
>>>>>     # RX1 success 0
>>>>>
>>>>>     # RX2 success 1
>>>>>
>>>>>     # RX1 success 1
>>>>>
>>>>>     # RX2 success 2
>>>>>
>>>>>     # RX1 success 2
>>>>>
>>>>>     # RX ignore
>>>>>
>>>>>     # RX ignore
>>>>>
>>>>>     # RX1 success 3
>>>>>
>>>>>     # RX2 success 3
>>>>>
>>>>>     # RX2 success 4
>>>>>
>>>>>     # RX1 success 4
>>>>>
>>>>>     # RX1 success 5
>>>>>
>>>>>     # RX1 end
>>>>>
>>>>>     # RX2 success 5
>>>>>
>>>>>     # RX2 end
>>>>>
>>>>>     # Result: RX1 3f:0 RX2 3f:0
>>>>>
>>>>>     # Interface 192.168.122.255:5064
>>>>>
>>>>>     # Not LO
>>>>>
>>>>>     # RX1 start
>>>>>
>>>>>     # RX2 start
>>>>>
>>>>>     # RX1 success 0
>>>>>
>>>>>     # RX2 success 0
>>>>>
>>>>>     # RX1 success 1
>>>>>
>>>>>     # RX2 success 1
>>>>>
>>>>>     # RX1 success 2
>>>>>
>>>>>     # RX2 success 2
>>>>>
>>>>>     # RX ignore
>>>>>
>>>>>     # RX ignore
>>>>>
>>>>>     # RX1 success 3
>>>>>
>>>>>     # RX2 success 3
>>>>>
>>>>>     # RX1 success 4
>>>>>
>>>>>     # RX2 success 4
>>>>>
>>>>>     # RX1 success 5
>>>>>
>>>>>     # RX1 end
>>>>>
>>>>>     # RX2 success 5
>>>>>
>>>>>     # RX2 end
>>>>>
>>>>>     # Result: RX1 3f:0 RX2 3f:0
>>>>>
>>>>>     ok 19 - Found non-loopback interface
>>>>>
>>>>>     ok 20 - Successes 2
>>>>>
>>>>>     # tcpSockReuseBindTest(0)
>>>>>
>>>>>     ok 21 - bind() to port 53058
>>>>>
>>>>>     ok 22 - bind() to 53058 error -1, 98
>>>>>
>>>>>     # tcpSockReuseBindTest(1)
>>>>>
>>>>>     # epicsSocketEnableAddressReuseDuringTimeWaitState
>>>>>
>>>>>     ok 23 - bind() to port 34068
>>>>>
>>>>>     ok 24 - bind() to 34068 error -1, 98
>>>>>
>>>>>
>>>>>
>>>>>         Results
>>>>>
>>>>>         =======
>>>>>
>>>>>            Tests: 24
>>>>>
>>>>>           Passed:  24 = 100.00%
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> - Andrew
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>     On Nov 17, 2020, at 4:47 AM, Zimoch Dirk (PSI) via Core-talk <core-
>>> talk at aps.anl.gov <mailto:core-talk at aps.anl.gov>> wrote:
>>>>>
>>>>>
>>>>>
>>>>>     Hello everybody,
>>>>>
>>>>>     I have problems with a test in EPICS 7 commit
>>> 8fd36d8eef3420b42e7936e949928a6b43df7e15.
>>>>>
>>>>>     osiSockTest seems to take forever.
>>>>>
>>>>>     'make runtests' hangs here:
>>>>>     osiSockTest.t ................. 1/24
>>>>>
>>>>>     'make tapfiles' hangs here:
>>>>>     perl -CSD osiSockTest.t -tap > osiSockTest.tap
>>>>>
>>>>>     I am testing on RedHat 7 (linux-x86_64).
>>>>>
>>>>>     Any ideas?
>>>>>
>>>>>     Dirk
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> Complexity comes for free, simplicity you have to work for.
>>>>>
>>>>>
>>>>>
>>>>
> 


References:
Problems with hanging osiSockTest Zimoch Dirk (PSI) via Core-talk
Re: Problems with hanging osiSockTest Johnson, Andrew N. via Core-talk
AW: Problems with hanging osiSockTest Zimoch Dirk (PSI) via Core-talk
Re: AW: Problems with hanging osiSockTest Michael Davidsaver via Core-talk
Re: AW: Problems with hanging osiSockTest Michael Davidsaver via Core-talk
AW: AW: Problems with hanging osiSockTest Zimoch Dirk (PSI) via Core-talk
AW: AW: Problems with hanging osiSockTest Zimoch Dirk (PSI) via Core-talk

Navigate by Date:
Prev: Re: AW: Problems with hanging osiSockTest Michael Davidsaver via Core-talk
Next: Re: AW: AW: Problems with hanging osiSockTest Michael Davidsaver via Core-talk
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024 
Navigate by Thread:
Prev: AW: AW: Problems with hanging osiSockTest Zimoch Dirk (PSI) via Core-talk
Next: Re: AW: AW: Problems with hanging osiSockTest Michael Davidsaver via Core-talk
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024 
ANJ, 19 Nov 2020 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·