Bug 765162 (GLUSTER-3430) - [adc1ccf1f7ff7b8c25849bfc4a36f3708829a4db]: glusterfs server segfaulted
Summary: [adc1ccf1f7ff7b8c25849bfc4a36f3708829a4db]: glusterfs server segfaulted
Keywords:
Status: CLOSED DUPLICATE of bug 765121
Alias: GLUSTER-3430
Product: GlusterFS
Classification: Community
Component: quota
Version: pre-release
Hardware: x86_64
OS: Linux
medium
high
Target Milestone: ---
Assignee: Raghavendra G
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2011-08-17 10:56 UTC by Raghavendra Bhat
Modified: 2011-09-07 06:34 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed:
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:


Attachments (Terms of Use)

Description Raghavendra Bhat 2011-08-17 08:08:26 UTC
This is on release-3.2 branch.

Comment 1 Raghavendra Bhat 2011-08-17 10:56:21 UTC
glusterfs server segfaulted while running rm -rf from 2 clients parallely. Configuration is single client-server model.

This is the backtrace of the core generated.


Core was generated by `/usr/local/sbin/glusterfsd --xlator-option vol-server.listen-port=24011 -s loca'.
Program terminated with signal 11, Segmentation fault.
#0  0x00007fab5b89e5d5 in copy_frame (frame=0x7fab5dac32d8) at ../../../../../libglusterfs/src/stack.h:338
338	        newstack->uid = oldstack->uid;
(gdb) bt
#0  0x00007fab5b89e5d5 in copy_frame (frame=0x7fab5dac32d8) at ../../../../../libglusterfs/src/stack.h:338
#1  0x00007fab5b8a0d6f in quota_readdir_cbk (frame=0x7fab5dac32d8, cookie=0x7fab5dd45008, this=0x7fa7e0, op_ret=13, op_errno=2, entries=0x7fab5a2ceb70)
    at ../../../../../xlators/features/marker/src/marker-quota.c:532
#2  0x00007fab5babf4d1 in iot_readdir_cbk (frame=0x7fab5dd45008, cookie=0x7fab5dd43d74, this=0x7f9620, op_ret=13, op_errno=2, entries=0x7fab5a2ceb70)
    at ../../../../../xlators/performance/io-threads/src/io-threads.c:1799
#3  0x00007fab5f42d870 in default_readdir_cbk (frame=0x7fab5dd43d74, cookie=0x7fab5dd53c6c, this=0x7f8430, op_ret=13, op_errno=2, entries=0x7fab5a2ceb70)
    at ../../../libglusterfs/src/defaults.c:387
#4  0x00007fab5bee84d3 in posix_acl_readdir_cbk (frame=0x7fab5dd53c6c, cookie=0x7fab5dd40700, this=0x7f7190, op_ret=13, op_errno=2, entries=0x7fab5a2ceb70)
    at ../../../../../xlators/system/posix-acl/src/posix-acl.c:1356
#5  0x00007fab5c1098e3 in posix_do_readdir (frame=0x7fab5dd40700, this=0x7f5d80, fd=0x7fab5a6e8b18, size=4096, off=0, whichop=28)
    at ../../../../../xlators/storage/posix/src/posix.c:4392
#6  0x00007fab5c109962 in posix_readdir (frame=0x7fab5dd40700, this=0x7f5d80, fd=0x7fab5a6e8b18, size=4096, off=0) at ../../../../../xlators/storage/posix/src/posix.c:4404
#7  0x00007fab5bee8724 in posix_acl_readdir (frame=0x7fab5dd53c6c, this=0x7f7190, fd=0x7fab5a6e8b18, size=4096, offset=0)
    at ../../../../../xlators/system/posix-acl/src/posix-acl.c:1370
#8  0x00007fab5f437cc0 in default_readdir (frame=0x7fab5dd43d74, this=0x7f8430, fd=0x7fab5a6e8b18, size=4096, off=0) at ../../../libglusterfs/src/defaults.c:1112
#9  0x00007fab5babf6fd in iot_readdir_wrapper (frame=0x7fab5dd45008, this=0x7f9620, fd=0x7fab5a6e8b18, size=4096, offset=0)
    at ../../../../../xlators/performance/io-threads/src/io-threads.c:1808
#10 0x00007fab5f44b598 in call_resume_wind (stub=0x7fab5da2054c) at ../../../libglusterfs/src/call-stub.c:2427
#11 0x00007fab5f451b66 in call_resume (stub=0x7fab5da2054c) at ../../../libglusterfs/src/call-stub.c:3859
#12 0x00007fab5bab4162 in iot_worker (data=0x803d20) at ../../../../../xlators/performance/io-threads/src/io-threads.c:129
#13 0x00007fab5ebb7d8c in start_thread (arg=0x7fab5a2cf700) at pthread_create.c:304
#14 0x00007fab5e90304d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#15 0x0000000000000000 in ?? ()
(gdb)  f 0
#0  0x00007fab5b89e5d5 in copy_frame (frame=0x7fab5dac32d8) at ../../../../../libglusterfs/src/stack.h:338
338	        newstack->uid = oldstack->uid;
(gdb) p oldstack
$1 = (call_stack_t *) 0x0
(gdb) f 1
#1  0x00007fab5b8a0d6f in quota_readdir_cbk (frame=0x7fab5dac32d8, cookie=0x7fab5dd45008, this=0x7fa7e0, op_ret=13, op_errno=2, entries=0x7fab5a2ceb70)
    at ../../../../../xlators/features/marker/src/marker-quota.c:532
532	                newframe = copy_frame (frame);
(gdb) p *frame
$2 = {root = 0x0, parent = 0x0, next = 0x0, prev = 0x0, local = 0x0, this = 0x0, ret = 0, ref_count = 0, lock = 0, cookie = 0x0, complete = _gf_false, op = GF_FOP_NULL, 
  begin = {tv_sec = 0, tv_usec = 0}, end = {tv_sec = 0, tv_usec = 0}, wind_from = 0x0, wind_to = 0x0, unwind_from = 0x0, unwind_to = 0x0}
(gdb) p frame
$3 = (call_frame_t *) 0x7fab5dac32d8
(gdb) l quota_readdir_cbk 
457	                   void *cookie,
458	                   xlator_t *this,
459	                   int32_t op_ret,
460	                   int32_t op_errno,
461	                   gf_dirent_t *entries)
462	{
463	        char           contri_key [512]   = {0, };
464	        int32_t        ret                = 0;
465	        off_t          offset             = 0;
466	        int32_t        count              = 0;
(gdb) 
467	        dict_t        *dict               = NULL;
468	        quota_local_t *local              = NULL;
469	        gf_dirent_t   *entry              = NULL;
470	        call_frame_t  *newframe           = NULL;
471	        loc_t          loc                = {0, };
472	
473	        local = frame->local;
474	
475	        if (op_ret == -1) {
476	                gf_log (this->name, GF_LOG_DEBUG,
(gdb) 
477	                        "readdir failed %s", strerror (op_errno));
478	                local->err = -1;
479	
480	                release_lock_on_dirty_inode (frame, NULL, this, 0, 0);
481	
482	                return 0;
483	        } else if (op_ret == 0) {
484	                get_dirty_inode_size (frame, this);
485	
486	                return 0;
(gdb) 
487	        }
488	
489	        local->dentry_child_count =  0;
490	
491	        list_for_each_entry (entry, (&entries->list), list) {
492	                gf_log (this->name, GF_LOG_DEBUG, "entry  = %s", entry->d_name);
493	
494	                if ((!strcmp (entry->d_name, ".")) || (!strcmp (entry->d_name,
495	                                                                ".."))) {
496	                        gf_log (this->name, GF_LOG_DEBUG, "entry  = %s",
(gdb) 
497	                                entry->d_name);
498	                        continue;
499	                }
500	
501	                offset = entry->d_off;
502	                count++;
503	        }
504	
505	        local->frame = frame;
506	
(gdb) 
507	        if (count > 0) {
508	                LOCK (&local->lock);
509	                {
510	                        local->dentry_child_count = count;
511	                        local->d_off = offset;
512	                }
513	                UNLOCK (&local->lock);
514	        }
515	
516	
(gdb) 
517	        list_for_each_entry (entry, (&entries->list), list) {
518	                gf_log (this->name, GF_LOG_DEBUG, "entry  = %s", entry->d_name);
519	
520	                if ((!strcmp (entry->d_name, ".")) || (!strcmp (entry->d_name,
521	                                                                ".."))) {
522	                        gf_log (this->name, GF_LOG_DEBUG, "entry  = %s",
523	                                entry->d_name);
524	                        continue;
525	                }
526	
(gdb) 
527	                ret = loc_fill_from_name (this, &loc, &local->loc,
528	                                          entry->d_ino, entry->d_name);
529	                if (ret < 0)
530	                        goto out;
531	
532	                newframe = copy_frame (frame);
533	                if (!newframe) {
534	                        ret = -1;
535	                        goto out;
536	                }
(gdb)

Comment 2 Junaid 2011-09-07 03:34:17 UTC

*** This bug has been marked as a duplicate of bug 3389 ***


Note You need to log in before you can comment on or make changes to this bug.