http://bugzilla.moblin.org/show_bug.cgi?id=7857
pohly <patrick.ohly(a)intel.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|Undecided |P2
Status|NEW |ASSIGNED
--- Comment #4 from pohly <patrick.ohly(a)intel.com> 2009-11-10 01:40:32 PST ---
(In reply to comment #3)
> This points towards libical-internal memory handling. Running
the binary under
> valgrind would provide more information. If you have such packages, can you
> also install -debug or -dbg packages for libecal and/or evolution-data-server
> before running valgrind?
I've attached the output from valgrind using the normal packages, CentOS does
not seem to provide packages with debug info. I'll try to build them from
scratch.
Not necessary, the valgrind output points towards a problem: libical inside
your version of libecal seems to use the older memory handling (strings owned
by libical) whereas SyncEvolution/libsynthesis seem to believe the new handling
is in use (strings owned and freed by caller).
Thus the invalid free. First in
libsynthesis/src/platform_adapters/linux/platform_timezones.cpp:
==10651== Address 0x5951F28 is 0 bytes inside a block of size 200 free'd
==10651== at 0x4A0541E: free (vg_replace_malloc.c:233)
==10651== by 0x4D35C7A: sysync::loadSystemZoneDefinitions(sysync::GZones*)
(platform_timezones.cpp:188)
Then in libical:
==10651== at 0x4A0541E: free (vg_replace_malloc.c:233)
==10651== by 0x3702E69169: icalmemory_add_tmp_buffer (in
/usr/lib64/libecal-1.2.so.7.0.2)
==10651== by 0x3702E69215: icalmemory_tmp_buffer (in
/usr/lib64/libecal-1.2.so.7.0.2)
platform_timezones.cpp should support both memory handling models. Detecting it
is a bit convoluted because upstream libical changed back to the older model
later on and introduced new _p calls instead.
You did not configure with --enable-evolution-compatibility, did you? In that
case the check is done at compile time, depending on LIBICAL_MEMFIXES being
defined by libical.h.
Ah, that's it:
# ifdef LIBICAL_MEMFIXES
// new-style Evolution libical: memory must be freed by caller
# define ICAL_FREE(_x) free(_x)
# else
# define ICAL_FREE(_x) free(_x)
# endif
The second define should be
# else
# define ICAL_FREE(_x)
# endif
Can you recompile with that fix and try again?
--
Configure bugmail:
http://bugzilla.moblin.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching someone on the CC list of the bug.