Hi,

The following code dies with a segfault :

import std.stdio, std.parallelism, std.process;

void main() {
        auto a=["hello","world","goodbye"];
        foreach(s; parallel(a,1)) {
                auto ls=executeShell("echo "~s);
                writeln(ls.output);
        }
}

both in ldc and dmd. Removing either the "parallel" or running something other than executeShell (eg. just doing a writeln) works, which suggests to me that it's something about the way executeShell is interacting with parallel.

Pulling it up in lldb, I get :
* thread #2: tid = 0x16738e6, 0x0000000100039198 test`D3std7process7environFNbNdNeZxPPa + 20, stop reason = EXC_BAD_ACCESS (code=1, address=0x0) frame #0: 0x0000000100039198 test`D3std7process7environFNbNdNeZxPPa + 20

Any thoughts on what might be going wrong? Is executeShell somehow not threadsafe?

Thanks!
-- Nikhil

Reply via email to