| Summary: | [adc1ccf1f7ff7b8c25849bfc4a36f3708829a4db]: glusterfs server segfaulted | ||
|---|---|---|---|
| Product: | [Community] GlusterFS | Reporter: | Raghavendra Bhat <rabhat> |
| Component: | quota | Assignee: | Raghavendra G <raghavendra> |
| Status: | CLOSED DUPLICATE | QA Contact: | |
| Severity: | high | Docs Contact: | |
| Priority: | medium | ||
| Version: | pre-release | CC: | gluster-bugs, jdarcy, junaid |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | Type: | --- | |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
|
Description
Raghavendra Bhat
2011-08-17 08:08:26 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)
|