On 1/21/19 5:28 PM, Jerry wrote:
On Monday, 21 January 2019 at 21:02:23 UTC, Steven Schveighoffer wrote:
On 1/21/19 3:37 PM, Jerry wrote:
[...]

I had a similar problem that I fixed myself actually last dconf:

https://issues.dlang.org/show_bug.cgi?id=17968

This looks almost identical as the issue was in the generated xtoHash function.

What version of the compiler are you using? My issue was fixed in 2.080.1, and then a followup fix in 2.081.1.


Ok, I get the same linker error down to version 2.74. Below that my eventcore version does not compile. Atleast LDC can compile so I can move forward. I will try to dustmite this tomorrow.

This was a PITA for me when it happened (I used dustmite to go down to a pretty small version). I was essentially blocked on my work in iopipe until this was fixed.

The issue I ran starts with dmd generating a function xtoHash for structs where you don't define toHash. In certain cases (and these can be very weird indeed), dmd generates a function which, for each of its members, calls essentially typeid(x).toHash(&x).

In the case of a struct that contains a class reference, this all goes fine, but the compiler doesn't generate the TypeInfo for the class when it should in these certain cases (in particular, the TypeInfo_Const for that class reference).

The reason I feel like your error is very very similar, is because you show the missing symbol as being the InitZ, which is the TypeInfo initializer of something, and you see the symbol that requires it as being an xtoHash symbol.

Not knowing your code base, it's hard to know what exact situation you're in. But hopefully this helps you get an understanding as to why it might happen.

I think in my case, it was a template class in an auto function, within an import (hard now to remember the details). In fact, the root cause is still there, I just added a workaround in the xtoHash generation (that cheats and uses typeid(Object) instead of the real typeid, since it's a virtual function call anyway).

See the related bug report with the root cause: https://issues.dlang.org/show_bug.cgi?id=18833, maybe it helps you relate to what is happening.

-Steve

Reply via email to