This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
what does "Map and queue disagree" really mean?
- From: "Weili Yao" <weili_yao at trimble dot com>
- To: <ecos-discuss at sourceware dot org>
- Date: Fri, 14 Apr 2006 13:26:59 -0700
- Subject: [ECOS] what does "Map and queue disagree" really mean?
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