upcoming - verify AbstractSystem::_cmdResult thread safety bug


Software testing queue

Servers and software versions used:
sxadsec: stable (no change)
soul-sxwfs: stable (no change)

Test: verify AbstractSystem::_cmdResult thread safety bug

Problem: While investigating interrupted offsets, BM made a script to send Ice commands to the AdSec Arbitrator and WFS Arbitrator in two threads, which crashed the AdSec Arbitrator. After some debugging and inspecting code, BM suspects the issue is with thread safety of the command result from IdlSystem (AbstractSystem), as it occurs between sending wfs.saveOpticalLoopData (which calls adsec.savedata) and adsec.Pause in two separate threads without any pause in between. IdlSystem has a mutex for executing the command, but there is no mutex for the command result, which gets re-initialized immediately when the command begins.

Test: To verify that this could be a thread safety issue, BM will try adding a 2s pause between wfs.saveOpticalLoopData and adsec.PauseAo to check that it no longer makes the AdSec Arbitrator crash.

-- BrandonMechtley - 04 Apr 2022
Topic revision: r3 - 25 Apr 2022, BrandonMechtley
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback