www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 10851] New: Stack trace missing for null object access in module constructor

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10851

           Summary: Stack trace missing for null object access in module
                    constructor
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: andrej.mitrovich gmail.com



03:09:24 PDT ---
-----
shared static this()
{
    class C
    {
        void foo() { }
    }

    C c;
    c.foo();
}

void main()
{
}
-----

$ dmd -g -run test.d
 object.Error: Access Violation
When using the same code in main, a proper stack trace is returned: ----- module test; void main() { class C { void foo() { } } C c; c.foo(); } ----- object.Error: Access Violation ---------------- 0x0040201B in _Dmain at C:\dev\code\d_code\stack_trace_working.d(11) 0x004028E4 in extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).v oid runMain() 0x00402974 in extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).v oid runAll() 0x00402251 in _d_run_main 0x00402074 in main 0x004141AD in mainCRTStartup 0x766C33CA in BaseThreadInitThunk 0x77C19ED2 in RtlInitializeExceptionChain 0x77C19EA5 in RtlInitializeExceptionChain Tested on Win 7 64bit. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 19 2013
parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10851


kekeniro2 yahoo.co.jp changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kekeniro2 yahoo.co.jp



I hit this.

Written in core.runtime.d :
static this()
{
    // NOTE: Some module ctors will run before this handler is set, so it's
    //       still possible the app could exit without a stack trace.  If
    //       this becomes an issue, the handler could be set in C main
    //       before the module ctors are run.
    Runtime.traceHandler = &defaultTraceHandler;
}

At least, it had better be changed to 'shared static this'.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Oct 25 2013