public inbox for ecos-discuss@sourceware.org
 help / color / mirror / Atom feed
* [ECOS] what does "Map and queue disagree" really mean?
@ 2006-04-14 20:27 Weili Yao
  2006-04-14 20:51 ` Andrew Lunn
  0 siblings, 1 reply; 2+ messages in thread
From: Weili Yao @ 2006-04-14 20:27 UTC (permalink / raw)
  To: ecos-discuss

Hello, there:
  I have "Map and queue disagree" assert problem. In my system, I have
changed ECOS to support multi-PPP, and also added NAT (network address
translation) functionality into ECOS. The multi-PPP has been working
fine, but when I enabled my NAT, and the system starts to do NAT
forwarding, I got the error of "Map and queue disagree". The trace is as
follows:
  
  (gdb) bt
  #0  cyg_assert_msg (psz_func=0x3d78c8 "void
Cyg_Scheduler_Implementation::add_thread(Cyg_Thread*)",
      psz_file=0x3d76dc
"/home/local/ecos_sources/packages/kernel/current/src/sched/mlqueue.cxx"
, linenum=311, psz_msg=0x3d779c "Map and queue disagree")
      at
/home/local/ecos_sources/packages/infra/current/src/tcdiag.cxx:145
  
  #1  0x001dd58c in Cyg_Scheduler_Implementation::add_thread
(this=0x8b6380, thread=0x3d0000)
      at
/home/local/ecos_sources/packages/kernel/current/src/sched/mlqueue.cxx:3
11
  
  #2  0x001dafe8 in Cyg_Thread::wake (this=0x8c5308)
      at
/home/local/ecos_sources/packages/kernel/current/src/common/thread.cxx:4
03
  
  #3  0x001e03dc in Cyg_Condition_Variable::broadcast (this=0x56e794)
      at
/home/local/ecos_sources/packages/kernel/current/src/sync/mutex.cxx:756
  
  #4  0x001d9c84 in cyg_cond_broadcast (cond=0x3d78c8)
      at
/home/local/ecos_sources/packages/kernel/current/src/common/kapi.cxx:113
9
  
  #5  0x0004444c in serial_rcv_char (chan=0x8c5308, c=0 '\0')
      at
/home/local/ecos_sources/packages/io/serial/current/src/common/serial.c:
975
  
  #6  0x000b10bc in local_IoRxWakeUp (Channel=4028616)
      at ecos/cyg_io/cyg_serial.c:173
  
   (gdb)
  
  It seems that when the ECOS reads data from the serial port (one of
PPP port), it got trapped in the add_thread() where the "Map and queue
disagree" is detected. I don't understand why it happens.
  By the way, I used my own NAT functions which is currently doing
TCP/UDP address/port translation only. The code will be running for a
while by having two PPP connections and my device being NAT routing.
  
  It will be a great help if anybody can point me where to debug.
 
  Thank you a lot!

Sincerely yours

Weili Yao

  

--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [ECOS] what does "Map and queue disagree" really mean?
  2006-04-14 20:27 [ECOS] what does "Map and queue disagree" really mean? Weili Yao
@ 2006-04-14 20:51 ` Andrew Lunn
  0 siblings, 0 replies; 2+ messages in thread
From: Andrew Lunn @ 2006-04-14 20:51 UTC (permalink / raw)
  To: Weili Yao; +Cc: ecos-discuss

On Fri, Apr 14, 2006 at 01:26:59PM -0700, Weili Yao wrote:
> Hello, there:
>   I have "Map and queue disagree" assert problem. In my system, I have
> changed ECOS to support multi-PPP, and also added NAT (network address
> translation) functionality into ECOS. The multi-PPP has been working
> fine, but when I enabled my NAT, and the system starts to do NAT
> forwarding, I got the error of "Map and queue disagree". The trace is as
> follows:
>   
>   (gdb) bt
>   #0  cyg_assert_msg (psz_func=0x3d78c8 "void
> Cyg_Scheduler_Implementation::add_thread(Cyg_Thread*)",
>       psz_file=0x3d76dc
> "/home/local/ecos_sources/packages/kernel/current/src/sched/mlqueue.cxx"
> , linenum=311, psz_msg=0x3d779c "Map and queue disagree")
>       at
> /home/local/ecos_sources/packages/infra/current/src/tcdiag.cxx:145
>   
>   #1  0x001dd58c in Cyg_Scheduler_Implementation::add_thread
> (this=0x8b6380, thread=0x3d0000)
>       at
> /home/local/ecos_sources/packages/kernel/current/src/sched/mlqueue.cxx:3
> 11
>   
>   #2  0x001dafe8 in Cyg_Thread::wake (this=0x8c5308)
>       at
> /home/local/ecos_sources/packages/kernel/current/src/common/thread.cxx:4
> 03
>   
>   #3  0x001e03dc in Cyg_Condition_Variable::broadcast (this=0x56e794)
>       at
> /home/local/ecos_sources/packages/kernel/current/src/sync/mutex.cxx:756
>   
>   #4  0x001d9c84 in cyg_cond_broadcast (cond=0x3d78c8)
>       at
> /home/local/ecos_sources/packages/kernel/current/src/common/kapi.cxx:113
> 9
>   
>   #5  0x0004444c in serial_rcv_char (chan=0x8c5308, c=0 '\0')
>       at
> /home/local/ecos_sources/packages/io/serial/current/src/common/serial.c:
> 975
>   
>   #6  0x000b10bc in local_IoRxWakeUp (Channel=4028616)
>       at ecos/cyg_io/cyg_serial.c:173
>   
>    (gdb)

You probably have either:

1) A buffer overrun which is corrupting a cyg_thread or schedular structure.
2) A stack overflow which is corrupting the schedular.

Try turning on full stack checking, it might find the problem.

        Andrew

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2006-04-14 20:51 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-04-14 20:27 [ECOS] what does "Map and queue disagree" really mean? Weili Yao
2006-04-14 20:51 ` Andrew Lunn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).