The segfault occurs inside clone_key_arg() inside src/inter_call.c (at
line 871), which has the following leading POD description (committed by
chromatic who also committed most of the implementation):
Replaces any src registers by their values (done inside clone). This
needs a test for tailcalls too, but I think there is no syntax to pass a
key to a tailcalled function or method.
The segfault is from the second if() statement, when on my system key
contained the value 0x21, which is obviously not a valid pmc*:
static void
clone_key_arg(PARROT_INTERP, ARGMOD(call_state *st))
{
PMC *key = UVal_pmc(st->val);
if (!key)
return;
if (key->vtable->base_type != enum_class_Key)