[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