[Gluster-devel] client crash report

Emmanuel Dreyfus manu at netbsd.org
Tue Aug 9 20:06:38 UTC 2011


Pavan T C <tcp at gluster.com> wrote:

> Might be obvious, but did you see what address caused the seg fault?
> You could do that by disassembling code around  0xbbb63960.
> In your gdb prompt, try:

(gdb) x/12i pthread_mutex_lock
0xbbb63940 <pthread_mutex_lock>:        push   %esi
0xbbb63941 <pthread_mutex_lock+1>:      push   %ebx
0xbbb63942 <pthread_mutex_lock+2>:      
    call   0xbbb63947 <pthread_mutex_lock+7>
0xbbb63947 <pthread_mutex_lock+7>:      pop    %ebx
0xbbb63948 <pthread_mutex_lock+8>:      add    $0x4829,%ebx
0xbbb6394e <pthread_mutex_lock+14>:     mov    0xc(%esp),%ecx
0xbbb63952 <pthread_mutex_lock+18>:     mov    %esp,%esi
0xbbb63954 <pthread_mutex_lock+20>:     mov    0xffffffa0(%ebx),%edx
0xbbb6395a <pthread_mutex_lock+26>:     and    (%edx),%esi
0xbbb6395c <pthread_mutex_lock+28>:     xor    %edx,%edx
0xbbb6395e <pthread_mutex_lock+30>:     mov    %edx,%eax
0xbbb63960 <pthread_mutex_lock+32>:     lock cmpxchg %esi,0xc(%ecx)

(gdb) info reg esi ecx
esi            0xb9200000       -1189085184
ecx            0x313032a3       825242275

ecx holds an invalid address. 
(gdb) x/10w $ecx
0x313032a3:     Cannot access memory at address 0x313032a3


> Also print the ioc_inode structure that is passed to ioc_inode_destroy 
> and see if the values of its members make sense. You might have NULL 
> values where you don't expect them. That might throw some light on the 
> root cause.

(gdb) print *((ioc_inode_t *)0xb5af7100)
$2 = {table = 0x3130325b, ia_size = 2321940053660544305, cache = {
    page_table = 0x323a3331, page_lru = {next = 0x39333a31, 
      prev = 0x3437322e}, mtime = 1563440438, mtime_nsec = 1528846112, tv = {
      tv_sec = 1702065510, tv_usec = 1769103917}}, inode_list = {
    next = 0x2e656764, prev = 0x31353a63}, inode_lru = {next = 0x75663a31, 
    prev = 0x675f6573}, waitq = 0x74617465, inode_lock = {
    ptm_magic = 542995060, ptm_errorcheck = 48 '0', ptm_pad1 = "-gl", 
    ptm_interlock = 117 'u', ptm_pad2 = "ste", ptm_owner = 0x2d736672, 
    ptm_waiters = 0x65737566, ptm_recursed = 8250, ptm_spare2 = 0x0}, 
  weight = 1}

table is invalid, and  pthread_mutex_lock() is called with table->table_lock

(gdb) print *((ioc_inode_t *)0xb5af7100)->table
Cannot access memory at address 0x3130325b

But in fact that looks like a string, and indeed...
(gdb) x/1s 0xb5af7100
0xb5af7100:      "[2011-08-09 13:21:39.274650] W
[fuse-bridge.c:511:fuse_getattr] 0-glusterfs-fuse: "

Wow, there is something seriously rotten.

-- 
Emmanuel Dreyfus
http://hcpnet.free.fr/pubz
manu at netbsd.org




More information about the Gluster-devel mailing list