Thread overview | |||||
---|---|---|---|---|---|
|
December 13, 2013 segfault when using std.parallelism and std.process.executeShell | ||||
---|---|---|---|---|
| ||||
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 |
January 07, 2014 Re: segfault when using std.parallelism and std.process.executeShell | ||||
---|---|---|---|---|
| ||||
Posted in reply to Nikhil Padmanabhan | On 12/12/2013 08:33 PM, Nikhil Padmanabhan wrote: > 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); > } > } I don't know the original problem but that program works without any problem with the current dmd on github. Ali > > 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 |
January 07, 2014 Re: segfault when using std.parallelism and std.process.executeShell | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli | On Tuesday, 7 January 2014 at 23:12:09 UTC, Ali Çehreli wrote:
> don't know the original problem but that program works without any problem with the current dmd on github.
Works for me on dmd v2.064 (current stable) on Windows.
|
Copyright © 1999-2021 by the D Language Foundation