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 736583 - Segfault when showing turnPointMarker
Segfault when showing turnPointMarker
Status: RESOLVED FIXED
Product: gnome-maps
Classification: Applications
Component: general
git master
Other Linux
: Normal normal
: ---
Assigned To: gnome-maps-maint
gnome-maps-maint
Depends on:
Blocks:
 
 
Reported: 2014-09-12 18:40 UTC by Jonas Danielsson
Modified: 2015-08-15 20:55 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Do not destroy marker from signal handler (2.12 KB, patch)
2014-09-12 18:53 UTC, Jonas Danielsson
committed Details | Review

Description Jonas Danielsson 2014-09-12 18:40:48 UTC
To reproduce:

Search for a route.
Click a round between different instructions.

The log spews:

(gnome-maps:5793): Clutter-CRITICAL **: clutter_actor_set_pivot_point: assertion 'CLUTTER_IS_ACTOR (self)' failed

(gnome-maps:5793): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(gnome-maps:5793): Clutter-CRITICAL **: clutter_actor_remove_child: assertion 'CLUTTER_IS_ACTOR (child)' failed

(gnome-maps:5793): Clutter-CRITICAL **: clutter_actor_add_child: assertion 'CLUTTER_IS_ACTOR (child)' failed

(gnome-maps:5793): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(gnome-maps:5793): Clutter-CRITICAL **: clutter_actor_set_position: assertion 'CLUTTER_IS_ACTOR (self)' failed

(gnome-maps:5793): GLib-GObject-WARNING **: gsignal.c:2579: instance '0x8cec350' has no handler with id '11252'
Segmentation fault (core dumped)


Core trace:Core was generated by `src/gnome-maps'.
Program terminated with signal SIGSEGV, Segmentation fault.
  • #0 object_instance_trace
    at gi/object.cpp line 1383
  • #0 object_instance_trace
    at gi/object.cpp line 1383
  • #1 processMarkStackTop
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/gc/Marking.cpp line 1413
  • #2 js::GCMarker::drainMarkStack
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/gc/Marking.cpp line 1466
  • #3 DrainMarkStack
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/jsgc.cpp line 3779
  • #4 IncrementalCollectSlice
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/jsgc.cpp line 4264
  • #5 GCCycle
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/jsgc.cpp line 4422
  • #6 Collect
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/jsgc.cpp line 4558
  • #7 Collect
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/jsgc.cpp line 4491
  • #8 GCSlice
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/jsgc.cpp line 4594
  • #9 js::MaybeGC
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/jsgc.cpp line 1992
  • #10 JS_MaybeGC
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/jsapi.cpp line 2715
  • #11 gjs_schedule_gc_if_needed
  • #12 gjs_call_function_value
    at gjs/jsapi-util.cpp line 744
  • #13 gjs_object_instance_constructor
    at gi/object.cpp line 1348
  • #14 ??
  • #15 ??
  • #16 ??
  • #17 ??
  • #18 ??
  • #19 ??
  • #20 ??
  • #21 ??
  • #22 ??
  • #23 ??
  • #24 ??
  • #25 EnterBaseline
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/jit/BaselineJIT.cpp line 105
  • #26 EnterBaseline
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/jit/BaselineJIT.cpp line 81
  • #27 js::jit::EnterBaselineMethod
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/jit/BaselineJIT.cpp line 136
  • #28 js::RunScript
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/vm/Interpreter.cpp line 427
  • #29 js::Invoke
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/vm/Interpreter.cpp line 500
  • #30 js::Invoke
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/vm/Interpreter.cpp line 531
  • #31 JS_CallFunctionValue
  • #32 gjs_call_function_value
    at gjs/jsapi-util.cpp line 741
  • #33 gjs_object_instance_constructor
    at gi/object.cpp line 1348
  • #34 ??
  • #35 ??
  • #36 ??
  • #37 ??
  • #38 ??
  • #39 ??
  • #40 ??
  • #41 EnterBaseline
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/jit/BaselineJIT.cpp line 105
  • #42 EnterBaseline
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/jit/BaselineJIT.cpp line 81
  • #43 js::jit::EnterBaselineMethod
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/jit/BaselineJIT.cpp line 136
  • #44 js::RunScript
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/vm/Interpreter.cpp line 427
  • #45 js::Invoke
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/vm/Interpreter.cpp line 500
  • #46 js::CallOrConstructBoundFunction
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/jsfun.cpp line 1212
  • #47 CallJSNative
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/jscntxtinlines.h line 321
  • #48 js::Invoke
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/vm/Interpreter.cpp line 481
  • #49 js::Invoke
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/vm/Interpreter.cpp line 531
  • #50 JS_CallFunctionValue
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/jsapi.cpp line 5639
  • #51 gjs_call_function_value
    at gjs/jsapi-util.cpp line 741
  • #52 gjs_closure_invoke
    at gi/closure.cpp line 284
  • #53 closure_marshal
    at gi/value.cpp line 160
  • #54 g_closure_invoke
    at gclosure.c line 768
  • #55 signal_emit_unlocked_R
    at gsignal.c line 3553
  • #56 g_signal_emit_valist
    at gsignal.c line 3309
  • #57 g_signal_emit
    at gsignal.c line 3365
  • #58 gtk_list_box_select_row_internal
    at gtklistbox.c line 1487
  • #59 gtk_list_box_select_and_activate
    at gtklistbox.c line 1618
  • #60 gtk_list_box_multipress_gesture_released
    at gtklistbox.c line 1818
  • #61 ffi_call_SYSV
    from /usr/lib/i386-linux-gnu/libffi.so.6
  • #62 ffi_call
    from /usr/lib/i386-linux-gnu/libffi.so.6
  • #63 g_cclosure_marshal_generic_va
    at gclosure.c line 1541
  • #64 _g_closure_invoke_va
    at gclosure.c line 831
  • #65 g_signal_emit_valist
    at gsignal.c line 3218
  • #66 g_signal_emit
    at gsignal.c line 3365
  • #67 gtk_gesture_multi_press_end
    at gtkgesturemultipress.c line 273
  • #68 g_cclosure_marshal_VOID__BOXEDv
    at gmarshal.c line 1160
  • #69 g_type_class_meta_marshalv
    at gclosure.c line 988
  • #70 _g_closure_invoke_va
    at gclosure.c line 831
  • #71 g_signal_emit_valist
    at gsignal.c line 3218
  • #72 g_signal_emit
  • #73 _gtk_gesture_set_recognized
    at gtkgesture.c line 275
  • #74 _gtk_gesture_check_recognized
    at gtkgesture.c line 315
  • #75 gtk_gesture_handle_event
    at gtkgesture.c line 624
  • #76 gtk_gesture_single_handle_event
    at gtkgesturesingle.c line 218
  • #77 gtk_event_controller_handle_event
    at gtkeventcontroller.c line 214
  • #78 _gtk_widget_run_controllers
    at gtkwidget.c line 7430
  • #79 _gtk_marshal_BOOLEAN__BOXEDv
    at gtkmarshalers.c line 130
  • #80 g_type_class_meta_marshalv
    at gclosure.c line 988
  • #81 _g_closure_invoke_va
    at gclosure.c line 831
  • #82 g_signal_emit_valist
    at gsignal.c line 3218
  • #83 g_signal_emit
    at gsignal.c line 3365
  • #84 gtk_widget_event_internal
    at gtkwidget.c line 7775
  • #85 propagate_event_up
    at gtkmain.c line 2414
  • #86 propagate_event
    at gtkmain.c line 2522
  • #87 gtk_propagate_event
    at gtkmain.c line 2557
  • #88 gtk_main_do_event
    at gtkmain.c line 1748
  • #89 _gdk_event_emit
    at gdkevents.c line 69
  • #90 gdk_event_source_dispatch
    at gdkeventsource.c line 364
  • #91 g_main_dispatch
    at gmain.c line 3064
  • #92 g_main_context_dispatch
    at gmain.c line 3663
  • #93 g_main_context_iterate
    at gmain.c line 3734
  • #94 g_main_context_iteration
    at gmain.c line 3795
  • #95 g_application_run
    at gapplication.c line 2282
  • #96 ffi_call_SYSV
    from /usr/lib/i386-linux-gnu/libffi.so.6
  • #97 ffi_call
    from /usr/lib/i386-linux-gnu/libffi.so.6
  • #98 gjs_invoke_c_function
    at gi/function.cpp line 949
  • #99 function_call
    at gi/function.cpp line 1271
  • #100 CallJSNative
  • #101 js::Invoke
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/vm/Interpreter.cpp line 474
  • #102 Interpret
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/vm/Interpreter.cpp line 2298
  • #103 js::RunScript
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/vm/Interpreter.cpp line 438
  • #104 ExecuteKernel
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/vm/Interpreter.cpp line 622
  • #105 js::Execute
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/vm/Interpreter.cpp line 659
  • #106 JS::Evaluate
    at /home/jonas/checkout/gnome/js24-24.2.0/js/src/jsapi.cpp line 5443
  • #107 JS::Evaluate
  • #108 gjs_eval_with_scope
  • #109 gjs_context_eval
  • #110 main
    at main.c line 55

Comment 1 Jonas Danielsson 2014-09-12 18:53:57 UTC
Created attachment 286076 [details] [review]
Do not destroy marker from signal handler

This tries to prevent a segfault seen when calling destroy
in a signal handler. Instead destroy and re-create the marker
when showing a turnPointMarker.
Comment 2 Jonas Danielsson 2014-09-12 18:54:21 UTC
This needs testing. It might just be harder to reproduce with this approach.
Comment 3 Damián Nohales 2014-09-12 19:13:12 UTC
What I don't understand is why I cannot reproduce the bug by using key arrows to navigate around instruction list, I was hitting the key arrows for 3 minutes like an idiot without experience a crash. Undesirable luck.
Comment 4 Jonas Danielsson 2014-09-14 13:46:37 UTC
Comment on attachment 286076 [details] [review]
Do not destroy marker from signal handler

Attachment 286076 [details] pushed as 31adccf - Do not destroy marker from signal handler