[question] valgrind stack trace under Native / i965



Hi,

While working to improve my reports on https://gitlab.gnome.org/GNOME/mutter/issues/18, 19 and 31, I've tried to run gnome-shell under valgrind.

Jonas Ådahl's suggestion in https://gitlab.gnome.org/GNOME/mutter/issues/31#note_56382 was good, and I've successfully reached a (quick but permanent) crash situation, even when running in non-hybrid GPU mode.

I've written a rather liberal suppressions file in order to ignore every writes made to memory mapped from the i965 GPU (attached here, fwiw)

The crash location is very reliably in "st_theme_get_custom_stylesheets (st-theme.c:311)" as called from _javascript_ code — unfortunately dump_gjs_stack_on_signal_handler() dies trying to report the JS stack.

It seems that st_theme_get_custom_stylesheets() at https://gitlab.gnome.org/GNOME/gnome-shell/blob/master/src/st/st-theme.c#L311 is attempting to check the type of an object which has already been allocated and de-allocated (the actual place of allocation/deallocation varies from run to run, but here are a few samples). Upon closer inspection, it actually looks like the themes->stylesheets g_hash_table's nodes got overwritten at some point.

My question is, what is the best course of action here?

  • non-trivially fixable valgrind false positive ⇒ drop?
  • mutter issue ⇒ report in the mutter project?
  • gnome-shell issue ⇒ report in the gnome-shell issue?

(my goal is to attempt to get meaningful clues to #18, #19 and possibly #31 in order to help with the search for a solution)

Thanks in advance!

    -- Cyrille

———————————

==6345== Invalid read of size 8
==6345==    at 0x5662C07: g_type_check_instance_is_fundamentally_a (gtype.c:4023)
==6345==    by 0x5641A7D: g_object_ref (gobject.c:3204)
==6345==    by 0x7ED7EFC: st_theme_get_custom_stylesheets (st-theme.c:311)
==6345==    by 0xB62FFCD: ffi_call_unix64 (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
==6345==    by 0xB62F93E: ffi_call (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
==6345==    by 0x6917ED7: ??? (in /usr/lib/libgjs.so.0.0.0)
==6345==    by 0x69197B3: ??? (in /usr/lib/libgjs.so.0.0.0)
==6345==    by 0xEB8AFDB: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==6345==    by 0xEB7E086: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==6345==    by 0xEB8A845: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==6345==    by 0xEB8AE1E: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==6345==    by 0xEB8B0F8: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==6345==  Address 0x2215f0a0 is 0 bytes inside a block of size 32 free'd
==6345==    at 0x4C2E2BB: operator delete(void*) (vg_replace_malloc.c:576)
==6345==    by 0x6926891: ??? (in /usr/lib/libgjs.so.0.0.0)
==6345==    by 0x566577F: g_value_unset (gvalue.c:275)
==6345==    by 0x56441FB: g_object_new_valist (gobject.c:2123)
==6345==    by 0x5644798: g_object_new (gobject.c:1640)
==6345==    by 0x6C3C120: create_child_meta (clutter-container.c:933)
==6345==    by 0x6C22D64: clutter_actor_add_child_internal (clutter-actor.c:12889)
==6345==    by 0x6C22D64: clutter_actor_add_child (clutter-actor.c:13024)
==6345==    by 0xB62FFCD: ffi_call_unix64 (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
==6345==    by 0xB62F93E: ffi_call (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
==6345==    by 0x6917ED7: ??? (in /usr/lib/libgjs.so.0.0.0)
==6345==    by 0x69197B3: ??? (in /usr/lib/libgjs.so.0.0.0)
==6345==    by 0xEB8AFDB: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==6345==  Block was alloc'd at
==6345==    at 0x4C2D1FF: operator new(unsigned long) (vg_replace_malloc.c:334)
==6345==    by 0x6926D90: ??? (in /usr/lib/libgjs.so.0.0.0)
==6345==    by 0x5641AF6: g_object_ref (gobject.c:3210)
==6345==    by 0x5641BA7: g_value_object_collect_value (gobject.c:3832)
==6345==    by 0x56443CA: g_object_new_valist (gobject.c:2106)
==6345==    by 0x5644798: g_object_new (gobject.c:1640)
==6345==    by 0x6C3C120: create_child_meta (clutter-container.c:933)
==6345==    by 0x6C22D64: clutter_actor_add_child_internal (clutter-actor.c:12889)
==6345==    by 0x6C22D64: clutter_actor_add_child (clutter-actor.c:13024)
==6345==    by 0xB62FFCD: ffi_call_unix64 (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
==6345==    by 0xB62F93E: ffi_call (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
==6345==    by 0x6917ED7: ??? (in /usr/lib/libgjs.so.0.0.0)
==6345==    by 0x69197B3: ??? (in /usr/lib/libgjs.so.0.0.0)


Another run:

==7769== Invalid read of size 8
==7769==    at 0x5662C0F: g_type_check_instance_is_fundamentally_a (gtype.c:4025)
==7769==    by 0x5641A7D: g_object_ref (gobject.c:3204)
==7769==    by 0x7ED7EFC: st_theme_get_custom_stylesheets (st-theme.c:311)
==7769==    by 0xB62FFCD: ffi_call_unix64 (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
==7769==    by 0xB62F93E: ffi_call (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
==7769==    by 0x6917ED7: ??? (in /usr/lib/libgjs.so.0.0.0)
==7769==    by 0x69197B3: ??? (in /usr/lib/libgjs.so.0.0.0)
==7769==    by 0xEB8AFDB: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==7769==    by 0xEB7E086: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==7769==    by 0xEB8A845: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==7769==    by 0xEB8AE1E: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==7769==    by 0xEB8B0F8: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==7769==  Address 0x21627490 is 0 bytes inside a block of size 8 free'd
==7769==    at 0x4C2DDBB: free (vg_replace_malloc.c:530)
==7769==    by 0x58EE8C9: g_string_free (gstring.c:219)
==7769==    by 0x13D97F8A: cr_string_destroy (in /usr/lib/x86_64-linux-gnu/libcroco-0.6.so.3.0.1)
==7769==    by 0x13D88DB8: cr_parser_parse_ruleset (in /usr/lib/x86_64-linux-gnu/libcroco-0.6.so.3.0.1)
==7769==    by 0x13D89F42: cr_parser_parse (in /usr/lib/x86_64-linux-gnu/libcroco-0.6.so.3.0.1)
==7769==    by 0x13D904FC: cr_om_parser_parse_buf (in /usr/lib/x86_64-linux-gnu/libcroco-0.6.so.3.0.1)
==7769==    by 0x13D90BE6: cr_om_parser_simply_parse_buf (in /usr/lib/x86_64-linux-gnu/libcroco-0.6.so.3.0.1)
==7769==    by 0x7ED724C: parse_stylesheet (st-theme.c:193)
==7769==    by 0x7ED7DF4: st_theme_load_stylesheet (st-theme.c:259)
==7769==    by 0xB62FFCD: ffi_call_unix64 (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
==7769==    by 0xB62F93E: ffi_call (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
==7769==    by 0x6917ED7: ??? (in /usr/lib/libgjs.so.0.0.0)
==7769==  Block was alloc'd at
==7769==    at 0x4C2EDAF: realloc (vg_replace_malloc.c:785)
==7769==    by 0x58D23BF: g_realloc (gmem.c:159)
==7769==    by 0x58EE7E6: g_string_maybe_expand (gstring.c:102)
==7769==    by 0x58EF22C: g_string_insert_unichar (gstring.c:852)
==7769==    by 0x13D7F9BC: ??? (in /usr/lib/x86_64-linux-gnu/libcroco-0.6.so.3.0.1)
==7769==    by 0x13D800A1: cr_tknzr_get_next_token (in /usr/lib/x86_64-linux-gnu/libcroco-0.6.so.3.0.1)
==7769==    by 0x13D820E5: cr_tknzr_parse_token (in /usr/lib/x86_64-linux-gnu/libcroco-0.6.so.3.0.1)
==7769==    by 0x13D854DA: ??? (in /usr/lib/x86_64-linux-gnu/libcroco-0.6.so.3.0.1)
==7769==    by 0x13D8763A: cr_parser_parse_declaration (in /usr/lib/x86_64-linux-gnu/libcroco-0.6.so.3.0.1)
==7769==    by 0x13D88D6A: cr_parser_parse_ruleset (in /usr/lib/x86_64-linux-gnu/libcroco-0.6.so.3.0.1)
==7769==    by 0x13D89F42: cr_parser_parse (in /usr/lib/x86_64-linux-gnu/libcroco-0.6.so.3.0.1)
==7769==    by 0x13D904FC: cr_om_parser_parse_buf (in /usr/lib/x86_64-linux-gnu/libcroco-0.6.so.3.0.1)

and another:
==8043== Invalid read of size 1
==8043==    at 0x5662C31: g_type_check_instance_is_fundamentally_a (gtype.c:4026)
==8043==    by 0x5641A7D: g_object_ref (gobject.c:3204)
==8043==    by 0x7ED7EFC: st_theme_get_custom_stylesheets (st-theme.c:311)
==8043==    by 0xB62FFCD: ffi_call_unix64 (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
==8043==    by 0xB62F93E: ffi_call (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
==8043==    by 0x6917ED7: ??? (in /usr/lib/libgjs.so.0.0.0)
==8043==    by 0x69197B3: ??? (in /usr/lib/libgjs.so.0.0.0)
==8043==    by 0xEB8AFDB: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==8043==    by 0xEB7E086: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==8043==    by 0xEB8A845: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==8043==    by 0xEB8AE1E: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==8043==    by 0xEB8B0F8: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==8043==  Address 0x69642d6c61646f80 is not stack'd, malloc'd or (recently) free'd

==8437== Invalid read of size 8
==8437==    at 0x5662C07: g_type_check_instance_is_fundamentally_a (gtype.c:4023)
==8437==    by 0x5641A7D: g_object_ref (gobject.c:3204)
==8437==    by 0x7ED7EFC: st_theme_get_custom_stylesheets (st-theme.c:311)
==8437==    by 0xB62FFCD: ffi_call_unix64 (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
==8437==    by 0xB62F93E: ffi_call (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
==8437==    by 0x6917ED7: ??? (in /usr/lib/libgjs.so.0.0.0)
==8437==    by 0x69197B3: ??? (in /usr/lib/libgjs.so.0.0.0)
==8437==    by 0xEB8AFDB: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==8437==    by 0xEB7E086: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==8437==    by 0xEB8A845: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==8437==    by 0xEB8AE1E: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==8437==    by 0xEB8B0F8: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==8437==  Address 0x3f3ec300 is 480 bytes inside an unallocated block of size 512 in arena "client"

==9324== Invalid read of size 8
==9324==    at 0x5662C07: g_type_check_instance_is_fundamentally_a (gtype.c:4023)
==9324==    by 0x5641A7D: g_object_ref (gobject.c:3204)
==9324==    by 0x7ED7EFC: st_theme_get_custom_stylesheets (st-theme.c:311)
==9324==    by 0xB62FFCD: ffi_call_unix64 (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
==9324==    by 0xB62F93E: ffi_call (in /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4)
==9324==    by 0x6917ED7: ??? (in /usr/lib/libgjs.so.0.0.0)
==9324==    by 0x69197B3: ??? (in /usr/lib/libgjs.so.0.0.0)
==9324==    by 0xEB8AFDB: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==9324==    by 0xEB7E086: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==9324==    by 0xEB8A845: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==9324==    by 0xEB8AE1E: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==9324==    by 0xEB8B0F8: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==9324==  Address 0x22c3b400 is 0 bytes inside a block of size 32 free'd
==9324==    at 0x4C2DDBB: free (vg_replace_malloc.c:530)
==9324==    by 0x691EA84: ??? (in /usr/lib/libgjs.so.0.0.0)
==9324==    by 0x6927807: ??? (in /usr/lib/libgjs.so.0.0.0)
==9324==    by 0xEB8AECC: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==9324==    by 0xEB8B0F8: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==9324==    by 0xEA1F553: JS_CallFunctionValue(JSContext*, JS::Handle<JSObject*>, JS::Handle<JS::Value>, JS::HandleValueArray const&, JS::MutableHandle<JS::Value>) (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==9324==    by 0x69411E5: gjs_call_function_value (in /usr/lib/libgjs.so.0.0.0)
==9324==    by 0x69262F5: ??? (in /usr/lib/libgjs.so.0.0.0)
==9324==    by 0xEB9082F: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==9324==    by 0xEB86031: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==9324==    by 0xEB8A845: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==9324==    by 0xEB8AE1E: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==9324==  Block was alloc'd at
==9324==    at 0x4C2CABF: malloc (vg_replace_malloc.c:298)
==9324==    by 0x4C2EE04: realloc (vg_replace_malloc.c:785)
==9324==    by 0x58D23BF: g_realloc (gmem.c:159)
==9324==    by 0x58EE7E6: g_string_maybe_expand (gstring.c:102)
==9324==    by 0x58EE841: g_string_sized_new (gstring.c:127)
==9324==    by 0x692AE54: gjs_hyphen_from_camel (in /usr/lib/libgjs.so.0.0.0)
==9324==    by 0x691EA4B: ??? (in /usr/lib/libgjs.so.0.0.0)
==9324==    by 0x6927807: ??? (in /usr/lib/libgjs.so.0.0.0)
==9324==    by 0xEB8AECC: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==9324==    by 0xEB8B0F8: ??? (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==9324==    by 0xEA1F553: JS_CallFunctionValue(JSContext*, JS::Handle<JSObject*>, JS::Handle<JS::Value>, JS::HandleValueArray const&, JS::MutableHandle<JS::Value>) (in /usr/lib/x86_64-linux-gnu/libmozjs-52.so.0.0.0)
==9324==    by 0x69411E5: gjs_call_function_value (in /usr/lib/libgjs.so.0.0.0)
==9324== 

Attachment: gnome-shell.supp
Description: Text document



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