Re: EntryCompletion woes (maybe?)




On Nov 7, 2006, at 7:09 PM, Matthew Braid wrote:

Unfortunately there's been some strange behaviour since I added it - namely if I try to delete a row _after text has been entered into a combo box entry_ I get:

Gtk-CRITICAL **: gtk_entry_get_text: assertion `GTK_IS_ENTRY (entry)' failed at -e line 1.

which I've tracked down to the EntryCompletions.

By setting --g-fatal-warnings and running perl in a debugger, i get this backtrace at the first of the CRITICAL messages:

#0  0x008ab7a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1  0x008eae59 in raise () from /lib/tls/libc.so.6
#2  0x008ec882 in abort () from /lib/tls/libc.so.6
#3 0x00e5b38e in gperl_log_handler (log_domain=0xbebebb "GLib- GObject", log_level=0, message=0x9dbfdc "<½\235", user_data=0x0) at GLog.xs:140 #4 0x0016cc44 in IA__g_logv (log_domain=0xbebebb "GLib-GObject", log_level=G_LOG_LEVEL_WARNING, format=0xbef780 "%s: instance `%p' has no handler with id `%lu'",
    args1=0xbfee2f8c "Aì¾") at gmessages.c:474
#5 0x0016cdcc in IA__g_log (log_domain=0xbebebb "GLib-GObject", log_level=G_LOG_LEVEL_WARNING, format=0xbef780 "%s: instance `%p' has no handler with id `%lu'")
    at gmessages.c:517
#6 0x00bdb8cc in IA__g_signal_handler_block (instance=0x8aef510, handler_id=281) at gsignal.c:1693 #7 0x00f46f4d in IA__gtk_entry_completion_insert_prefix (completion=0x8b490f0) at gtkentrycompletion.c:1599 #8 0x00f440ee in check_completion_callback (completion=0x8b490f0) at gtkentry.c:5382 #9 0x00bdf68d in source_closure_marshal_BOOLEAN__VOID (closure=0x6, return_value=0xbfee30b0, n_param_values=0, param_values=0x0, invocation_hint=0x0, marshal_data=0x0)
    at gsourceclosure.c:81
#10 0x00bce14e in IA__g_closure_invoke (closure=0x8b8e520, return_value=0xbfee30b0, n_param_values=0, param_values=0x0, invocation_hint=0x0) at gclosure.c:490 #11 0x00bdf7c0 in source_closure_callback (data=0x8b8e520) at gsourceclosure.c:123 #12 0x001687a4 in g_idle_dispatch (source=0x8b8f238, callback=0, user_data=0x8b8e520) at gmain.c:3796
#13 0x00165b8c in g_main_dispatch (context=0x891b188) at gmain.c:1916
#14 0x00166b51 in IA__g_main_context_dispatch (context=0x891b188) at gmain.c:2466 #15 0x00166e76 in g_main_context_iterate (context=0x891b188, block=1, dispatch=1, self=0x88c6548) at gmain.c:2547
#16 0x00167372 in IA__g_main_loop_run (loop=0x8b8cdb0) at gmain.c:2751
#17 0x00fad8eb in IA__gtk_main () at gtkmain.c:1000
#18 0x002b3c32 in XS_Gtk2_main (my_perl=0x8855008, cv=0x8929d1c) at xs/Gtk2.c:387 #19 0x0076326d in Perl_pp_entersub () from /usr/lib/perl5/5.8.3/i386- linux-thread-multi/CORE/libperl.so #20 0x00745bbd in Perl_runops_debug () from /usr/lib/perl5/5.8.3/i386- linux-thread-multi/CORE/libperl.so #21 0x006f4958 in perl_run () from /usr/lib/perl5/5.8.3/i386-linux- thread-multi/CORE/libperl.so #22 0x006f46a5 in perl_run () from /usr/lib/perl5/5.8.3/i386-linux- thread-multi/CORE/libperl.so
#23 0x08049394 in main ()



The code from that point is all unfamiliar to me, and not immediately obvious. gtk_entry_completion_insert_prefix() is attempting to block the insert_text signal on the completion's entry before emitting the insert-prefix signal, but the entry has no such signal handler connected. The insert_text_id is captured in connect_completion_signals() in gtkentry.c when the completion is attached to the entry, and is disconnected in disconnect_completion_signals()... but the value doesn't appear to be cleared from the instance. Not sure if it's a garbage or you were supposed to destroy the completion or what.

That's as far as i can take it at the moment... really need sleep...





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]