Traces with Debug Info : This shows that ical component was freed by GC. Why GC is doing that ? and How to stop him ? So came up with a fix. Indeed GC releases the string ! So created a copy of the string which will be released by GC and the original string will be released when the object is destroyed / disposed. Fixed !! ==18720== ==18720== Thread 3: ==18720== Invalid free() / delete / delete[] ==18720== at 0x402243F: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so) ==18720== by 0x68D004A: icalvalue_free (icalvalue.c:712) ==18720== by 0x68C388D: icalproperty_free (icalproperty.c:234) ==18720== by 0x68BEEB7: icalcomponent_free (icalcomponent.c:240) ==18720== by 0x689792B: free_icalcomponent (e-cal-component.c:300) ==18720== by 0x689EDE5: e_cal_component_finalize (e-cal-component.c:389) ==18720== by 0x587B340: g_object_unref (gobject.c:1793) ==18720== by 0x62926BB: e_cal_glue_free_cal_component (e-cal-glue-comp.c:172) ==18720== by 0x7250D2B: ??? ==18720== by 0x7250CD2: ??? ==18720== by 0x7250C38: ??? ==18720== by 0x80F66B4: run_finalize (gc.c:115) ==18720== Address 0x42B9260 is 0 bytes inside a block of size 4 free'd ==18720== at 0x402243F: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so) ==18720== by 0x409E564: g_free (gmem.c:187) ==18720== by 0x80A5C19: mono_struct_delete_old (marshal.c:10619) ==18720== by 0x72500A8: ??? ==18720== by 0x7250056: ??? ==18720== by 0x724FEBB: ??? ==18720== by 0x7248F01: ??? ==18720== by 0x7247FA1: ??? ==18720== by 0x7247154: ??? ==18720== by 0x588DFCF: g_cclosure_marshal_VOID__POINTER (gmarshal.c:601) ==18720== by 0x58746A3: g_closure_invoke (gclosure.c:490) ==18720== by 0x588CD27: signal_emit_unlocked_R (gsignal.c:2510) Traces without Debug Info : ==6699== ==6699== Invalid free() / delete / delete[] ==6699== at 0x402243F: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so) ==6699== by 0x67E6BCA: icalvalue_free (in /usr/lib/libecal-1.2.so.7.0.2) ==6699== by 0x67DAE7D: icalproperty_free (in /usr/lib/libecal-1.2.so.7.0.2) ==6699== by 0x67D62E7: icalcomponent_free (in /usr/lib/libecal-1.2.so.7.0.2) ==6699== by 0x67AEC8B: (within /usr/lib/libecal-1.2.so.7.0.2) ==6699== by 0x67B6145: (within /usr/lib/libecal-1.2.so.7.0.2) ==6699== by 0x56C1BFA: g_object_unref (in /usr/lib/libgobject-2.0.so.0.1400.1) ==6699== by 0x5D336BB: e_cal_glue_free_cal_component (e-cal-glue-comp.c:172) ==6699== by 0x7168F23: ??? ==6699== by 0x7168DF6: ??? ==6699== by 0x7168D28: ??? ==6699== by 0x80F66B4: (within /usr/bin/mono) ==6699== Address 0x42CD1D8 is 0 bytes inside a block of size 4 free'd ==6699== at 0x402243F: free (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so) ==6699== by 0x408ABD0: g_free (in /usr/lib/libglib-2.0.so.0.1400.1) ==6699== by 0x80A5C19: (within /usr/bin/mono) ==6699== by 0x71680F8: ??? ==6699== by 0x71680A6: ??? ==6699== by 0x7167EF3: ??? ==6699== by 0x7160F11: ??? ==6699== by 0x715FFA1: ??? ==6699== by 0x715F154: ??? ==6699== by 0x56CC189: g_cclosure_marshal_VOID__POINTER (in /usr/lib/libgobject-2.0.so.0.1400.1) ==6699== by 0x56BF918: g_closure_invoke (in /usr/lib/libgobject-2.0.so.0.1400.1) ==6699== by 0x56D2D95: (within /usr/lib/libgobject-2.0.so.0.1400.1)