Bug#742493: [Pkg-postgresql-public] Bug#742493: Bug#742493: pgmemcache segfaults with libmemcached11
Hi, http://bazaar.launchpad.net/~tangent-trunk/libmemcached/1.0/revision/1121.1.13 You're misreading the change. Basically libmemcached stopped using the custom memory allocator and changed to using malloc unconditionally, breaking backwards compatibility. Before the change it used the custom memory allocator which in our case was palloc. - Hannu On 8.5.2014 16.32, Christoph Berg wrote: Re: To Hannu Valtonen 2014-05-02 <20140502135529.gb14...@msgid.df7cb.de> Re: Hannu Valtonen 2014-05-02 <53639ce0.30...@ohmu.fi> Hi, This has now been fixed by: https://github.com/ohmu/pgmemcache/commit/47623a545be485d6dd1ffb917e990d267ad57f35 Hi, we've had a closer look at this patch. Assuming pfree() is PostgreSQL's free() variant (which I believe it is), it looks like using pfree() was wrong in the first place, and the standard libc free() should be used, whatever libmemcached version is used. I think the following patch does the right thing: Index: pgmemcache/pgmemcache.c === --- pgmemcache.orig/pgmemcache.c2014-05-08 15:25:30.260692035 +0200 +++ pgmemcache/pgmemcache.c 2014-05-08 15:27:13.164195600 +0200 @@ -818,10 +818,10 @@ static memcached_return_t server_stat_fu { char *value = memcached_stat_get_value(ptr, &stat, *stat_ptr, &rc); appendStringInfo(context, "%s: %s\n", *stat_ptr, value); - libmc_stat_free(value); + free(value); } - pfree(list); + free(list); return MEMCACHED_SUCCESS; } Index: pgmemcache/pgmemcache.h === --- pgmemcache.orig/pgmemcache.h2014-05-08 15:25:30.260692035 +0200 +++ pgmemcache/pgmemcache.h 2014-05-08 15:27:13.224195312 +0200 @@ -36,13 +36,6 @@ #undef PACKAGE_TARNAME #undef PACKAGE_VERSION -/* libmemcached 1.0.16 changed the allocation function for values returned from memcached_stat_get_value */ -#if LIBMEMCACHED_VERSION_HEX >= 0x0116 - #define libmc_stat_free free -#else - #define libmc_stat_free pfree -#endif - void _PG_init(void); void _PG_fini(void); Do you plan to release a new version, or should I apply the patch to the current version in Debian for now? Christoph -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Bug#742493: pgmemcache segfaults with libmemcached11
Hi, This has now been fixed by: https://github.com/ohmu/pgmemcache/commit/47623a545be485d6dd1ffb917e990d267ad57f35 - Hannu On 2.4.2014 19.02, Christoph Berg wrote: Hi, when rebuilt with libmemcached11, pgmemcache in Debian started to segfault. It worked with libmemcached10 before. I'm not sure whose fault this is - pgmemcache or libmemcached, or possibly both. Hannu, Michael, could you have a look at this? (Unforatunately I couldn't find an email for libmemcached, just the launchpad tracker.) - Forwarded message from Christoph Berg - Date: Mon, 24 Mar 2014 13:32:05 +0100 From: Christoph Berg Reply-To: Christoph Berg , 742...@bugs.debian.org To: Debian Bug Tracking System Subject: Bug#742493: Segfault with libmemcached11 X-Debian-PR-Message: report 742493 X-Debian-PR-Package: postgresql-9.3-pgmemcache X-Debian-PR-Keywords: X-Debian-PR-Source: pgmemcache Package: postgresql-9.3-pgmemcache Version: 2.1.2-1+b1 Severity: grave The binnum to update the dependency from libmemcached10 to libmemcached11 seems to have broken the PostgreSQL module: http://ci.debian.net/data/unstable-amd64/packages/p/pgmemcache/2014-03-23.log Also in my chroot: test init ... ok test start_memcached ... ok test test ... FAILED (test process exited with exit code 2) test stop_memcached ... ok 2014-03-24 13:16:05 CET LOG: Serverprozess (PID 25224) wurde von Signal 11 beendet: Segmentation fault 2014-03-24 13:16:05 CET DETAIL: Der fehlgeschlagene Prozess führte aus: SELECT regexp_replace(memcache_stats(), 'pid:.*', '') AS memcache_stats; 2014-03-24 13:16:05 CET LOG: aktive Serverprozesse werden abgebrochen 2014-03-24 13:16:05 CET WARNUNG: breche Verbindung ab wegen Absturz eines anderen Serverprozesses 2014-03-24 13:16:05 CET DETAIL: Der Postmaster hat diesen Serverprozess angewiesen, die aktuelle Transaktion zurückzurollen und die Sitzung zu beenden, weil ein anderer Serverprozess abnormal beendet wurde und möglicherweise das Shared Memory verfälscht hat. ! psql:test.sql:2: SSL SYSCALL error: EOF detected ! psql:test.sql:2: connection to server was lost Christoph -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org