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)