Uninitialized memory read during picking since the introduction of update_pointer_if_not_animated()
Since !3168 (merged) I'm seeing a couple of these when running with valgrind. This was with animations enabled.
==55301== Conditional jump or move depends on uninitialised value(s)
==55301== at 0x50A6479: _clutter_stage_do_pick (clutter-stage.c:1148)
==55301== by 0x50A9B85: clutter_stage_pick_and_update_device (clutter-stage.c:3574)
==55301== by 0x50A9EC8: clutter_stage_repick_device (clutter-stage.c:3516)
==55301== by 0x5057F47: update_pointer_if_not_animated (clutter-actor.c:2458)
==55301== by 0x5057F47: clutter_actor_set_translation_internal (clutter-actor.c:4343)
==55301== by 0x5057F47: clutter_actor_set_animatable_property (clutter-actor.c:12645)
==55301== by 0x505A35D: _clutter_actor_create_transition (clutter-actor.c:17095)
==55301== by 0x4E2586C: object_set_property (gobject.c:1811)
==55301== by 0x4E284D2: g_object_setv (gobject.c:2722)
==55301== by 0x4E284D2: g_object_setv (gobject.c:2693)
==55301== by 0x4E2961C: g_object_set_property (gobject.c:3022)
==55301== by 0x4F0B220: ObjectInstance::prop_setter_impl(JSContext*, JS::Handle<JSString*>, JS::Handle<JS::Value>) (object.cpp:504)
==55301== Conditional jump or move depends on uninitialised value(s)
==55301== at 0x50A6301: clutter_stage_get_view_at (clutter-stage.c:1114)
==55301== by 0x50A64A7: _clutter_stage_do_pick (clutter-stage.c:1151)
==55301== by 0x50A9B85: clutter_stage_pick_and_update_device (clutter-stage.c:3574)
==55301== by 0x50A9EC8: clutter_stage_repick_device (clutter-stage.c:3516)
==55301== by 0x5057F47: update_pointer_if_not_animated (clutter-actor.c:2458)
==55301== by 0x5057F47: clutter_actor_set_translation_internal (clutter-actor.c:4343)
==55301== by 0x5057F47: clutter_actor_set_animatable_property (clutter-actor.c:12645)
==55301== by 0x505A35D: _clutter_actor_create_transition (clutter-actor.c:17095)
==55301== by 0x4E2586C: object_set_property (gobject.c:1811)
==55301== by 0x4E284D2: g_object_setv (gobject.c:2722)
==55301== by 0x4E284D2: g_object_setv (gobject.c:2693)
==55301== by 0x4E2961C: g_object_set_property (gobject.c:3022)
==55301== by 0x4F0B220: ObjectInstance::prop_setter_impl(JSContext*, JS::Handle<JSString*>, JS::Handle<JS::Value>) (object.cpp:504)
(Similar for lines 1115 and 1116)
==55301== Conditional jump or move depends on uninitialised value(s)
==55301== at 0x58C42F0: graphene_vec3_normalize (graphene-vectors.c:940)
==55301== by 0x50A65A1: setup_ray_for_coordinates (clutter-stage.c:1063)
==55301== by 0x50A65A1: _clutter_stage_do_pick_on_view (clutter-stage.c:1085)
==55301== by 0x50A65A1: _clutter_stage_do_pick (clutter-stage.c:1153)
==55301== by 0x50A9B85: clutter_stage_pick_and_update_device (clutter-stage.c:3574)
==55301== by 0x50A9EC8: clutter_stage_repick_device (clutter-stage.c:3516)
==55301== by 0x5057F47: update_pointer_if_not_animated (clutter-actor.c:2458)
==55301== by 0x5057F47: clutter_actor_set_translation_internal (clutter-actor.c:4343)
==55301== by 0x5057F47: clutter_actor_set_animatable_property (clutter-actor.c:12645)
==55301== by 0x505A35D: _clutter_actor_create_transition (clutter-actor.c:17095)
==55301== by 0x4E2586C: object_set_property (gobject.c:1811)
==55301== by 0x4E284D2: g_object_setv (gobject.c:2722)
==55301== by 0x4E284D2: g_object_setv (gobject.c:2693)
==55301== by 0x4E2961C: g_object_set_property (gobject.c:3022)
==55301== by 0x4F0B220: ObjectInstance::prop_setter_impl(JSContext*, JS::Handle<JSString*>, JS::Handle<JS::Value>) (object.cpp:504)
==55301== Conditional jump or move depends on uninitialised value(s)
==55301== at 0x50A6479: _clutter_stage_do_pick (clutter-stage.c:1148)
==55301== by 0x50A9B85: clutter_stage_pick_and_update_device (clutter-stage.c:3574)
==55301== by 0x50A9EC8: clutter_stage_repick_device (clutter-stage.c:3516)
==55301== by 0x50A87A8: clutter_stage_update_view_perspective (clutter-stage.c:2385)
==55301== by 0x50A87A8: clutter_stage_set_viewport (clutter-stage.c:1807)
==55301== by 0x50A8941: clutter_stage_allocate (clutter-stage.c:339)
==55301== by 0x5049790: clutter_actor_allocate_internal (clutter-actor.c:8649)
==55301== by 0x5057D62: clutter_actor_set_animatable_property (clutter-actor.c:12618)
==55301== by 0x505A35D: _clutter_actor_create_transition (clutter-actor.c:17095)
==55301== by 0x505D318: clutter_actor_allocate (clutter-actor.c:8777)
==55301== by 0x505DA8B: clutter_actor_allocate_preferred_size (clutter-actor.c:13188)
==55301== by 0x50A80DA: clutter_stage_maybe_relayout (clutter-stage.c:897)
==55301== by 0x50A8262: clutter_stage_show (clutter-stage.c:583)
==55301== Conditional jump or move depends on uninitialised value(s)
==55301== at 0x58C42F0: graphene_vec3_normalize (graphene-vectors.c:940)
==55301== by 0x58C164A: graphene_ray_init_from_vec3 (graphene-ray.c:161)
==55301== by 0x5096B28: clutter_pick_context_new_for_view (clutter-pick-context.c:50)
==55301== by 0x50A65E8: _clutter_stage_do_pick_on_view (clutter-stage.c:1087)
==55301== by 0x50A65E8: _clutter_stage_do_pick (clutter-stage.c:1153)
==55301== by 0x50A9B85: clutter_stage_pick_and_update_device (clutter-stage.c:3574)
==55301== by 0x50A9EC8: clutter_stage_repick_device (clutter-stage.c:3516)
==55301== by 0x50A87A8: clutter_stage_update_view_perspective (clutter-stage.c:2385)
==55301== by 0x50A87A8: clutter_stage_set_viewport (clutter-stage.c:1807)
==55301== by 0x50A8941: clutter_stage_allocate (clutter-stage.c:339)
==55301== by 0x5049790: clutter_actor_allocate_internal (clutter-actor.c:8649)
==55301== by 0x5057D62: clutter_actor_set_animatable_property (clutter-actor.c:12618)
==55301== by 0x505A35D: _clutter_actor_create_transition (clutter-actor.c:17095)
==55301== by 0x505D318: clutter_actor_allocate (clutter-actor.c:8777)
==55301== Conditional jump or move depends on uninitialised value(s)
==55301== at 0x50A6479: _clutter_stage_do_pick (clutter-stage.c:1148)
==55301== by 0x50A9B85: clutter_stage_pick_and_update_device (clutter-stage.c:3574)
==55301== by 0x50A9D70: clutter_stage_maybe_invalidate_focus (clutter-stage.c:2969)
==55301== by 0x4E2586C: object_set_property (gobject.c:1811)
==55301== by 0x4E284D2: g_object_setv (gobject.c:2722)
==55301== by 0x4E284D2: g_object_setv (gobject.c:2693)
==55301== by 0x4E2961C: g_object_set_property (gobject.c:3022)
==55301== by 0x4F0B220: ObjectInstance::prop_setter_impl(JSContext*, JS::Handle<JSString*>, JS::Handle<JS::Value>) (object.cpp:504)
==55301== Conditional jump or move depends on uninitialised value(s)
==55301== at 0x58C42F0: graphene_vec3_normalize (graphene-vectors.c:940)
==55301== by 0x50A65A1: setup_ray_for_coordinates (clutter-stage.c:1063)
==55301== by 0x50A65A1: _clutter_stage_do_pick_on_view (clutter-stage.c:1085)
==55301== by 0x50A65A1: _clutter_stage_do_pick (clutter-stage.c:1153)
==55301== by 0x50A9B85: clutter_stage_pick_and_update_device (clutter-stage.c:3574)
==55301== by 0x50A9D70: clutter_stage_maybe_invalidate_focus (clutter-stage.c:2969)
==55301== by 0x4E2586C: object_set_property (gobject.c:1811)
==55301== by 0x4E284D2: g_object_setv (gobject.c:2722)
==55301== by 0x4E284D2: g_object_setv (gobject.c:2693)
==55301== by 0x4E2961C: g_object_set_property (gobject.c:3022)
==55301== by 0x4F0B220: ObjectInstance::prop_setter_impl(JSContext*, JS::Handle<JSString*>, JS::Handle<JS::Value>) (object.cpp:504)
There are quite a lot more places where this gets called from or ends up using uninitialized memory.