| 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
Permalink
Reply