Thread overview
open a range of files - segfault
May 22, 2013
Stephan Schiffels
May 22, 2013
bearophile
May 22, 2013
John Colvin
May 22, 2013
Stephan Schiffels
May 22, 2013
John Colvin
May 22, 2013
Hi,

this code crashes with a segfault. I need help to understand what might be wrong with it.

import std.array;
import std.algorithm;

void main() {
  auto names = ["file1.txt", "file2.txt", "file3.txt"];  // let these files exist
  auto files = names.map!(f => File(f, "r"))().array();
}

Thanks,

Stephan
May 22, 2013
Stephan Schiffels:

> this code crashes with a segfault. I need help to understand what might be wrong with it.
>
> import std.array;
> import std.algorithm;
>
> void main() {
>   auto names = ["file1.txt", "file2.txt", "file3.txt"];  // let these files exist
>   auto files = names.map!(f => File(f, "r"))().array();
> }

If I use the latest 2.063beta5 compiler, and I also import std.stdio, then I see no crash on Windows32.

Bye,
bearophile
May 22, 2013
On Wednesday, 22 May 2013 at 08:38:14 UTC, Stephan Schiffels wrote:
> Hi,
>
> this code crashes with a segfault. I need help to understand what might be wrong with it.
>
> import std.array;
> import std.algorithm;
>
> void main() {
>   auto names = ["file1.txt", "file2.txt", "file3.txt"];  // let these files exist
>   auto files = names.map!(f => File(f, "r"))().array();
> }
>
> Thanks,
>
> Stephan

A quick gdb run shows that it's segfaulting at the exit of the program, when the GC runs its final full collection.
May 22, 2013
On Wednesday, 22 May 2013 at 11:07:39 UTC, bearophile wrote:
> Stephan Schiffels:
>
>> this code crashes with a segfault. I need help to understand what might be wrong with it.
>>
>> import std.array;
>> import std.algorithm;
>>
>> void main() {
>>  auto names = ["file1.txt", "file2.txt", "file3.txt"];  // let these files exist
>>  auto files = names.map!(f => File(f, "r"))().array();
>> }
>
> If I use the latest 2.063beta5 compiler, and I also import std.stdio, then I see no crash on Windows32.
>
> Bye,
> bearophile

With git master on linux x64 I get a segfault, see my other
comment.
May 22, 2013
On Wednesday, 22 May 2013 at 11:09:49 UTC, John Colvin wrote:
> On Wednesday, 22 May 2013 at 11:07:39 UTC, bearophile wrote:
>> Stephan Schiffels:
>>
>>> this code crashes with a segfault. I need help to understand what might be wrong with it.
>>>
>>> import std.array;
>>> import std.algorithm;
>>>
>>> void main() {
>>> auto names = ["file1.txt", "file2.txt", "file3.txt"];  // let these files exist
>>> auto files = names.map!(f => File(f, "r"))().array();
>>> }
>>
>> If I use the latest 2.063beta5 compiler, and I also import std.stdio, then I see no crash on Windows32.
>>
>> Bye,
>> bearophile
>
> With git master on linux x64 I get a segfault, see my other
> comment.

OK, thanks for confirming. I updated to the latest git master and still get a segfault. I'll file a bug report.

Stephan