Thread overview | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
May 31, 2014 dmd segfaults | ||||
---|---|---|---|---|
| ||||
Hi ! Does anybody knows why dmd segfaults on this code ? Should I report this as a bug ? import std.stdio; enum LiftingGender { PREDICT, UPDATE, } struct Test(float[][] coeffs, int[] offsets, LiftingGender gender) { immutable float[][] coeffs = coeffs; immutable int[] offsets = offsets; immutable LiftingGender gender; } void main() { Test!([[0.5,-1]], [-1], LiftingGender.PREDICT) test; writeln(test); } |
May 31, 2014 Re: dmd segfaults | ||||
---|---|---|---|---|
| ||||
Posted in reply to matovitch | matovitch:
> Does anybody knows why dmd segfaults on this code ? Should I report this as a bug ?
Please report this minimized case to Bugzilla:
struct Foo(int[] arr) {
const int[] arr = arr;
}
void main() {
Foo!([0]) foo;
}
The error it gives before the crash:
test.d(2,17): Deprecation: variable test.Foo!([0]).Foo.arr const field with initializer should be static, __gshared, or an enum
The cause of the crash if that the local variable has the same name as the template argument, combined with the reported error.
Bye,
bearophile
|
May 31, 2014 Re: dmd segfaults | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | On Saturday, 31 May 2014 at 17:01:23 UTC, bearophile wrote:
> matovitch:
>
>> Does anybody knows why dmd segfaults on this code ? Should I report this as a bug ?
>
> Please report this minimized case to Bugzilla:
>
>
> struct Foo(int[] arr) {
> const int[] arr = arr;
> }
> void main() {
> Foo!([0]) foo;
> }
>
>
> The error it gives before the crash:
>
> test.d(2,17): Deprecation: variable test.Foo!([0]).Foo.arr const field with initializer should be static, __gshared, or an enum
>
>
> The cause of the crash if that the local variable has the same name as the template argument, combined with the reported error.
>
> Bye,
> bearophile
Thanks ! I should have minimized it. Anyway I discovered I had already a bugzilla account unfortunately I can't remember my password and the email takes his time... :-(
|
May 31, 2014 Re: dmd segfaults | ||||
---|---|---|---|---|
| ||||
Posted in reply to matovitch | In fact it segfauls on any template parameter if it has the same name as the immutable member (at least it's coherent). Something as simple as : struct Foo(int i) { immutable int i = i; } void main() { Foo!5 foo; writeln(foo); } I am suprised that nobody tried this before. BTW I am starting to worry : my mail didn't arrived yet. I would be very grateful if someone could report this for me. :S |
May 31, 2014 Re: dmd segfaults | ||||
---|---|---|---|---|
| ||||
Posted in reply to matovitch | I remembered my psswd don't take my last sentence into account (i will filed this). |
May 31, 2014 Re: dmd segfaults | ||||
---|---|---|---|---|
| ||||
Posted in reply to matovitch | On Saturday, 31 May 2014 at 17:22:41 UTC, matovitch wrote:
> In fact it segfauls on any template parameter if it has the same name as the immutable member (at least it's coherent). Something as simple as :
>
> struct Foo(int i)
> {
> immutable int i = i;
> }
>
> void main()
> {
> Foo!5 foo;
> writeln(foo);
> }
>
> I am suprised that nobody tried this before. BTW I am starting to worry : my mail didn't arrived yet. I would be very grateful if someone could report this for me. :S
It doesn't even need a template, this crashes too:
struct Test {
immutable float[] i = i;
}
|
May 31, 2014 Re: dmd segfaults | ||||
---|---|---|---|---|
| ||||
Posted in reply to Marc Schütz | I updated the issue. Strangely if done in the main everything is fine : Error: undefined identifier i |
May 31, 2014 Re: dmd segfaults | ||||
---|---|---|---|---|
| ||||
Posted in reply to matovitch | On Sat, May 31, 2014 at 04:50:11PM +0000, matovitch via Digitalmars-d-learn wrote: > Hi ! > > Does anybody knows why dmd segfaults on this code ? Should I report this as a bug ? [...] Compiler segfaults should always be reported. No matter how wrong the code may be, it is never right for the compiler to crash -- it should reject the code and terminate normally. T -- Never ascribe to malice that which is adequately explained by incompetence. -- Napoleon Bonaparte |
Copyright © 1999-2021 by the D Language Foundation