[Issue 4199] New: D2 core.sys.posix.setjmp segfaults

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon May 17 00:41:42 PDT 2010


http://d.puremagic.com/issues/show_bug.cgi?id=4199

           Summary: D2 core.sys.posix.setjmp segfaults
           Product: D
           Version: 2.041
          Platform: Other
        OS/Version: FreeBSD
            Status: NEW
          Severity: normal
          Priority: P2
         Component: druntime
        AssignedTo: sean at invisibleduck.org
        ReportedBy: rsinfu at gmail.com


--- Comment #0 from Shin Fujishiro <rsinfu at gmail.com> 2010-05-17 00:41:40 PDT ---
This program core dumps on FreeBSD (and it should on Linux):
--------------------
import core.sys.posix.setjmp;

void main()
{
    jmp_buf st = void;

    setjmp(st);
    assert(0); // trap; not reached due to the bug
}
--------------------

The C standard defines jmp_buf as an array.  In C and D1, the definition works
since arrays (static arrays) are passed to functions by reference.  But in D2,
static arrays are passed by value!  Hence the above program core dumps.

So, setjmp() and longjmp() must be declared as:
--------------------
int  setjmp(ref jmp_buf);
void longjmp(ref jmp_buf, int);
--------------------

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


More information about the Digitalmars-d-bugs mailing list