| Summary: | SDL2 games crash with dbus assertion when Fcitx support is enabled | ||
|---|---|---|---|
| Product: | SDL | Reporter: | hdack58 |
| Component: | *don't know* | Assignee: | Ryan C. Gordon <icculus> |
| Status: | RESOLVED FIXED | QA Contact: | Sam Lantinga <slouken> |
| Severity: | normal | ||
| Priority: | P2 | ||
| Version: | 2.0.5 | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
|
Description
hdack58
2017-05-03 10:45:59 UTC
This is working, with both the 2.0.5 release and the latest in revision control, on Ubuntu 17.04. Messages are passing over dbus to fcitx, and the testime app is getting composed Unicode text back from it. No crashes or warnings. Is it possible that the fcitx package in Arch has different dbus method signatures, due to a newer/older version of fcitx? I'll try to get Arch installed and take a look. --ryan. Oh oh oh, I figured it out! Here's the reproduction case: - Install fcitx - Install or build an SDL with fcitx support. - Uninstall fcitx, or just kill its processes. - Export SDL_IM_MODULE=fcitx and run an SDL app. - Get this crash. (SDL also looks at the XMODIFIERS environment var, and might choose fcitx support from there.) Basically, if SDL decides to use fcitx, it makes a D-Bus call to create an IC, and doesn't check if this fails. If it fails, future D-Bus method calls to that never-successfully-created D-Bus path will cause this assertion. SDL makes that D-Bus method call on each keypress. Most people won't see this bug because you need an unlikely set of preconditions (fcitx support but no running fcitx daemon plus the environment variables). Fix incoming. --ryan. Fixed in https://hg.libsdl.org/SDL/rev/dc895d39212c --ryan. |