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 697890 - g_hash_table_foreach: assertion `version == hash_table->version' failed
g_hash_table_foreach: assertion `version == hash_table->version' failed
Status: RESOLVED FIXED
Product: nautilus
Classification: Core
Component: general
3.8.x
Other Linux
: Normal normal
: ---
Assigned To: Nautilus Maintainers
Nautilus Maintainers
Depends on:
Blocks:
 
 
Reported: 2013-04-12 15:37 UTC by Adam Dingle
Modified: 2014-02-17 23:46 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Adam Dingle 2013-04-12 15:37:25 UTC
I'm running Nautilus from git master on Ubuntu 13.04.

To see the problem:

1. Run Nautilus from a terminal.
2. In gedit, choose File->Open to open a file open dialog, then press Cancel to close the dialog.
3. Nautilus will emit an assertion:

(nautilus:14748): GLib-CRITICAL **: g_hash_table_foreach: assertion `version == hash_table->version' failed

The assertion is not fatal; Nautilus keeps running.  We should nevertheless investigate and fix this.

A stack trace is below.  It appears that some gsettings keys are changing when the dialog closes and that Nautilus is attempting to react to that.

  • #0 g_logv
    at /build/buildd/glib2.0-2.36.0/./glib/gmessages.c line 981
  • #1 g_log
    at /build/buildd/glib2.0-2.36.0/./glib/gmessages.c line 1010
  • #2 g_closure_invoke
    at /build/buildd/glib2.0-2.36.0/./gobject/gclosure.c line 777
  • #3 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.36.0/./gobject/gsignal.c line 3584
  • #4 g_signal_emit_valist
    at /build/buildd/glib2.0-2.36.0/./gobject/gsignal.c line 3328
  • #5 g_signal_emit
    at /build/buildd/glib2.0-2.36.0/./gobject/gsignal.c line 3384
  • #6 g_settings_real_change_event
    at /build/buildd/glib2.0-2.36.0/./gio/gsettings.c line 288
  • #7 ffi_call_unix64
    from /usr/lib/x86_64-linux-gnu/libffi.so.6
  • #8 ffi_call
    from /usr/lib/x86_64-linux-gnu/libffi.so.6
  • #9 g_cclosure_marshal_generic_va
    at /build/buildd/glib2.0-2.36.0/./gobject/gclosure.c line 1550
  • #10 _g_closure_invoke_va
    at /build/buildd/glib2.0-2.36.0/./gobject/gclosure.c line 840
  • #11 g_signal_emit_valist
    at /build/buildd/glib2.0-2.36.0/./gobject/gsignal.c line 3234
  • #12 g_signal_emit
    at /build/buildd/glib2.0-2.36.0/./gobject/gsignal.c line 3384
  • #13 settings_backend_keys_changed
    at /build/buildd/glib2.0-2.36.0/./gio/gsettings.c line 404
  • #14 g_settings_backend_invoke_closure
    at /build/buildd/glib2.0-2.36.0/./gio/gsettingsbackend.c line 271
  • #15 g_main_dispatch
    at /build/buildd/glib2.0-2.36.0/./glib/gmain.c line 3054
  • #16 g_main_context_dispatch
    at /build/buildd/glib2.0-2.36.0/./glib/gmain.c line 3630
  • #17 g_main_context_iterate
    at /build/buildd/glib2.0-2.36.0/./glib/gmain.c line 3701
  • #18 g_main_context_iteration
    at /build/buildd/glib2.0-2.36.0/./glib/gmain.c line 3762
  • #19 g_application_run
    at /build/buildd/glib2.0-2.36.0/./gio/gapplication.c line 1623
  • #20 main
    at nautilus-main.c line 104

Comment 1 Jussi Kukkonen 2013-11-24 22:41:06 UTC
It's this call in NautilusDirectory filtering_changed_callback():

	g_hash_table_foreach (directories, invalidate_one_count, NULL);

I don't immediately see what in invalidate_one_count would modify the hashtable but that seems to  be what happens.

Another questions is, why does gsettings think "show-hidden" is changing when Gedit FileChooser is closed?
Comment 2 Cosimo Cecchi 2014-02-17 23:46:14 UTC
Thanks, I pushed a fix for this to git master now.