Skip to content

bad weak ref #31

@matthiasclasen

Description

@matthiasclasen

When i close the simple-grid example, I get:

$ valgrind ./build/examples/simple-grid
==28422== Memcheck, a memory error detector
==28422== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==28422== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==28422== Command: ./build/examples/simple-grid
==28422==
==28422== Invalid write of size 8
==28422== at 0x62EAFE5: g_nullify_pointer (in /usr/lib64/libglib-2.0.so.0.5400.1)
==28422== by 0x602C41E: ??? (in /usr/lib64/libgobject-2.0.so.0.5400.1)
==28422== by 0x602EE5B: g_object_run_dispose (in /usr/lib64/libgobject-2.0.so.0.5400.1)
==28422== by 0x5178ABB: ??? (in /usr/lib64/libgtk-3.so.0.2200.24)
==28422== by 0x51C3C3D: ??? (in /usr/lib64/libgtk-3.so.0.2200.24)
==28422== by 0x6028650: g_closure_invoke (in /usr/lib64/libgobject-2.0.so.0.5400.1)
==28422== by 0x603B651: ??? (in /usr/lib64/libgobject-2.0.so.0.5400.1)
==28422== by 0x6043D04: g_signal_emit_valist (in /usr/lib64/libgobject-2.0.so.0.5400.1)
==28422== by 0x604466E: g_signal_emit (in /usr/lib64/libgobject-2.0.so.0.5400.1)
==28422== by 0x53E05AF: ??? (in /usr/lib64/libgtk-3.so.0.2200.24)
==28422== by 0x602EE5B: g_object_run_dispose (in /usr/lib64/libgobject-2.0.so.0.5400.1)
==28422== by 0x53EC958: ??? (in /usr/lib64/libgtk-3.so.0.2200.24)
==28422== Address 0x12f18d10 is 368 bytes inside a block of size 464 free'd
==28422== at 0x4C2ED18: free (vg_replace_malloc.c:530)
==28422== by 0x62BC4AD: g_free (in /usr/lib64/libglib-2.0.so.0.5400.1)
==28422== by 0x62D44EF: g_slice_free1 (in /usr/lib64/libglib-2.0.so.0.5400.1)
==28422== by 0x604D2A2: g_type_free_instance (in /usr/lib64/libgobject-2.0.so.0.5400.1)
==28422== by 0x4E43AED: emeus_constraint_layout_forall (emeus-constraint-layout.c:854)
==28422== by 0x51C3C3D: ??? (in /usr/lib64/libgtk-3.so.0.2200.24)
==28422== by 0x4E41EC1: emeus_constraint_layout_destroy (emeus-constraint-layout.c:239)
==28422== by 0x6028650: g_closure_invoke (in /usr/lib64/libgobject-2.0.so.0.5400.1)
==28422== by 0x603B651: ??? (in /usr/lib64/libgobject-2.0.so.0.5400.1)
==28422== by 0x6043D04: g_signal_emit_valist (in /usr/lib64/libgobject-2.0.so.0.5400.1)
==28422== by 0x604466E: g_signal_emit (in /usr/lib64/libgobject-2.0.so.0.5400.1)
==28422== by 0x53E05AF: ??? (in /usr/lib64/libgtk-3.so.0.2200.24)
==28422== Block was alloc'd at
==28422== at 0x4C2DB6B: malloc (vg_replace_malloc.c:299)
==28422== by 0x62BC398: g_malloc (in /usr/lib64/libglib-2.0.so.0.5400.1)
==28422== by 0x62D3F75: g_slice_alloc (in /usr/lib64/libglib-2.0.so.0.5400.1)
==28422== by 0x62D4408: g_slice_alloc0 (in /usr/lib64/libglib-2.0.so.0.5400.1)
==28422== by 0x604CFA0: g_type_create_instance (in /usr/lib64/libgobject-2.0.so.0.5400.1)
==28422== by 0x602DDB7: ??? (in /usr/lib64/libgobject-2.0.so.0.5400.1)
==28422== by 0x602FC2F: g_object_new_valist (in /usr/lib64/libgobject-2.0.so.0.5400.1)
==28422== by 0x602FFA8: g_object_new (in /usr/lib64/libgobject-2.0.so.0.5400.1)
==28422== by 0x4E46C6C: emeus_constraint_layout_child_new (emeus-constraint-layout.c:2242)
==28422== by 0x4E458C9: emeus_constraint_layout_pack (emeus-constraint-layout.c:1716)
==28422== by 0x40144A: build_grid (simple-grid.c:64)
==28422== by 0x401A7D: emeus_test_application_window_init (simple-grid.c:2

Taking out the

g_object_add_weak_pointer (G_OBJECT (layout), (gpointer*) &layout_child->solver);

in emeus_constraint_layout_pack makes this go away. I assume the children are already gone by the time the weak refs get cleaned up.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions