'Access Violation Error' with parallel-foreach loop

ikod via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Mar 18 13:57:59 PDT 2017


On Saturday, 18 March 2017 at 16:15:30 UTC, ooyu wrote:
> When i was uing parallel-foreach loop, got this error:
>
>  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
> object.Error@(0): Access Violation
> ----------------
> 0x0056CCB8 in _flushbu
> 0x005663C7 in fwrite
> 0x0041D39F in nothrow @nogc @trusted uint 
> std.stdio.trustedFwrite!(char).trustedFwrite(shared(core.stdc.stdio._iobuf)*, const(char[]))
> at C:\D\dmd2\windows\bin\..\..\src\phobos\std\stdio.d(3836)
> 0x004611AA in D3std6format99__T14formattedWri at 
> C:\D\dmd2\windows\bin\..\..\src\phobos\std\format.d(556)
>  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
>
> code is here:
>  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
> foreach( web_url; parallel(urls) ){
>     try{
>         auto rq = Request(); // using dlang-requests library
>         auto d = rq.get( std.uri.encode(web_url) ); // file url
>
>         File f = File(path_hash[web_url], "wb");
>         f.write( d.responseBody );
>         f.close();
>     }
>     catch(std.exception.ErrnoException e){}
> }
>  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
>
> I don't understand why got Access Violation error. :-(


Hello,
Also don't understand the reason and I can't reproduce this 
error. Can you try to pass ubyte[] to f.write() explicitly 
converting responseBody to array? Like

f.write(d.responseBody.data());




More information about the Digitalmars-d-learn mailing list