Comment #11 on issue 1612 by takao.fujiwara1: ibus input not working
http://code.google.com/p/ibus/issues/detail?id=1612

#1 0x00007ffff60ef436 in g_object_unref () from /usr/lib64/libgobject-2.0.so.0 #2 0x000000000040ffdf in panel_real_state_changed (base=0x6ae030) at panel.c:2905

I'm interested in the line #2905 in panel.c.
The panel.c is made from panel.vala during the build so the line depends on your vala. If you could compare panel.c and panel.vala in ibus-1.5.1/ui/gtk3, I guess the line #2905 is g_object_unref (engine) when i == 0 and engine != NULL.

static void panel_real_state_changed (IBusPanelService* base) {
....
    engine = ibus_bus_get_global_engine (self->priv->m_bus);
    engine = _g_object_ref0 (engine);
....
    if (engine == NULL) {
        _g_object_unref0 (engine);
        _g_free0 (icon_name);
        return;
    }
....
    while (TRUE) {
....
        _tmp23_ = ibus_engine_desc_get_name (_tmp22_);
        _tmp25_ = ibus_engine_desc_get_name (engine);
        if (g_strcmp0 (_tmp23_, _tmp25_) == 0) {
            break;
        }
    }
....
    if (i == 0) {
        _g_object_unref0 (engine);
        _g_free0 (icon_name);
        return;
    }
....
}


The code is no problem for me. I'd ask you if you still see your problem after you clear dconf values in preload-engines & engines-order and restart ibus-daemon.

% ibus exit

% dconf read /desktop/ibus/general/preload-engines
[]
% dconf reset /desktop/ibus/general/preload-engines
% dconf read /desktop/ibus/general/engines-order
[]
% dconf reset /desktop/ibus/general/engines-order

% ibus-daemon --xim --verbose &

If you still see your problem, I guess the following test program also could cause SEGV after ibus-daemon runs.

% cat a.c
#include <ibus.h>

int main (int argc, char *argv[])
{
  ibus_init ();
  IBusBus *bus = ibus_bus_new ();
  IBusEngineDesc *desc = ibus_bus_get_global_engine (bus);
  g_object_ref (desc);
  g_print ("%s\n", ibus_engine_desc_get_name (desc));
  g_object_unref (desc);

  return 0;
}

% gcc -o a a.c `pkg-config ibus-1.0`
% ./a

The test program copied the part of panel_real_state_changed.

--
You received this message because this project is configured to send all issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings

--
--
You received this message because you are subscribed to the Google
Groups "ibus-devel" group.
iBus project web page: http://code.google.com/p/ibus/
iBus dev group: http://groups.google.com/group/ibus-devel?hl=en
--- You received this message because you are subscribed to the Google Groups "ibus-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


回复