# New Ticket Created by NotFound # Please include the string: [perl #53890] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=53890 >
Last night in #parrot particle informed of a bug in a msvc++ build. By his suggestion, me and others were able to reproduce it in other platforms by using the gcdebug core: ./parrot --runcore=gcdebug t/pmc/orderedhash_9.pasm Looks like the problem is that parrot_mark_hash in hash.c expects that buckets always contains a valid key, but DESCRIPTION in orderedhash.pmc says: C<delete_keyed> never removes items; they are just nulled. The problem can be fixed by checking in parrot_mark_hash that the key is no null before calling pobject_lives. The attached path does it. -- Salu2
Index: src/hash.c =================================================================== --- src/hash.c (revisión: 27391) +++ src/hash.c (copia de trabajo) @@ -337,7 +337,7 @@ "Detected hash corruption at hash %p entries %d", hash, (int)entries); - if (mark_key) + if (mark_key && bucket->key) pobject_lives(interp, (PObj *)bucket->key); if (mark_value)