Why 2 times? Because on my system, the 1st swcalle.prg instance has a correct working directory (something like "F:\swtest") but the secondinstance always has "U:\c\mint\1-19-CUR\XAAES". (NOTE: My suspicion is that onother systems the current working directory is wrong everytime).
XaAES sets the path to it's own home after it launched a client. This is only useful if the actual caller is XaAES (I guess). In your case swcaller is the caller and so things go wrong. I'm not sure if the path should always be restored to the caller's home-path - now it's only reset in case of XaAES being the caller.
Patch committed to my branch. Thanks for the testcase. -- Helmut Karlowski