[Issue 14426] Segfault for missing extern variable

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Tue May 12 04:57:32 PDT 2015


https://issues.dlang.org/show_bug.cgi?id=14426

Maxim Fomin <maxim-fomin at outlook.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |maxim-fomin at outlook.com
         Resolution|---                         |INVALID

--- Comment #1 from Maxim Fomin <maxim-fomin at outlook.com> ---
That's funny bug. Extern(C): makes 'fall through' effect on main declaration
which hijacks druntime main definition, which prevents running module ctors, so
some internal data is not initialized properly. This works as expected:

import std.stdio;

void main(){
  writeln(i);
}

extern (C): int i;

According to spec http://dlang.org/attribute.html

attribute declaration; // affects the declaration

attribute:     // affects all declarations until the end of
               // the current scope
  declaration;
  declaration;
  ...

attribute {    // affects all declarations in the block
  declaration;
  declaration;
  ...
}

It seems that it implies file scope, so it works as intended, although it is
confusing. Tentatively closed as resolved-invalid.

--


More information about the Digitalmars-d-bugs mailing list