Hide Forgot
This is on release-3.2 branch.
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)
*** This bug has been marked as a duplicate of bug 3389 ***