After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 787458 - Can't create new search engine
Can't create new search engine
Status: RESOLVED FIXED
Product: epiphany
Classification: Core
Component: Preferences
3.25.x
Other Linux
: Normal normal
: ---
Assigned To: Epiphany Maintainers
Epiphany Maintainers
Depends on:
Blocks:
 
 
Reported: 2017-09-08 20:47 UTC by erusan
Modified: 2017-09-09 16:45 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
search-engine-manager: get_address() must return NULL (4.43 KB, patch)
2017-09-09 16:45 UTC, Michael Catanzaro
committed Details | Review
search-provider: Simplify getting search engine address (1.56 KB, patch)
2017-09-09 16:45 UTC, Michael Catanzaro
committed Details | Review

Description erusan 2017-09-08 20:47:20 UTC
Trying to manage search engines in preferences, adding a new engine seems impossible.

Adding a new search engine, then exiting preferences and re-entering, shows the new search engine is not created.

Trying to alter the created entry's name at all results in an exclamation point/warning and red outline for the Name field. (On this point, the warnings provide zero indication of what is wrong with the entry.)

I am able to create a new search engine if I leave the name alone and simply alter the Address field.

Altering the Bang field results also in error/warning indicators (exclamation point, red outline), but clicking off the field removes the error indicators.

In short, the whole thing is borked and unusable atm.
Comment 1 Michael Catanzaro 2017-09-09 15:13:56 UTC
Yes, it's broken in 3.24 as well. I wonder when it broke.
Comment 2 Michael Catanzaro 2017-09-09 15:27:09 UTC


  • #0 _g_log_abort
    at /home/mcatanzaro/Projects/GNOME/glib/glib/gmessages.c line 554
  • #1 g_logv
    at /home/mcatanzaro/Projects/GNOME/glib/glib/gmessages.c line 1362
  • #2 g_log
    at /home/mcatanzaro/Projects/GNOME/glib/glib/gmessages.c line 1403
  • #3 g_return_if_fail_warning
    at /home/mcatanzaro/Projects/GNOME/glib/glib/gmessages.c line 2702
  • #4 gtk_entry_set_text
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtkentry.c line 7659
  • #5 list_box_row_selected_cb
    at /home/mcatanzaro/Projects/GNOME/epiphany/src/ephy-search-engine-dialog.c line 251
  • #6 g_cclosure_marshal_VOID__OBJECT
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gmarshal.c line 2062
  • #7 g_closure_invoke
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gclosure.c line 804
  • #8 signal_emit_unlocked_R
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gsignal.c line 3635
  • #9 g_signal_emit_valist
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gsignal.c line 3391
  • #10 g_signal_emit
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gsignal.c line 3447
  • #11 gtk_list_box_select_row_internal
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtklistbox.c line 1647
  • #12 gtk_list_box_select_row
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtklistbox.c line 804
  • #13 on_search_engine_add_button_clicked
    at /home/mcatanzaro/Projects/GNOME/epiphany/src/ephy-search-engine-dialog.c line 326
  • #14 g_cclosure_marshal_VOID__VOIDv
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gmarshal.c line 905
  • #15 _g_closure_invoke_va
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gclosure.c line 867
  • #16 g_signal_emit_valist
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gsignal.c line 3300
  • #17 g_signal_emit
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gsignal.c line 3447
  • #18 gtk_button_clicked
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtkbutton.c line 1539
  • #19 gtk_button_do_release
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtkbutton.c line 1843
  • #20 gtk_real_button_released
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtkbutton.c line 1961
  • #21 g_cclosure_marshal_VOID__VOIDv
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gmarshal.c line 905
  • #22 g_type_class_meta_marshalv
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gclosure.c line 1024
  • #23 _g_closure_invoke_va
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gclosure.c line 867
  • #24 g_signal_emit_valist
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gsignal.c line 3300
  • #25 g_signal_emit
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gsignal.c line 3447
  • #26 multipress_released_cb
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtkbutton.c line 666
  • #27 ffi_call_unix64
    at ../src/x86/unix64.S line 76
  • #28 ffi_call
    at ../src/x86/ffi64.c line 525
  • #29 g_cclosure_marshal_generic_va
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gclosure.c line 1604
  • #30 _g_closure_invoke_va
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gclosure.c line 867
  • #31 g_signal_emit_valist
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gsignal.c line 3300
  • #32 g_signal_emit
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gsignal.c line 3447
  • #33 gtk_gesture_multi_press_end
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtkgesturemultipress.c line 282
  • #34 g_cclosure_marshal_VOID__BOXEDv
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gmarshal.c line 1950
  • #35 g_type_class_meta_marshalv
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gclosure.c line 1024
  • #36 _g_closure_invoke_va
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gclosure.c line 867
  • #37 g_signal_emit_valist
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gsignal.c line 3300
  • #38 g_signal_emit
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gsignal.c line 3447
  • #39 _gtk_gesture_set_recognized
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtkgesture.c line 345
  • #40 _gtk_gesture_check_recognized
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtkgesture.c line 386
  • #41 gtk_gesture_handle_event
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtkgesture.c line 777
  • #42 gtk_gesture_single_handle_event
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtkgesturesingle.c line 222
  • #43 gtk_event_controller_handle_event
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtkeventcontroller.c line 230
  • #44 _gtk_widget_run_controllers
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtkwidget.c line 7358
  • #45 gtk_widget_real_button_event
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtkwidget.c line 7133
  • #46 _gtk_marshal_BOOLEAN__BOXEDv
    at gtkmarshalers.c line 128
  • #47 g_type_class_meta_marshalv
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gclosure.c line 1024
  • #48 _g_closure_invoke_va
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gclosure.c line 867
  • #49 g_signal_emit_valist
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gsignal.c line 3300
  • #50 g_signal_emit
    at /home/mcatanzaro/Projects/GNOME/glib/gobject/gsignal.c line 3447
  • #51 gtk_widget_event_internal
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtkwidget.c line 7723
  • #52 gtk_widget_event
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtkwidget.c line 7293
  • #53 propagate_event_up
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtkmain.c line 2578
  • #54 propagate_event
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtkmain.c line 2680
  • #55 gtk_propagate_event
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtkmain.c line 2715
  • #56 gtk_main_do_event
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gtk/gtkmain.c line 1911
  • #57 _gdk_event_emit
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gdk/gdkevents.c line 73
  • #58 gdk_event_source_dispatch
    at /home/mcatanzaro/Projects/GNOME/gtk+-3/gdk/wayland/gdkeventsource.c line 124
  • #59 g_main_dispatch
    at /home/mcatanzaro/Projects/GNOME/glib/glib/gmain.c line 3148
  • #60 g_main_context_dispatch
    at /home/mcatanzaro/Projects/GNOME/glib/glib/gmain.c line 3813
  • #61 g_main_context_iterate
    at /home/mcatanzaro/Projects/GNOME/glib/glib/gmain.c line 3886
  • #62 g_main_context_iteration
    at /home/mcatanzaro/Projects/GNOME/glib/glib/gmain.c line 3947
  • #63 g_application_run
    at /home/mcatanzaro/Projects/GNOME/glib/gio/gapplication.c line 2401
  • #64 main
    at /home/mcatanzaro/Projects/GNOME/epiphany/src/ephy-main.c line 432

Comment 3 Michael Catanzaro 2017-09-09 16:17:01 UTC
638a8051cd970f231126ebed7cb02bcd289cae50 is the first bad commit
commit 638a8051cd970f231126ebed7cb02bcd289cae50
Author: Michael Catanzaro <mcatanzaro@igalia.com>
Date:   Wed Jul 12 18:40:19 2017 -0500

    search-engine-manager: Always return a search engine address
    
    We need to return a default search engine address if the value in
    GSettings is somehow messed up. This fixes a crash if the
    default-search-engine and search-engines settings somehow become
    desynced.
    
    https://bugzilla.redhat.com/show_bug.cgi?id=1470287

:040000 040000 ebeeedc9585205c31334124d180b56622d0f71d6 10eb6a11fa0318b8f29a29ba95fe6fa2eccec750 M	lib
Comment 4 Michael Catanzaro 2017-09-09 16:45:45 UTC
The following fixes have been pushed:
51f0156 search-engine-manager: get_address() must return NULL
cc80324 search-provider: Simplify getting search engine address
Comment 5 Michael Catanzaro 2017-09-09 16:45:48 UTC
Created attachment 359443 [details] [review]
search-engine-manager: get_address() must return NULL

The search-engine-dialog relies on get_address() returning NULL to
detect new search engines. It doesn't function properly otherwise. All
code using this function just needs to be prepared to handle a NULL
address.

In contrast, get_address_for_default_engine() really does need to always
return a result. At least, it's more convenient this way, so that
calling code doesn't have to handle that manually. Rename the function
to make this more clear and reduce confusion, as it would be odd to have
two parallel functions function differently in this respect.
Comment 6 Michael Catanzaro 2017-09-09 16:45:52 UTC
Created attachment 359444 [details] [review]
search-provider: Simplify getting search engine address

We have a convenience function to get the default search address.