<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EstiloDeEmail17
        {mso-style-type:personal-compose;
        font-family:Arial;
        color:windowtext;}
@page Section1
        {size:595.3pt 841.9pt;
        margin:70.85pt 3.0cm 70.85pt 3.0cm;}
div.Section1
        {page:Section1;}
 /* List Definitions */
 @list l0
        {mso-list-id:582642558;
        mso-list-type:hybrid;
        mso-list-template-ids:-2121602182 727499914 68550681 68550683 68550671 68550681 68550683 68550671 68550681 68550683;}
@list l0:level1
        {mso-level-text:"\(%1\)";
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
-->
</style>

</head>

<body lang=PT-BR link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Hi Joel,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:
10.0pt;font-family:Arial'>After a lot of time in test effort of an application
(based on RTEMS 4.8.0), I’ve found a strange behavior in rtems_message_queue_send().<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:
10.0pt;font-family:Arial'>The context is illustrated as follows:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span lang=EN-US
style='font-size:10.0pt;font-family:"Courier New"'>lenStatus = rtems_message_queue_send(mqID,
&Msg, sizeof(Msg));<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span lang=EN-US
style='font-size:10.0pt;font-family:"Courier New"'>if (lenStatus !=
RTEMS_SUCCESSFUL)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span lang=EN-US
style='font-size:10.0pt;font-family:"Courier New"'>{<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span lang=EN-US
style='font-size:10.0pt;font-family:"Courier New"'>    errorRecovery(…);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span lang=EN-US
style='font-size:10.0pt;font-family:"Courier New"'>}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:
10.0pt;font-family:Arial'>This code works fines if mqID identifies a valid
message queue object with enough space. But a bug in my application turned mqID
a valid TASK id. So, it was expected that the errorRecovery() function should
be called but, surprisingly, rtems_message_queue_send() returned
RTEMS_SUCCESSFUL (!).<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:
10.0pt;font-family:Arial'>Digging into the RTEMS source from rtems_message_queue_send(),
I figured out that only the index part the object id (the last significant
16-bit) is used to find the object’s entry in the
information->local_table (objectget.c). So, what happened was simply a coincidence:
an index of a Task Object fit to index a Queue Object.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:
10.0pt;font-family:Arial'>What is the right way to fix this? <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:
10.0pt;font-family:Arial'>Solutions:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:
10.0pt;font-family:Arial'>(1) To put more complexity in
rtems_message_queue_send() – hgrrr!. That is, code for verifying if the ID
is really a queue id;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:
10.0pt;font-family:Arial'>(2) Move such verification code to the application
level.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:
10.0pt;font-family:Arial'>Att.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span lang=EN-US style='font-size:
10.0pt;font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=1 color="#004080" face=Verdana><span
style='font-size:8.0pt;font-family:Verdana;color:#004080'>Wendell Pereira da
Silva</span></font><font size=1><span style='font-size:8.0pt'><o:p></o:p></span></font></p>

<p class=MsoNormal><b><font size=1 face=Arial><span style='font-size:7.5pt;
font-family:Arial;font-weight:bold'>COMP</span></font></b><strong><b><font
size=1 color=white face="Times New Roman"><span style='font-size:7.5pt;
color:white;background:maroon'>SIS</span></font></b></strong><font size=2
face=Verdana><span style='font-size:10.0pt;font-family:Verdana'> </span></font><font
size=1 color=gray face=Verdana><span style='font-size:7.5pt;font-family:Verdana;
color:gray'>Computadores e Sistemas Ind. e Com. </span></font><font size=1
color=gray face=Verdana><span lang=EN-US style='font-size:7.5pt;font-family:
Verdana;color:gray'>Ltda.</span></font><font size=1 face=Verdana><span
lang=EN-US style='font-size:7.5pt;font-family:Verdana'><br>
<font color=gray><span style='color:gray'>Aerospace Systems | [12] 2139-3966
ext. 977 | <a href="http://www.compsis.com.br/"><font color=gray><span
style='color:gray'>www.compsis.com.br</span></font></a></span></font></span></font><span
lang=EN-US><o:p></o:p></span></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span lang=EN-US
style='font-size:12.0pt'><o:p> </o:p></span></font></p>

</div>

</body>

</html>