Jan Vroonhof <vroonhof(a)math.ethz.ch> writes:
Hrvoje Niksic <hniksic(a)srce.hr> writes:
> If the vector is in pure space, then all its symbol contents
> should be interned in Vpure_uninterned_symbol_table until the end
> of time, and GCPRO'ed through that. If that doesn't happen, it's
> a bug in the whatever code produces the pure compiled function.
No. In the code you quoted from Fpurecopy symbol is only put in
Vpure_uninterned_symbol_table when it is uninterned _at the time of
the purecopy_.
You are right. Maybe the solution is simply to always store the
symbol referenced by a pure structure to
Vpure_uninterned_symbol_table. Does uncommenting the
"if (!NILP (XSYMBOL (obj)->obarray)) return obj;" part fix your crash?
If yes, we should investigate how large the
Vpure_uninterned_symbol_table ends up. If not very large, then that's
probably a good fix. The "pure space" thing will not exist in 21.2
anyway.
> > I am not sure this what Martin actually fixed.
>
> You mean Kyle?
I was replying to a message from Gunnar in the bug tracking archive
where he asks the bug reporter to try it with 21.2 because Martin
had touched the relevant code.
The Vpure_uninterned_symbol_table stuff was introduced by Kyle. I
thought you referred to that.