XSaveContext() is basically just stashing up the pointer for later XFindContext() calls to retrieve, so it doesn't matter what's in it (or indeed if it's even a valid pointer, at least 'till we deref it after XFC()). But gcc11 doesn't know that, so it gets grumpy about passing an uninitialized blob in. Easy enough workaround; just do our setup before stashing it.