[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#36447: 27.0.50; New "Unknown keyword" errors
From: |
Pip Cet |
Subject: |
bug#36447: 27.0.50; New "Unknown keyword" errors |
Date: |
Fri, 5 Jul 2019 13:41:41 +0000 |
On Fri, Jul 5, 2019 at 12:33 PM Eli Zaretskii <eliz@gnu.org> wrote:
> Thanks for the explanations. I'm CC'ing Stefan who knows much more
> about this than I do.
Thank you.
> > The reasons are this: when a hash table is purecopied, its ->next
> > vector is purecopied, which merges it with another, similar, hash
> > table's ->next vector if purify-flag is a (third) hash table. The
> > vectors are compared using `equal', but the pure copies are actually
> > `eq'.
>
> A naïve question: wouldn't the problem go away if we modified purecopy
> not to do the above, i.e. not to merge the next vector of a hash table
> with that of another?
I thought about that, but it's a bit complicated: either we'd keep the
->next vector impure (and make a copy of it), or we would have to add
a "don't hash-cons" argument to purecopy(), which kind of defeats the
purpose.
> > The (disappointingly trivial) fix:
> > call copy-sequence on h->next before rehashing the table.
>
> Rehashing is not only done during dumping, right?
As far as I can tell, it's only done when first accessing a dumped
hash table, but I might be wrong. (In any case, it seems
`hash-table-count' then returns a negative value for the hash table,
which seems problematic to me.)
> So the fix you
> propose also makes rehashing slightly less efficient. Is that
> necessary, i.e. are you saying that the bug is in rehashing, not in
> purecopy?
Again, I may be wrong, since we're using the sign of h->count to
indicate whether a hash table needs rehashing and that's hard to grep
for, but I think this only affects rehashing after dump, not rehashing
when resizing a hash table. It's certainly not called very often, and
not for very large hash tables.
- bug#36447: 27.0.50; New "Unknown keyword" errors, (continued)
- bug#36447: 27.0.50; New "Unknown keyword" errors, Michael Heerdegen, 2019/07/04
- bug#36447: 27.0.50; New "Unknown keyword" errors, Pip Cet, 2019/07/05
- bug#36447: 27.0.50; New "Unknown keyword" errors, Eli Zaretskii, 2019/07/05
- bug#36447: 27.0.50; New "Unknown keyword" errors, Pip Cet, 2019/07/05
- bug#36447: 27.0.50; New "Unknown keyword" errors, Eli Zaretskii, 2019/07/05
- bug#36447: 27.0.50; New "Unknown keyword" errors, Pip Cet, 2019/07/05
- bug#36447: 27.0.50; New "Unknown keyword" errors, Eli Zaretskii, 2019/07/05
- bug#36447: 27.0.50; New "Unknown keyword" errors, Pip Cet, 2019/07/05
- bug#36447: 27.0.50; New "Unknown keyword" errors, Robert Pluim, 2019/07/05
- bug#36447: 27.0.50; New "Unknown keyword" errors, Eli Zaretskii, 2019/07/05
- bug#36447: 27.0.50; New "Unknown keyword" errors,
Pip Cet <=
- bug#36447: 27.0.50; New "Unknown keyword" errors, Stefan Monnier, 2019/07/05
- bug#36447: 27.0.50; New "Unknown keyword" errors, Eli Zaretskii, 2019/07/05
- bug#36447: 27.0.50; New "Unknown keyword" errors, Stefan Monnier, 2019/07/05
- bug#36447: 27.0.50; New "Unknown keyword" errors, Pip Cet, 2019/07/05
- bug#36447: 27.0.50; New "Unknown keyword" errors, Eli Zaretskii, 2019/07/05
- bug#36447: 27.0.50; New "Unknown keyword" errors, Stefan Monnier, 2019/07/05
- bug#36447: 27.0.50; New "Unknown keyword" errors, Pip Cet, 2019/07/05
- bug#36447: 27.0.50; New "Unknown keyword" errors, Stefan Monnier, 2019/07/05
- bug#36447: 27.0.50; New "Unknown keyword" errors, Eli Zaretskii, 2019/07/06
- bug#36447: 27.0.50; New "Unknown keyword" errors, Pip Cet, 2019/07/06