digitalmars.D.learn - segmentation fault with Object.factory()
- berni (4/11) Feb 19 2017 The call of bar.foo() is, where the segmentation fault occurs.
- rikki cattermole (6/18) Feb 19 2017 void main()
I get a segmentation fault, when I run this program:void main() { A bar = cast(A)Object.factory("AA"); bar.foo(); } class A { abstract void foo(); } class AA:A { override void foo() {} }The call of bar.foo() is, where the segmentation fault occurs. When I use A bar = new AA(); instead of the factory it works. What's wrong here?
Feb 19 2017
On 19/02/2017 11:06 PM, berni wrote:I get a segmentation fault, when I run this program:void main() { A bar = cast(A)Object.factory(__MODULE__ ~ ".AA"); bar.foo(); }void main() { A bar = cast(A)Object.factory("AA"); bar.foo(); } class A { abstract void foo(); } class AA:A { override void foo() {} }The call of bar.foo() is, where the segmentation fault occurs. When I use A bar = new AA(); instead of the factory it works. What's wrong here?
Feb 19 2017
On Sunday, 19 February 2017 at 10:15:49 UTC, rikki cattermole wrote:Oops. I overdid when trying to create a small example. With the module it works, but my original program had the module and still produced an segmentation fault. After some more investigations I found out, that it was not due to a mistake in the program, but because rdmd didn't recompile after I called it with an --extra-file added. Looks like a bug in rdmd... Here is a small example: test.d:What's wrong here?void main() { A bar = cast(A)Object.factory(__MODULE__ ~ ".AA"); bar.foo(); }module test; import std.stdio; void main() { B tmp = cast(B)Object.factory("test2.BB"); tmp.m1(); } interface A { abstract void m1(); } interface B:A { abstract void m2(); } class AA:A { override void m1() { writeln("A"); } }test2.d:module test2; import std.stdio; import test; class BB:AA,B { override void m2() { writeln("B"); } }And here is what I get when compiling:$> rdmd test.d segmentation fault $> rdmd --extra-file=test2.d test.d segmentation fault $> rm -rf /tmp/.rdmd-1000/ $> rdmd --extra-file=test2.d test.d A $> rdmd -version rdmd build 20170122 [...]Should I report this bug anywhere (or am I wrong again?)
Feb 19 2017
On 02/19/2017 12:13 PM, berni wrote:And here is what I get when compiling:Looks like a bug, yes. Please report on <https://issues.dlang.org/>. For "component" choose "tools".$> rdmd test.d segmentation fault $> rdmd --extra-file=test2.d test.d segmentation fault $> rm -rf /tmp/.rdmd-1000/ $> rdmd --extra-file=test2.d test.d A $> rdmd -version rdmd build 20170122 [...]Should I report this bug anywhere (or am I wrong again?)
Feb 19 2017