Bug 1857 – Runtime segfault while profileing - jump to invalid code address
Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
x86
OS
Linux
Creation time
2008-02-20T16:18:00Z
Last change time
2015-06-09T01:14:30Z
Assigned to
bugzilla
Creator
webmaster
Comments
Comment #0 by webmaster — 2008-02-20T16:18:26Z
DMD 2.011
Fedora Core 6 x86_64
The following code runs fine when you compile it normally, but segfaults when you compile it with "-profile". It appears, from looking at gdb and "objdump -d", that the root problem is that the code jumps to an invalid instruction. Note, when you test this code, to use the exact code I show here. The error vanishes if you change very much, even things like type or module names:
BEGIN MODULE: "main.d"
module main;
import rule_pattern;
import std.stdio;
template my_chain(RET_TYPES...)
{
void delegate(RET_TYPES)
of(ARG_TYPES...)(ARG_TYPES args)
{
return null;
}
}
typedef char[] IDENT;
int main()
{
writefln("f");
auto myChain = my_chain!(IDENT, void delegate(rule_pattern*))
.of(delegate void(void delegate(IDENT)) {},
delegate void(void delegate(void delegate(rule_pattern*))) {});
writefln("a2");
return 0;
}
BEGIN MODULE "rule_pattern.d"
module rule_pattern;
struct rule_pattern {}
END CODE