On 20/10/15 16:02, Isaac Gutekunst wrote:
Hi Devel,
I'm pretty sure this is a devel question, not users.
I'm working with a colleague at Vecna to port lwIP to the STM32F7 BSP
we've developed.
We have a basic HTTP server that prints out the current list of tasks.
We refresh the page at a very high rate, and after about 1-30 minutes,
get a crash.
Every time the exception is thrown after
_CORE_mutex_Check_dispatch_for_seize( wait ) on line 254 of
coremuteximpl.h. Every time this is inside a pthread_mutex_lock() call.
Here is the full backtrace:
stm32fxxxx_fatal_error_handler() at hal-fatal-error-handler.c:126
0x800af92
_User_extensions_Fatal_visitor() at userextiterate.c:123 0x803212c
_User_extensions_Iterate() at userextiterate.c:166 0x80321c0
_User_extensions_Fatal() at userextimpl.h:254 0x802a85e
_Terminate() at interr.c:44 0x802a888
_CORE_mutex_Seize_body() at coremuteximpl.h:255 0x8068df0
_POSIX_Mutex_Lock_support() at mutexlocksupp.c:57 0x806907e
pthread_mutex_lock() at mutexlock.c:40 0x8068bee
sys_arch_sem_wait() at sys_arch.c:485 0x808da8a
sys_arch_mbox_fetch() at sys_arch.c:357 0x808d804
sys_timeouts_mbox_fetch() at timers.c:532 0x80883ce
tcpip_thread() at tcpip.c:95 0x808c170
_Thread_Handler() at threadhandler.c:102 0x806bbe8
_User_extensions_Thread_exitted() at userextimpl.h:244 0x806bb60
bsp_section_work_begin() at 0xc016a12c
However, the lwip code calling pthread_mutex_lock varies, but is
consistently from lwIP.
Does this ring any bells?
Normally you get this if you obtain a locked mutex in interrupt context,
but your stack trace says you are not.
As far as I can tell this would only occur if the caller of
pthread_mutex_lock was in a "bad" state. I don't believe it is in an
interrupt context, and don't know what other bad states could exist.
We have
#define _CORE_mutex_Check_dispatch_for_seize(_wait) \
(!_Thread_Dispatch_is_enabled() \
&& (_wait) \
&& (_System_state_Get() >= SYSTEM_STATE_UP))
What is the thread dispatch disable level and the system state at this
point?
In case the thread dispatch disable level is not zero, then something is
probably broken in the operating system code which is difficult to find.
Could be a general memory corruption problem too. Which RTEMS version do
you use?
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.hu...@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel