[Gluster-devel] spurious error in self-heald.t

Emmanuel Dreyfus manu at netbsd.org
Fri Nov 28 10:06:05 UTC 2014


Hi


By looping on tests/basic/afr/self-heald.t I can sometime have a crash 
on this assertion:

#4  0xb9d2d966 in client3_3_opendir (frame=0xbb289918, this=0xbb2bc018, 
    data=0xb89fe73c) at client-rpc-fops.c:4412
4412            GF_ASSERT_AND_GOTO_WITH_ERROR (this->name,
4413                                           !uuid_is_null (*((uuid_t*)req.gfid)),
4414                                           unwind, op_errno, EINVAL);

Here is the backtrace:
#4  0xb9d2d966 in client3_3_opendir (frame=0xbb289918, this=0xbb2bc018, 
    data=0xb89fe73c) at client-rpc-fops.c:4412
#5  0xb9d136fb in client_opendir (frame=0xbb289918, this=0xbb2bc018, 
    loc=0xb89ff7d4, fd=0xbb2429d8, xdata=0x0) at client.c:1101
#6  0xbb7a5757 in syncop_opendir (subvol=0xbb2bc018, loc=0xb89ff7d4, 
    fd=0xbb2429d8) at syncop.c:1198
#7  0xb9ce2413 in afr_shd_full_sweep (healer=0xbb2dda58, inode=0xbb28a608)
    at afr-self-heald.c:532
#8  0xb9ce25c8 in afr_shd_full_sweep (healer=0xbb2dda58, inode=0xbb28a338)
    at afr-self-heald.c:582
#9  0xb9ce25c8 in afr_shd_full_sweep (healer=0xbb2dda58, inode=0xbb28a2a8)
    at afr-self-heald.c:582
#10 0xb9ce25c8 in afr_shd_full_sweep (healer=0xbb2dda58, inode=0xbb28a218)
    at afr-self-heald.c:582
#11 0xb9ce25c8 in afr_shd_full_sweep (healer=0xbb2dda58, inode=0xbb28a068)
    at afr-self-heald.c:582
#12 0xb9ce25c8 in afr_shd_full_sweep (healer=0xbb2dda58, inode=0xbb289c78)
    at afr-self-heald.c:582
#13 0xb9ce25c8 in afr_shd_full_sweep (healer=0xbb2dda58, inode=0xbb289e28)
(...)

At frame 8 I can see some inconstencies between entry and entry->inode:
(gdb) frame 8
#8  0xb9ce25c8 in afr_shd_full_sweep (healer=0xbb2dda58, inode=0xbb28a338)
    at afr-self-heald.c:582
582                                     ret = afr_shd_full_sweep (healer, entry->inode);
(gdb) print *entry
$1 = {{list = {next = 0xb89ff854, prev = 0xb9aac718}, {next = 0xb89ff854, 
      prev = 0xb9aac718}}, d_fileno = 12265058043496541968, 
  d_off = 3140166272, d_len = 1, d_type = 4, d_stat = {
    ia_ino = 12265058043496541968, 
    ia_gfid = "|\307\345C@\002J\213\252\066=N\270(\257\020", ia_dev = 36356, 
    ia_type = IA_IFDIR, ia_prot = {suid = 0 '\000', sgid = 0 '\000', 
      sticky = 0 '\000', owner = {read = 1 '\001', write = 1 '\001', 
        exec = 1 '\001'}, group = {read = 1 '\001', write = 0 '\000', 
        exec = 1 '\001'}, other = {read = 1 '\001', write = 0 '\000', 
        exec = 1 '\001'}}, ia_nlink = 3, ia_uid = 0, ia_gid = 0, 
    ia_rdev = 8843337662631, ia_size = 512, ia_blksize = 16384, ia_blocks = 1, 
    ia_atime = 1417155766, ia_atime_nsec = 311472906, ia_mtime = 1417155766, 
    ia_mtime_nsec = 327489488, ia_ctime = 1417155766, 
    ia_ctime_nsec = 327489488}, dict = 0x0, inode = 0xbb28a608, 
  d_name = 0xb9aac868 "a"}
(gdb) print *entry->inode
$2 = {table = 0xbb2893f8, gfid = '\000' <repeats 15 times>, lock = {
    pts_magic = 2004287495, pts_spin = 0 '\000', pts_flags = 0}, nlookup = 0, 
  fd_count = 0, ref = 4, ia_type = IA_INVAL, fd_list = {next = 0xbb28a63c, 
    prev = 0xbb28a63c}, dentry_list = {next = 0xbb28a644, prev = 0xbb28a644}, 
  hash = {next = 0xbb28a64c, prev = 0xbb28a64c}, list = {next = 0xbb28a5c4, 
    prev = 0xbb289430}, _ctx = 0xb9b9f5e8}

Anyone has an idea of how this can happen?

Note this is with http://review.gluster.org/9071 applied.
-- 
Emmanuel Dreyfus
manu at netbsd.org


More information about the Gluster-devel mailing list