[DRBD-user] Crash during synchronisation when RATE >= 1024 ???

Benoit.Ropartz at alcatel.fr Benoit.Ropartz at alcatel.fr
Wed Jun 23 17:44:43 CEST 2004

Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.


I have changed prepare_to_wait :

list_empty(&wait->task_list) ===> list_empty(&q->task_list)

And it seems ok ???
---------------------- Forwarded by Benoit ROPARTZ/FR/ALCATEL on 23/06/2004
17:32 ---------------------------


Benoit ROPARTZ/FR/ALCATEL at ALCATEL@linbit.com on 23/06/2004 17:11:19

Sent by:    drbd-user-admin at linbit.com


To:    drbd-user <drbd-user at linbit.com>
cc:
Subject:    Re: [DRBD-user] Crash during synchronisation when RATE >= 1024
       ???


I used now 0.7-pre8 and i have got the seem problem.....(Linux 2.4)

I have analysed the code and i have found a bug in drbd_get_ee() function
(SyncSource) :

- DEFINE_WAIT(wait);
==> wait.task=current;
==> wait.task_list={NULL,NULL}

Second "list_empty(&mdev->free_ee)" condition is TRUE so DRBD call
prepare_to_wait() function :

- prepare_to_wait
==> condition "list_empty(&wait->task_list)" is FALSE
(task_list.next=prev=NULL) :
/**
 * list_empty - tests whether a list is empty
 * @head: the list to test.
 */
static inline int list_empty(struct list_head *head)
{
        return head->next == head;
}


==> DRBD doesn't call __add_wait_queue(q, wait) !!!

- DRBD execute several code lines and finally execute finish_wait function
() :

==> call list_del_init(&wait->task_list) :

static inline void list_del_init(struct list_head *entry)
{
        __list_del(entry->prev, entry->next);==> NULL, NULL
        INIT_LIST_HEAD(entry);
}

static inline void __list_del(struct list_head *prev, struct list_head
*next)
{
        next->prev = prev;
        prev->next = next;
}

==> CRASH because next and prev = NULL !!!!!


Are you agree with me ??? Why this trouble isn't find with 2.6.x Linux
Version ????







Lars Ellenberg <Lars.Ellenberg at linbit.com>@linbit.com on 17/06/2004
12:07:08

Please respond to drbd-user <drbd-user at linbit.com>

Sent by:    drbd-user-admin at linbit.com


To:    Benoit ROPARTZ/FR/ALCATEL at ALCATEL
cc:    drbd-user <drbd-user at linbit.com>
Subject:    Re: [DRBD-user] Crash during synchronisation when RATE >= 1024
       ???


/ 2004-06-17 11:18:08 +0200
\ Benoit.Ropartz at alcatel.fr:
> Hello,
>
> OK i've used ksymoops :
>
> >>NIP; d104ce50 <[drbd]finish_wait+40/90>   <=====
>
> >>GPR1; caa19ef0 <_end+a783308/10dac418>
> >>GPR2; caa18000 <_end+a781418/10dac418>
> >>GPR6; caa1b154 <_end+a78456c/10dac418>
> >>GPR7; caa1b040 <_end+a784458/10dac418>
> >>GPR11; caa19f20 <_end+a783338/10dac418>
> >>GPR23; c0005ed4 <ret_from_except+0/34>
> >>GPR24; c0005bc0 <DoSyscall+0/5c>
> >>GPR28; c01f0000 <Symbios_trailer.1+0/8>
> >>GPR29; caa19f18 <_end+a783330/10dac418>
> >>GPR30; cfcfa420 <_end+fa63838/10dac418>
> >>GPR31; cfcfa000 <_end+fa63418/10dac418>
>
> Trace; d104cb50 <[drbd]drbd_alloc_ee+40/78>
> Trace; d104d034 <[drbd]drbd_get_ee+194/20c>
> Trace; d104e0f8 <[drbd]read_in_block+30/110>
> Trace; d104ec5c <[drbd]receive_Data+b8/360>
> Trace; d10500a8 <[drbd]drbdd+70/114>
> Trace; d105077c <[drbd]drbdd_init+68/178>
> Trace; d1045c6c <[drbd]drbd_thread_setup+a4/124>
> Trace; c00088d8 <arch_kernel_thread+2c/38>
>
>
> 6 warnings issued.  Results may not be reliable.
>
> Finally DRBD crash each time DRBD receive a block !!! Unfortunately i
> cannot interpret
> the ksymoops results ???

try again with cvs of today, please.

 Lars Ellenberg
_______________________________________________
drbd-user mailing list
drbd-user at lists.linbit.com
 http://lists.linbit.com/mailman/listinfo/drbd-user




_______________________________________________
drbd-user mailing list
drbd-user at lists.linbit.com
 http://lists.linbit.com/mailman/listinfo/drbd-user






More information about the drbd-user mailing list