You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Jun 1, 2023. It is now read-only.
When NODEFAULT_SHAREKEYS is defined, sv_clear of a IsCOW/LEN=0 PV fails to get the he before the hek, which is shared with the pv.
With default SHAREKEYS every single key is stored twice. Once in strtab, and once in the hash. This seems to be a massive overhead. But I cannot test the overhead with this failure. (=> 20-30% faster)
This is an upstream bug, typical bitrot. perl5 simply assumes that every single non-strtab hash uses shared keys, ignoring the HVhek_UNSHARED bit somewhere. Or most likely forgetting to copy this bit.
NODEFAULT_SHAREKEYS was previously in newHV() in hv.c, added with fde52b5 in perl 5.003_01
repro: Configure with -DDEBUGGING -Accflags=-DNODEFAULT_SHAREKEYS; make miniperl; ./miniperl -Ilib configpm && make uni.data and see the unshare_hek assert.
This even happens with 5.10.0, before new IsCOW times, but works with 5.8.9. So it got broken during the 5.9 cycle, probably with the old COW.