[Gluster-devel] Crash in dht (3.4.0qa5)

Emmanuel Dreyfus manu at netbsd.org
Tue Dec 18 19:37:54 UTC 2012

Another crash:

Program terminated with signal 11, Segmentation fault.#0
dht_inode_ctx_time_update (inode=0xb15fa480, this=0xba0e4000,
stat=0x0, post=1) at dht-helper.c:944944             
        DHT_UPDATE_TIME(time->mtime, time->mtime_nsec,

#0  dht_inode_ctx_time_update (inode=0xb15fa480, this=0xba0e4000, 
    stat=0x0, post=1) at dht-helper.c:944
#1  0xb9e963d2 in dht_revalidate_cbk (frame=0xbb387930, 
    cookie=0xbb3856a0, this=0xba0e4000, op_ret=-1, op_errno=57, 
    inode=0x0, stbuf=0x0, xattr=0x0, postparent=0x0) at dht-common.c:703
#2  0xb9f03967 in afr_lookup (frame=0xbb3856a0, this=0xba0e3000, 
    loc=0xb9418f98, xattr_req=0xb12775f0) at afr-common.c:2378
#3  0xb9ea1b5c in dht_lookup (frame=0xbb387930, this=0xba0e4000, 
    loc=0xb144b810, xattr_req=0xb12775f0) at dht-common.c:1491
#4  0xbb79e7e1 in default_lookup (frame=0xbb387930, this=0xba0e5000, 
    loc=0xb144b810, xdata=0xb12775f0) at defaults.c:1253
#5  0xbb79e7e1 in default_lookup (frame=0xbb387930, this=0xba0e6000, 
    loc=0xb144b810, xdata=0xb12775f0) at defaults.c:1253
#6  0xb9e639e9 in ioc_lookup (frame=0xbb388030, this=0xba0e7000, 
    loc=0xb144b810, xdata=0xb12775f0) at io-cache.c:283
#7  0xb9e54afc in qr_lookup (frame=0xbb389a00, this=0xba0e8000, 
    loc=0xb144b810, xdata=0xb12775f0) at quick-read.c:560
#8  0xb9e4aa39 in mdc_lookup (frame=0xbb3874d0, this=0xba0e9000, 
    loc=0xb144b810, xdata=0x0) at md-cache.c:753
#9  0xb9e3573e in io_stats_lookup (frame=0xbb385a90, this=0xba0ea000, 
    loc=0xb144b810, xdata=0x0) at io-stats.c:1864
#10 0xb9ff4cd8 in fuse_lookup_resume (state=0xb144b800)
    at fuse-bridge.c:518
#11 0xb9fde905 in fuse_resolve_done (state=<optimized out>)
    at fuse-resolve.c:647
#12 fuse_resolve_all (state=<optimized out>) at fuse-resolve.c:676
#13 0xb9fde498 in fuse_resolve (state=0xb144b800) at fuse-resolve.c:633
#14 0xb9fde93d in fuse_resolve_all (state=<optimized out>)
    at fuse-resolve.c:672
#15 0xb9fde1b7 in fuse_resolve_continue (state=0xb144b800)
    at fuse-resolve.c:692
#16 0xb9fde319 in fuse_resolve_parent (state=0xb144b800)
    at fuse-resolve.c:300
#17 0xb9fde4a5 in fuse_resolve (state=0xb144b800) at fuse-resolve.c:626
#18 0xb9fde921 in fuse_resolve_all (state=<optimized out>)
    at fuse-resolve.c:665
#19 0xb9fdede7 in fuse_resolve_and_resume (state=0xb144b800, 
    fn=0xb9ff4a84 <fuse_lookup_resume>) at fuse-resolve.c:705
#20 0xb9fe3fae in fuse_lookup (this=0xba0b1000, finh=0xb5691320, 
    msg=0xb5691348) at fuse-bridge.c:533
#21 0xb9ff6f6e in fuse_thread_proc (data=0xba0b1000) at
#22 0xbb75a4ea in ?? () from /usr/lib/libpthread.so.1
#23 0xbb507ea0 in ___lwp_park50 () from /usr/lib/libc.so.12

(gdb) list
939                             return -1;
940             }
942             time = &ctx->time;
944             DHT_UPDATE_TIME(time->mtime, time->mtime_nsec,
945                             stat->ia_mtime, stat->ia_mtime_nsec,
inode, post);
946             DHT_UPDATE_TIME(time->ctime, time->ctime_nsec,
947                             stat->ia_ctime, stat->ia_ctime_nsec,
inode, post);
948             DHT_UPDATE_TIME(time->atime, time->atime_nsec,

(gdb) print stat
$1 = (struct iatt *) 0x0

It is worth noting that stat is always NULL, as it is set here:

(gdb) frame 2
#2  0xb9f03967 in afr_lookup (frame=0xbb3856a0, this=0xba0e3000, 
    loc=0xb9418f98, xattr_req=0xb12775f0) at afr-common.c:2378
2378                    AFR_STACK_UNWIND (lookup, frame, -1, op_errno,
(gdb) list
2373            }
2375            ret = 0;
2376    out:
2377            if (ret)
2378                    AFR_STACK_UNWIND (lookup, frame, -1, op_errno,
2379                                      NULL, NULL, NULL, NULL);
2381            return 0;
2382    }

Shall I just return if stat == NULL in dht_inode_ctx_time_update()?

Emmanuel Dreyfus
manu at netbsd.org

More information about the Gluster-devel mailing list