disable thread dispatch problem

Ashi ashi08104 at gmail.com
Mon Jul 9 12:32:57 UTC 2012


2012/7/9 Sebastian Huber <sebastian.huber at embedded-brains.de>

> On 07/09/2012 08:28 AM, Ashi wrote:
>
>>
>>
>> 2012/7/6 Sebastian Huber <sebastian.huber at embedded-**brains.de<sebastian.huber at embedded-brains.de>
>> <mailto:sebastian.huber@**embedded-brains.de<sebastian.huber at embedded-brains.de>
>> >>
>>
>>
>>     On 07/06/2012 11:49 AM, Ashi wrote:
>>
>>         I've a problem of _Thread_Disable_dispatch() function in below
>> code.
>>         It's my
>>         implementation of _POSIX_Keys_Run_destructors() function. I come
>> across the
>>         problem when I run the psxkey03 test:if
>> _Thread_Disable_dispatch() was
>>         commented out, psxkey03 can run without problem. when
>>         _Thread_Disable_dispatch() added at line 1(as below), psxkey03
>> will fail. I
>>         debug it in sparc-rtems4.11-gdb, and find psxkey03 runs into
>>         _Internal_error_Occurred() function then stop. I know
>>         _POSIX_Keys_Get()(at line
>>         12) will also disable thread dispatch--does this lead to the
>> problem?
>>         However,
>>         can't figure out where exactly the problem exists, could anyone
>> explain
>>         it? Thanks!
>>
>>
>>     The _Thread_Disable_dispatch() can nest.  I suppose you want to
>> acquire a
>>     resource in the destructor which is not free.  The path to
>>     _Internal_error_Occurred() should show the problem.
>>
>> Sebastian, I follow the calls in gdb, and find the error is:
>>   Program received signal SIGINT, Interrupt.
>> 0x020168b8 in _Internal_error_Occurred (the_source=INTERNAL_ERROR_**CORE,
>> is_internal=true, the_error=5)
>>      at ../../../../../../rtems/c/src/**../../cpukit/score/src/interr.**
>> c:58
>> 58      _CPU_Fatal_halt( the_error );
>>
>
> What is the call stack here?
>
> Hi, Sebastian, the call stack is:

** #0  0x020168bc in _Internal_error_Occurred
(the_source=INTERNAL_ERROR_CORE, is_internal=true, the_error=5) at
../../../../../../rtems/c/src/../../cpukit/score/src/interr.c:58
#1  0x0202ae58 in _Thread_Handler () at
../../../../../../rtems/c/src/../../cpukit/score/src/threadhandler.c:197
#2  0x0202acb0 in _Thread_Handler () at
../../../../../../rtems/c/src/../../cpukit/score/src/threadhandler.c:89

and the info local shows:
level = 4198629

The error=5 is probably INTERNAL_ERROR_THREAD_EXITTED (see also
> Internal_errors_Core_list).  How did you terminate the task?
>
> the task is terminated by Ctrl+C in sparc-rtems-gdb.
However, as I said in my last post, the problem is gone when I add
_Thread_Enable_dispatch() at the end of each while iteration...is it proper?

>
> --
> Sebastian Huber, embedded brains GmbH
>
> Address : Obere Lagerstr. 30, D-82178 Puchheim, Germany
> Phone   : +49 89 18 90 80 79-6
> Fax     : +49 89 18 90 80 79-9
> E-Mail  : sebastian.huber at embedded-**brains.de<sebastian.huber at embedded-brains.de>
> PGP     : Public key available on request.
>
> Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
>
>
> ______________________________**_________________
> rtems-devel mailing list
> rtems-devel at rtems.org
> http://www.rtems.org/mailman/**listinfo/rtems-devel<http://www.rtems.org/mailman/listinfo/rtems-devel>
>



-- 
Best wishes!
Zhongwei Yao
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20120709/ab562bf0/attachment-0001.html>


More information about the devel mailing list