[Gluster-devel] Crashes with latest git code
Emmanuel Dreyfus
manu at netbsd.org
Thu May 17 09:02:32 UTC 2012
Hi
I get a lot of crashes on NetBSD with latest git code. looking at core dumps,
it is obvious I get memory corruption, as I find various structure overwritten
by texts (file path or content).
Linking with electric fence produces a much earlier crash, always at the same
place. Here is how it looks:
Program terminated with signal 11, Segmentation fault.
#0 0xbb8aab70 in strlen () from /usr/lib/libc.so.12
(gdb) bt
#0 0xbb8aab70 in strlen () from /usr/lib/libc.so.12
#1 0xbaa5ec1e in gf_strdup (src=0x0)
at ../../../../libglusterfs/src/mem-pool.h:119
#2 0xbaa76dbf in client3_1_getxattr (frame=0xbb77f5c0, this=0xba3cd000,
data=0xbfbfe18c) at client3_1-fops.c:4641
#3 0xbaa59ab8 in client_getxattr (frame=0xbb77f5c0, this=0xba3cd000,
loc=0xb9402dd0, name=0x0, xdata=0x0) at client.c:1452
#4 0xb9ac3c7d in afr_sh_metadata_sync_prepare (frame=0xba8026bc,
this=0xba3ce000) at afr-self-heal-metadata.c:419
#5 0xb9ac428b in afr_sh_metadata_fix (frame=0xba8026bc, this=0xba3ce000,
op_ret=0, op_errno=0) at afr-self-heal-metadata.c:522
#6 0xb9abeb2b in afr_sh_common_lookup_cbk (frame=0xba8026bc, cookie=0x1,
this=0xba3ce000, op_ret=0, op_errno=0, inode=0xb8b001a0, buf=0xbfbfe424,
xattr=0xba401394, postparent=0xbfbfe3bc) at afr-self-heal-common.c:1311
#7 0xbaa6dc10 in client3_1_lookup_cbk (req=0xb92010d8, iov=0xb92010f8,
count=1, myframe=0xbb77f550) at client3_1-fops.c:2636
Frame 4 is this:
STACK_WIND (frame, afr_sh_metadata_getxattr_cbk,
priv->children[source],
priv->children[source]->fops->getxattr,
&local->loc, NULL, NULL);
Then in frame 3, I get args.name = NULL
client_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc,
const char *name, dict_t *xdata)
(...)
args.name = name;
(...)
ret = proc->fn (frame, this, &args);
In frame 2, args->name = NULL
client3_1_getxattr (call_frame_t *frame, xlator_t *this,
void *data)
(...)
args = data;
(...)
local->name = gf_strdup (args->name);
And there we will crash in gf_strdup(). The root cause is
afr_sh_metadata_sync_prepare() calling client_getxattr with NULL arguments.
The fix is beyond my knowledge of glusterfs internals, but I am sure that some
folks here will be able to comment.
--
Emmanuel Dreyfus
http://hcpnet.free.fr/pubz
manu at netbsd.org
More information about the Gluster-devel
mailing list