+++ This bug was initially created as a clone of Bug #1347715 +++ +++ This bug was initially created as a clone of Bug #1344714 +++ Description of problem: The struct callback_inode_arg is a variable used by upcall infra for populating upcall entries. This variable is allocated using GF_CALLOC in glfs_h_poll_cache_invalidation(), but it also freedin FSAL_GLUSTER using free. This will result in a crash when we try to remove a file from mount Version-Release number of selected component (if applicable): mainline How reproducible: Steps to Reproduce: 1. enable nfs-ganesha and export a volume 2. mount the volume 3. create a file and delete it from the mount Actual results: ganesha server crashes Expected results: should not crash Additional info: --- Additional comment from Vijay Bellur on 2016-06-10 09:17:53 EDT --- REVIEW: http://review.gluster.org/14701 (libgfapi : Introducing glfs_free() api) posted (#1) for review on master by jiffin tony Thottan (jthottan) --- Additional comment from Vijay Bellur on 2016-06-10 09:17:56 EDT --- REVIEW: http://review.gluster.org/14702 (libgfapi/upcall : appending glfs to callback_arg, callback_inode_arg) posted (#1) for review on master by jiffin tony Thottan (jthottan) --- Additional comment from Vijay Bellur on 2016-06-10 16:57:16 EDT --- REVIEW: http://review.gluster.org/14702 (libgfapi/upcall : prepend "glfs_" to callback_arg, callback_inode_arg) posted (#2) for review on master by Jeff Darcy (jdarcy) --- Additional comment from Vijay Bellur on 2016-06-10 17:09:37 EDT --- COMMIT: http://review.gluster.org/14702 committed in master by Jeff Darcy (jdarcy) ------ commit 2775dc64101ed37c8d9809bf9852dbf0746ee2b6 Author: Jiffin Tony Thottan <jthottan> Date: Fri Jun 10 18:23:43 2016 +0530 libgfapi/upcall : prepend "glfs_" to callback_arg, callback_inode_arg Change-Id: I371525775db4f6a4d69beb94baaa53d17b16fb41 BUG: 1344714 Signed-off-by: Jiffin Tony Thottan <jthottan> Reviewed-on: http://review.gluster.org/14702 CentOS-regression: Gluster Build System <jenkins.com> NetBSD-regression: NetBSD Build System <jenkins.org> Reviewed-by: Jeff Darcy <jdarcy> Tested-by: Jeff Darcy <jdarcy> Smoke: Gluster Build System <jenkins.com> --- Additional comment from Vijay Bellur on 2016-06-14 04:58:05 EDT --- REVIEW: http://review.gluster.org/14701 (libgfapi : Introducing glfs_free_callback_inode_arg() api) posted (#2) for review on master by jiffin tony Thottan (jthottan) --- Additional comment from Vijay Bellur on 2016-06-14 06:14:16 EDT --- REVIEW: http://review.gluster.org/14701 (libgfapi : Introducing glfs_free_callback_inode_arg() api) posted (#3) for review on master by jiffin tony Thottan (jthottan) --- Additional comment from Vijay Bellur on 2016-06-16 09:28:10 EDT --- REVIEW: http://review.gluster.org/14701 (libgfapi : Introducing glfs_free_callback_inode_arg() api) posted (#4) for review on master by jiffin tony Thottan (jthottan) --- Additional comment from Vijay Bellur on 2016-06-16 09:30:18 EDT --- REVIEW: http://review.gluster.org/14701 (libgfapi : Introducing glfs_free_callback_inode_arg() api) posted (#5) for review on master by jiffin tony Thottan (jthottan) --- Additional comment from Vijay Bellur on 2016-06-16 09:41:28 EDT --- REVIEW: http://review.gluster.org/14701 (libgfapi : free glfs_callback_inode_arg from application layer) posted (#6) for review on master by jiffin tony Thottan (jthottan) --- Additional comment from Vijay Bellur on 2016-06-17 08:46:07 EDT --- REVIEW: http://review.gluster.org/14759 (libgfapi/upcall : use calloc and free for callback_inode_arg) posted (#1) for review on master by jiffin tony Thottan (jthottan)
All 3.8.x bugs are now reported against version 3.8 (without .x). For more information, see http://www.gluster.org/pipermail/gluster-devel/2016-September/050859.html
*** Bug 1378949 has been marked as a duplicate of this bug. ***
REVIEW: http://review.gluster.org/15639 (libglusterfs: add gf_get_mem_type()) posted (#1) for review on release-3.8 by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/15640 (gfapi: redesign the public interface for upcall consumers) posted (#1) for review on release-3.8 by Niels de Vos (ndevos)
COMMIT: http://review.gluster.org/15639 committed in release-3.8 by Niels de Vos (ndevos) ------ commit 8d1b94f6e43175df60ca9067db1811997d3ef4fc Author: Niels de Vos <ndevos> Date: Fri Oct 14 12:49:29 2016 +0200 libglusterfs: add gf_get_mem_type() gfapi needs to provide a function towards applications to free memory that it allocated. Depending on how the application is compiled/linked, it could use a different memory allocator than Gluster itself. Therefore it is not safe for gfapi to request applications to free memory with 'standard' free(). Examples for this are Gluster allocated structures with GF_CALLOC() when memory accounting is enabled (the default). Some gfapi functions use malloc() to allocate memory as a workaround, but the free() from the jemalloc implementation should not be combined with the malloc() from glibc. Cherry picked from commit db4e26ed71a01e5f760fbc3c7051962426f102c9: > Change-Id: I626cd1a60abf8965f9263290f4045d1f69fc2093 > BUG: 1344714 > Signed-off-by: Niels de Vos <ndevos> > Reviewed-on: http://review.gluster.org/15108 > Smoke: Gluster Build System <jenkins.org> > Reviewed-by: soumya k <skoduri> > Reviewed-by: jiffin tony Thottan <jthottan> > NetBSD-regression: NetBSD Build System <jenkins.org> > CentOS-regression: Gluster Build System <jenkins.org> > Reviewed-by: Shyamsundar Ranganathan <srangana> This also includes commit da2aabe3 which fixes an unused variable warning. Change-Id: I626cd1a60abf8965f9263290f4045d1f69fc2093 BUG: 1347717 Signed-off-by: Niels de Vos <ndevos> Reviewed-on: http://review.gluster.org/15639 Smoke: Gluster Build System <jenkins.org> NetBSD-regression: NetBSD Build System <jenkins.org> CentOS-regression: Gluster Build System <jenkins.org> Reviewed-by: jiffin tony Thottan <jthottan>
REVIEW: http://review.gluster.org/15680 (gfapi: add glfs_free() to glfs.h) posted (#1) for review on release-3.8 by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/15640 (gfapi: redesign the public interface for upcall consumers) posted (#2) for review on release-3.8 by Niels de Vos (ndevos)
COMMIT: http://review.gluster.org/15640 committed in release-3.8 by Niels de Vos (ndevos) ------ commit 5bc41576647dd7f0e201e7e2951cf75702d8b623 Author: Niels de Vos <ndevos> Date: Wed Oct 19 12:55:30 2016 +0200 gfapi: redesign the public interface for upcall consumers The glfs_callback_arg and glfs_callback_inode_arg were allocated by gfapi, and expected to be free()'d by the application. However it is not reasonable to expect that applications use the same memory allocator to as the compiled libgfapi.so. For instance, it is possible that gfapi uses glibc malloc/free, and an application like NFS-Ganesha the versions from jemalloc. Mismatching of the malloc() and free() functions causes segmentation faults at best. In order to prevent problems like this in the future, the API for applications that consume upcalls has been remodeled. Any of the structures that gfapi allocates, should be free'd with glfs_free(). The members of the structures can not be accessed directly anymore, each has its own function to access now. Correcting the naming of the functions, structures and constants is a continuation of commit 2775dc64101ed37c8d9809bf9852dbf0746ee2b6. These new improvements not only have correct prefixes for the functions and structures, the naming also reflects more to the upcall framework and does not use "callback" anymore. Cherry picked from commit 4721188a154acd9a0a4c096d8d73e97f3bf1b2a9: > Change-Id: I2b8bd5a0a82036d2abea1a217f5e5975a1d4fe93 > BUG: 1344714 > Signed-off-by: Niels de Vos <ndevos> > Reviewed-on: http://review.gluster.org/14701 > Smoke: Gluster Build System <jenkins.org> > NetBSD-regression: NetBSD Build System <jenkins.org> > CentOS-regression: Gluster Build System <jenkins.org> > Reviewed-by: Kaleb KEITHLEY <kkeithle> > Reviewed-by: soumya k <skoduri> > Reviewed-by: jiffin tony Thottan <jthottan> For the ease of backporting, this patch also includes the (mostly overwritten) changes from commit 2775dc64. Change-Id: I2b8bd5a0a82036d2abea1a217f5e5975a1d4fe93 BUG: 1347717 Signed-off-by: Niels de Vos <ndevos> Reviewed-on: http://review.gluster.org/15640 Smoke: Gluster Build System <jenkins.org> NetBSD-regression: NetBSD Build System <jenkins.org> Reviewed-by: Kaleb KEITHLEY <kkeithle> CentOS-regression: Gluster Build System <jenkins.org>
REVIEW: http://review.gluster.org/15680 (gfapi: add glfs_free() to glfs.h) posted (#2) for review on release-3.8 by Niels de Vos (ndevos)
COMMIT: http://review.gluster.org/15680 committed in release-3.8 by Niels de Vos (ndevos) ------ commit a5bf3c3a586ccf20f5f735968ec9a56d33f62326 Author: Niels de Vos <ndevos> Date: Wed Oct 19 12:33:35 2016 +0200 gfapi: add glfs_free() to glfs.h Commit 4721188a154acd9a0a4c096d8d73e97f3bf1b2a9 introduces glfs_free() but missed adding the function to the header. The symbol is correctly available in the library though. Testcases do not seem to fail when a function is missing for the headers... The glusterfs-3.7.16 packages have been released with the missing declaration in the header and symbol-maps. Still, the function is available for applications: $ objdump -T usr/lib64/libgfapi.so.0 | grep -w glfs_free 0000000000006aa0 g DF .text 0000000000000035 GFAPI_3.7.16 glfs_free Cherry picked from commit 5ab0b43ce67d8d131242542a80b6aa6b129ed5ee: > Change-Id: Ia707ee957f090dbfca028192fcc81a83dfdf4ae0 > BUG: 1344714 > Reported-by: Jiffin Tony Thottan <jthottan> > Signed-off-by: Niels de Vos <ndevos> > Reviewed-on: http://review.gluster.org/15653 > CentOS-regression: Gluster Build System <jenkins.org> > Smoke: Gluster Build System <jenkins.org> > Reviewed-by: jiffin tony Thottan <jthottan> > NetBSD-regression: NetBSD Build System <jenkins.org> Change-Id: Ia707ee957f090dbfca028192fcc81a83dfdf4ae0 BUG: 1347717 Reported-by: Jiffin Tony Thottan <jthottan> Signed-off-by: Niels de Vos <ndevos> Reviewed-on: http://review.gluster.org/15680 Smoke: Gluster Build System <jenkins.org> CentOS-regression: Gluster Build System <jenkins.org> Reviewed-by: jiffin tony Thottan <jthottan> Reviewed-by: Oleksandr Natalenko <oleksandr> NetBSD-regression: NetBSD Build System <jenkins.org>
REVIEW: http://review.gluster.org/15775 (gfapi/upcall: Fix mismatch in few upcall API SYMVER) posted (#1) for review on release-3.8 by soumya k (skoduri)
COMMIT: http://review.gluster.org/15775 committed in release-3.8 by Kaleb KEITHLEY (kkeithle) ------ commit a125687227662a37ba7d0098bf086fc10ce6ad6f Author: Soumya Koduri <skoduri> Date: Tue Nov 1 20:32:17 2016 +0530 gfapi/upcall: Fix mismatch in few upcall API SYMVER There is mismatch in few of the upcall API routine definitions and their corresponding symbol version declarations. Fixed the same. > Change-Id: I2edfd9546a4c6a9128757f3b68e3ae4edd2c7a79 > BUG: 1344714 > Signed-off-by: Soumya Koduri <skoduri> > Reviewed-on: http://review.gluster.org/15760 > Smoke: Gluster Build System <jenkins.org> > Reviewed-by: jiffin tony Thottan <jthottan> > Reviewed-by: Kaleb KEITHLEY <kkeithle> > Tested-by: Kaleb KEITHLEY <kkeithle> > NetBSD-regression: NetBSD Build System <jenkins.org> > CentOS-regression: Gluster Build System <jenkins.org> > (cherry picked from commit 5b453380b15f34c0841f453a02fdabc46ad2f7ef) Change-Id: Ifa57114dbe788ad71f57faccd45c1f55e86ee6ad BUG: 1347717 Signed-off-by: Soumya Koduri <skoduri> Reviewed-on: http://review.gluster.org/15775 Smoke: Gluster Build System <jenkins.org> NetBSD-regression: NetBSD Build System <jenkins.org> Reviewed-by: Kaleb KEITHLEY <kkeithle> CentOS-regression: Gluster Build System <jenkins.org>
This bug is getting closed because a release has been made available that should address the reported issue. In case the problem is still not fixed with glusterfs-3.8.6, please open a new bug report. glusterfs-3.8.6 has been announced on the Gluster mailinglists [1], packages for several distributions should become available in the near future. Keep an eye on the Gluster Users mailinglist [2] and the update infrastructure for your distribution. [1] http://www.gluster.org/pipermail/packaging/2016-November/000217.html [2] https://www.gluster.org/pipermail/gluster-users/