On Sunday, 13 December 2015 at 15:59:19 UTC, Ilya Yaroshenko wrote:
Could you please post reduced code example that caused dmd to segfault?

Took dustmite about 6 hours to reduce, and then I went at it manually for a bit, so this is the smallest I could get it:

import std.experimental.ndslice;

int main() {
  Field force;
  foreach(p, e; force) e;
}

struct Field {
  alias arr this;
  Slice!(3, double*) arr;
}

Compiled with dmd 2.069.1 via dub build:

{
    "name": "dlbc",
    "sourcePaths": ["src"],
    "dependencies": {
        "dip80-ndslice": "~>0.8.3",
    },
}

dip80-ndslice 0.8.3: target for configuration "library" is up to date.
dlbc ~master: building configuration "application"...
Segmentation fault
dmd failed with exit code 139.

Since it's a segfault in the compiler, should I put it on Bugzilla too?

2D way: &slice[0, 0]   or   &(slice.front.front());

ND way: &(slice.byElement.front())

Note: Comparing with unstandard there is no guarantee that the first element in a ndarray is the first element in memory. `reversed` and `allReversed` should not be used to preserve strides positive.

Hm, I assumed the underlying array would be a single block of data and then a bunch of pointers would be used to keep track of any slices. I'll try to figure out how to give the data to C then (for MPI and HDF5, to be exact).

Reply via email to