openjdk/jdk · warning

Couldn't find X Input Context

Error message

Couldn't find X Input Context

What it means

X11 input-method support in AWT (libawt_xawt, AIX build): setXICFocus was called with a null XIC (X Input Context). The function cannot set or unset input-method focus without a context, so it prints this to stderr and returns — the result is that input-method focus handling silently does nothing for that component.

Source

Thrown at src/java.desktop/aix/native/libawt_xawt/awt/awt_InputMethod.c:338

    if (pX11IMData->callbacks)
        free((void *)pX11IMData->callbacks);

    if (env) {
        (*env)->DeleteGlobalRef(env, pX11IMData->x11inputmethod);
    }

    free((void *)pX11IMData);
}

/*
 * Sets or unsets the focus to the given XIC.
 */
static void
setXICFocus(XIC ic, unsigned short req)
{
    if (ic == NULL) {
        (void)fprintf(stderr, "Couldn't find X Input Context\n");
        return;
    }
    if (req == 1)
        XSetICFocus(ic);
    else
        XUnsetICFocus(ic);
}

/*
 * Sets the focus window to the given XIC.
 */
static void
setXICWindowFocus(XIC ic, Window w)
{
    if (ic == NULL) {
        (void)fprintf(stderr, "Couldn't find X Input Context\n");
        return;
    }

View on GitHub (pinned to 88dfb74bbe)

Solutions

  1. Ensure a working X input method server is running and XMODIFIERS is set correctly (e.g. @im=ibus) before starting the Java app
  2. Check that focus listeners / custom peers do not call setXICFocus after the component's input context is disposed (null-check the XIC before calling)
  3. If not using input methods, unset XMODIFIERS or use GDK/QT-independent env so AWT does not attempt XIC creation at all
  4. Upgrade the JDK: known AWT races around XIC creation/focus have been fixed over time; report persistent occurrences with a repro to the JDK/XIM stack

Example fix

// before ( JNI focus path )
setXICFocus(pX11IMData->current_ic, 1);

// after
if (pX11IMData != NULL && pX11IMData->current_ic != NULL) {
    setXICFocus(pX11IMData->current_ic, 1);
}
Defensive patterns

Strategy: validation

Validate before calling

// Guard every focus call against a missing input context:
if (pX11IMData != NULL && pX11IMData->current_ic != NULL) {
    setXICFocus(pX11IMData->current_ic, req);
}

Prevention

When it happens

Trigger: An AWT/X11 component calls setXICFocus before its XIC was created (XCreateIC failed or has not run yet), or after the XIC was destroyed (when X11InputMethod.dispose runs) — e.g. focus events racing with input-method activation/deactivation, or the XIM server (e.g. ibus/fcitx) being unavailable so XCreateIC returned null.

Common situations: Running Java GUI apps on X11 with a missing or crashing input-method framework (XMODIFIERS unset or pointing to a dead IM server); focus changes arriving during IM teardown; AWT/XAWT-specific bugs in focus listeners calling setXICFocus on a disposed peer.

Related errors


AI-assisted analysis of openjdk/jdk@88dfb74bbe (2026-08-14). Data as JSON: /api/errors/c0bed0c186313f61. Report an issue: GitHub.