[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lwip-devel] [bug #23408] Deadlock on sys_mbox_post sys_mbox_fetch
From: |
Vadim G Melihow |
Subject: |
[lwip-devel] [bug #23408] Deadlock on sys_mbox_post sys_mbox_fetch |
Date: |
Wed, 28 May 2008 16:56:36 +0000 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.8.1.4) Gecko/20060911 SUSE/2.0.0.4-1.2 Firefox/2.0.0.4 |
Follow-up Comment #5, bug #23408 (project lwip):
Ok I try again. 8-). Sorry for my english.
I use lwip v 1.3.0 under Linux.
my sys_arch file is contrib/ports/unix/sys_arch.c
void
sys_mbox_post(struct sys_mbox *mbox, void *msg)
{
u8_t first;
sys_sem_wait(mbox->mutex);
LWIP_DEBUGF(SYS_DEBUG, ("sys_mbox_post: mbox %p msg %pn", (void *)mbox,
(void *)msg));
while ((mbox->last + 1) >= (mbox->first + SYS_MBOX_SIZE)) {
mbox->wait_send++;
sys_sem_signal(mbox->mutex); <------ 1st operation
/*
I want to say that between these two operations (1st and 2nd) possibly switch
CPU context to writer thread and filling the whole messagebox, followed by
blocking semaphore mbox->mail.
As a result we get a deadlock.
When a large amount of msgbox elements (SYS_MBOX_SIZE) that is likely to
happen is small.
*/
sys_arch_sem_wait(mbox->mail, 0); <-------- 2nd operation
sys_arch_sem_wait(mbox->mutex, 0);
mbox->wait_send--;
}
mbox->msgs[mbox->last % SYS_MBOX_SIZE] = msg;
if (mbox->last == mbox->first) {
first = 1;
} else {
first = 0;
}
mbox->last++;
if (first) {
sys_sem_signal(mbox->mail);
}
sys_sem_signal(mbox->mutex);
}
_______________________________________________________
Reply to this item at:
<http://savannah.nongnu.org/bugs/?23408>
_______________________________________________
Message sent via/by Savannah
http://savannah.nongnu.org/
- [lwip-devel] [bug #23408] Deadlock on sys_mbox_post sys_mbox_fetch, Vadim G Melihow, 2008/05/28
- [lwip-devel] [bug #23408] Deadlock on sys_mbox_post sys_mbox_fetch, Kieran Mansley, 2008/05/28
- [lwip-devel] [bug #23408] Deadlock on sys_mbox_post sys_mbox_fetch, Simon Goldschmidt, 2008/05/28
- [lwip-devel] [bug #23408] Deadlock on sys_mbox_post sys_mbox_fetch, Vadim G Melihow, 2008/05/28
- [lwip-devel] [bug #23408] Deadlock on sys_mbox_post sys_mbox_fetch, Simon Goldschmidt, 2008/05/28
- [lwip-devel] [bug #23408] Deadlock on sys_mbox_post sys_mbox_fetch,
Vadim G Melihow <=
- [lwip-devel] [bug #23408] Deadlock on sys_mbox_post sys_mbox_fetch, Vadim G Melihow, 2008/05/28
- [lwip-devel] [bug #23408] Deadlock on sys_mbox_post sys_mbox_fetch, Simon Goldschmidt, 2008/05/28
- [lwip-devel] [bug #23408] Deadlock on sys_mbox_post sys_mbox_fetch, Vadim G Melihow, 2008/05/28
- [lwip-devel] [bug #23408] Deadlock on sys_mbox_post sys_mbox_fetch, Kieran Mansley, 2008/05/30
- [lwip-devel] [bug #23408] Deadlock on sys_mbox_post sys_mbox_fetch, Kieran Mansley, 2008/05/30
- [lwip-devel] [bug #23408] Deadlock on sys_mbox_post sys_mbox_fetch, Kieran Mansley, 2008/05/30