[Bugs] [Bug 1263585] Data Tiering:new crash seen with tier rebalance deamon

bugzilla at redhat.com bugzilla at redhat.com
Wed Sep 16 09:16:37 UTC 2015


https://bugzilla.redhat.com/show_bug.cgi?id=1263585

Nithya Balachandran <nbalacha at redhat.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |nbalacha at redhat.com



--- Comment #2 from Nithya Balachandran <nbalacha at redhat.com> ---
Analysis:

The bricklists have an extra entry at the end. I have verified this on a
running tier process for a newly created volume as well .


Core was generated by `/usr/sbin/glusterfs -s localhost --volfile-id
rebalance/gold --xlator-option *d'.
Program terminated with signal 11, Segmentation fault.
#0  0x00007ff8f9f82af0 in syncop_ipc (subvol=0x7ff7a2de5700, op=op at entry=1,
xdata_in=xdata_in at entry=0x0, 
    xdata_out=xdata_out at entry=0x0) at syncop.c:2823
2823            SYNCOP (subvol, (&args), syncop_ipc_cbk, subvol->fops->ipc,

(gdb) bt
#0  0x00007ff8f9f82af0 in syncop_ipc (subvol=0x7ff7a2de5700, op=op at entry=1,
xdata_in=xdata_in at entry=0x0, 
    xdata_out=xdata_out at entry=0x0) at syncop.c:2823
#1  0x00007ff8e7919fb9 in tier_process_brick_cbk (args=<synthetic pointer>,
local_brick=0x7ff8db43bc60) at tier.c:548
#2  tier_build_migration_qfile (is_promotion=_gf_false,
query_cbk_args=0x7ff79fddee70, args=0x7ff8db43bcc0) at tier.c:608
#3  tier_demote (args=0x7ff8db43bcc0) at tier.c:668
#4  0x00007ff8f8d99df5 in start_thread () from /lib64/libpthread.so.0
#5  0x00007ff8f86e01ad in clone () from /lib64/libc.so.6



(gdb) p *subvol
$1 = {name = 0x7ff7a2de5700 "", type = 0x7ff8cc037460 "\002", next =
0x7ff7a2de5700, prev = 0x1, parents = 0x0, 
  children = 0x5fd8b3b6b4645700, options = 0x86286dc0e2942214, dlhandle = 0x0,
fops = 0x0, cbks = 0x0, dumpops = 0x0, 
  volume_options = {next = 0x0, prev = 0x0}, fini = 0x0, init = 0x0,
reconfigure = 0x0, mem_acct_init = 0x0, notify = 0x0, 
  loglevel = GF_LOG_NONE, latencies = {{min = 0, max = 0, total = 0, std = 0,
mean = 0, count = 0} <repeats 11 times>, {min = 0, 
      max = 0, total = 0, std = 6.9515818434295051e-310, mean =
6.9515814287748329e-310, count = 140527034957824}, {
      min = 140701566130656, max = 140701566130656, total =
-nan(0xfffffffffffe0), std = 0, mean = 0, count = 140701566127856}, {
      min = 16, max = 1, total = 0, std = 0, mean = 0, count = 1}, {min = 0,
max = 0, total = 0, std = 0, mean = 0, count = 0}, {
      min = 0, max = 0, total = 0, std = 0, mean = 0, count = 0}, {min = 0, max
= 0, total = 0, std = 0, mean = 0, count = 0}, {
      min = 0, max = 0, total = 0, std = 0, mean = 0, count = 0}, {min = 0, max
= 0, total = 0, std = 0, mean = 0, count = 0}, {
      min = 0, max = 0, total = 0, std = 0, mean = 0, count = 0}, {min = 0, max
= 0, total = 0, std = 0, mean = 0, count = 0}, {
      min = 0, max = 0, total = 0, std = 0, mean = 0, count = 0}, {min = 0, max
= 0, total = 0, std = 0, mean = 0, count = 0}, {
      min = 0, max = 0, total = 0, std = 0, mean = 0, count = 140701566130704},
{min = 0, max = 0, total = 0, std = 0, mean = 0, 
      count = 0}, {min = 0, max = 0, total = 0, std = 0, mean = 0, count = 0},
{min = 0, max = 0, total = 0, std = 0, mean = 0, 
      count = 0}, {min = 0, max = 0, total = 0, std = 0, mean = 0, count = 0},
{min = 0, max = 0, total = 0, std = 0, mean = 0, 
      count = 0}, {min = 0, max = 0, total = 0, std = 1.4308692302641265e-308,
mean = 0, count = 0}, {min = 0, 
      max = 140707013696768, total = 6.9518399606381148e-310, std = 0, mean =
0, count = 0}, {min = 0, max = 0, total = 0, 
      std = 0, mean = 0, count = 140701557739520}, {min = 8392704, max = 4096,
total = 2.0236928853657458e-320, std = 0, 
      mean = 0, count = 0}, {min = 0, max = 0, total = 0, std = 0, mean = 0,
count = 0} <repeats 17 times>}, history = 0x0, 
  ctx = 0x0, graph = 0x0, itable = 0x0, init_succeeded = 0 '\000', private =
0x0, mem_acct = 0x0, winds = 0, 
  switched = 0 '\000', local_pool = 0x0, is_autoloaded = _gf_false}
(gdb) 


The subvol is not a valid xlator. Dereferencing this causes the crash.


(gdb) f 2
#2  tier_build_migration_qfile (is_promotion=_gf_false,
query_cbk_args=0x7ff79fddee70, args=0x7ff8db43bcc0) at tier.c:608
608                    ret = tier_process_brick_cbk (local_brick,
(gdb) l
603            gfdb_brick_dict_info.time_stamp = &time_in_past;
604            gfdb_brick_dict_info._gfdb_promote = is_promotion;
605            gfdb_brick_dict_info._query_cbk_args = query_cbk_args;
606    
607            list_for_each_entry (local_brick, args->brick_list, list) {
608                    ret = tier_process_brick_cbk (local_brick,
609                                                    &gfdb_brick_dict_info);
610                    if (ret) {
611                            gf_msg (args->this->name, GF_LOG_ERROR, 0,
612                                    DHT_MSG_BRICK_QUERY_FAILED,
(gdb) 
613                                    "Brick query failed\n");
614                            goto out;
615                    }
616            }




(gdb) p *args
$2 = {this = 0x0, defrag = 0x0, brick_list = 0x0, freq_time = 0, return_value =
0}


args is NULL at this point because of the same issue as in BZ 1263200. However
it looks like the demote thread had already started processing the brick list
before the args were cleared.

On switching to the tier_start thread and traversing bricklist_hot:


 (gdb) bt
#0  0x00007ff8f8da099d in nanosleep () from /lib64/libpthread.so.0
#1  0x00007ff8f9f50914 in gf_timer_proc (ctx=0x7ff8fb371010) at timer.c:205
#2  0x00007ff8f8d99df5 in start_thread () from /lib64/libpthread.so.0
#3  0x00007ff8f86e01ad in clone () from /lib64/libc.so.6
(gdb) t 3
[Switching to thread 3 (Thread 0x7ff8ef549700 (LWP 32723))]
#0  0x00007ff8f86a748d in nanosleep () from /lib64/libc.so.6
(gdb) bt
#0  0x00007ff8f86a748d in nanosleep () from /lib64/libc.so.6
#1  0x00007ff8f86a7324 in sleep () from /lib64/libc.so.6
#2  0x00007ff8e791af2a in tier_start (this=0x7ff8e8020920,
defrag=0x7ff8e8028c10) at tier.c:860
#3  0x00007ff8e7dafd34 in gf_defrag_start_crawl (data=0x7ff8e8020920) at
dht-rebalance.c:2841
#4  0x00007ff8f9f72d72 in synctask_wrap (old_task=<optimized out>) at
syncop.c:380
#5  0x00007ff8f86310f0 in ?? () from /lib64/libc.so.6
#6  0x0000000000000000 in ?? ()

(gdb) f 2
#2  0x00007ff8e791af2a in tier_start (this=0x7ff8e8020920,
defrag=0x7ff8e8028c10) at tier.c:860
860                    sleep(1);

(gdb) p *((brick_list_t *)((char *)(bricklist_hot->next)-(unsigned
long)(&((brick_list_t *)0)->list)))
$3 = {xlator = 0x7ff8e8009c70, brick_db_path = 0x7ff8cc00c260
"/rhs/brick6/gold_hot/.glusterfs/gold_hot.db", list = {
    next = 0x7ff8cc000db0, prev = 0x7ff8db43bc70}}

(gdb) p *((brick_list_t *)((char *)(bricklist_hot->next->next)-(unsigned
long)(&((brick_list_t *)0)->list)))
$4 = {xlator = 0x7ff8e800be70, brick_db_path = 0x7ff8cc00d2b0
"/rhs/brick7/gold_hot/.glusterfs/gold_hot.db", list = {
    next = 0x7ff8db43bc70, prev = 0x7ff8cc000d40}}

(gdb) p *((brick_list_t *)((char *)(bricklist_hot->next->next->next)-(unsigned
long)(&((brick_list_t *)0)->list)))
$5 = {xlator = 0x7ff7a2de5700, brick_db_path = 0x7ff79fddf700 "", list = {next
= 0x7ff8cc000d40, prev = 0x7ff8cc000db0}} =====> Invalid xlator


(gdb) p *((brick_list_t *)((char
*)(bricklist_hot->next->next->next->next)-(unsigned long)(&((brick_list_t
*)0)->list)))
$6 = {xlator = 0x7ff8e8009c70, brick_db_path = 0x7ff8cc00c260
"/rhs/brick6/gold_hot/.glusterfs/gold_hot.db", list = {
    next = 0x7ff8cc000db0, prev = 0x7ff8db43bc70}}  ==> First entry

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are on the CC list for the bug.
You are the assignee for the bug.


More information about the Bugs mailing list