<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Data Queues crashing Zephyr code</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/82254/data-queues-crashing-zephyr-code</link><description>Hello, 
 I am writing a code that has 2 threads. One puts data in a queue and the other gets the data from the queue. The problem is after I get the data from the queue and it&amp;#39;s printed, the device gives an error and reboots. I think the problem might</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 03 Jan 2022 10:56:51 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/82254/data-queues-crashing-zephyr-code" /><item><title>RE: Data Queues crashing Zephyr code</title><link>https://devzone.nordicsemi.com/thread/345628?ContentTypeID=1</link><pubDate>Mon, 03 Jan 2022 10:56:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e98ed540-2e76-493c-9a39-1e3dc460aa2c</guid><dc:creator>Didrik Rokhaug</dc:creator><description>&lt;p&gt;I&amp;#39;ve tried to reproduce your errors, based on your code, but haven&amp;#39;t been able to. I&amp;#39;ve attached my test program. Is it a reasonable approximation to what you are doing?&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/280515_5F00_data_5F00_queues.zip"&gt;devzone.nordicsemi.com/.../280515_5F00_data_5F00_queues.zip&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Data Queues crashing Zephyr code</title><link>https://devzone.nordicsemi.com/thread/345202?ContentTypeID=1</link><pubDate>Tue, 28 Dec 2021 09:12:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3014958b-de6f-430c-96e5-1786a2d054d8</guid><dc:creator>Svetlio141</dc:creator><description>&lt;p&gt;Hello Didrik,&lt;/p&gt;
&lt;p&gt;1. I used it the same way for uint8_t but I didn&amp;#39;t have any problems with it so I tought the problem is not from the cJSON.&lt;/p&gt;
&lt;p&gt;2. This was part of the AWS_IOT sample code so I left it like that.&lt;/p&gt;
&lt;p&gt;3. I used the stdlib.h library.&lt;/p&gt;
&lt;p&gt;I first tried the code passing the uint64_t value directly to the&amp;nbsp;aws_put_to_dataq_timeq() function without a queue and with cJSON and then it didn&amp;#39;t had any problems. That is why I think that the problem comes from the queues, because when I implement it then it occurs.&lt;/p&gt;
&lt;p&gt;Also I did my own function for queues and again I am using cJSON and I don&amp;#39;t have an error with this.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Data Queues crashing Zephyr code</title><link>https://devzone.nordicsemi.com/thread/344982?ContentTypeID=1</link><pubDate>Thu, 23 Dec 2021 14:44:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:70c9b6d9-794f-43c3-aad9-15ecd3cff3e9</guid><dc:creator>Didrik Rokhaug</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;What makes you think that the crashes comes from the message queue, and not something else, such as you JSON handling?&lt;/p&gt;
&lt;p&gt;I have been looking over your code, and there are some questions that comes to mind:&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1.&amp;nbsp;&lt;pre class="ui-code" data-mode="c_cpp"&gt;oid aws_put_to_dataq_timeq(uint8_t put_data, uint64_t put_time){
   
    if (data_q == NULL){
        printk(&amp;quot;Eda msgq is null! Did you forget to call register_msgq_address?&amp;quot;);
        return;
    }
    if (time_q == NULL){
        printk(&amp;quot;Eda msgq is null! Did you forget to call register_msgq_address?&amp;quot;);
        return;
    }
   
    k_msgq_put(data_q, &amp;amp;put_data, K_NO_WAIT);
    k_msgq_put(time_q, &amp;amp;put_time, K_NO_WAIT);
 
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;In this code, you put a uint64_t into the message queue, not a data_time struct. Given that the data_time struct only holds a uint64_t, this should work, but it is still bad design.&lt;/p&gt;
&lt;p&gt;2.&amp;nbsp;&lt;pre class="ui-code" data-mode="c_cpp"&gt; if (root_obj == NULL){
    cJSON_Delete(root_obj);
    err = -ENOMEM;
    return err;
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Here, you are freeing a NULL pointer. The cJSON library should handle it, so that the call to cJSON_Delete becomes a no-op, but again it points to a bad implementation.&lt;/p&gt;
&lt;p&gt;3. 64-bit support in stdio.h and string.h is usually not included by default in libc in NCS. Which libc implementation are you using, and have you enabled 64-bit support?&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Didrik&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Data Queues crashing Zephyr code</title><link>https://devzone.nordicsemi.com/thread/344779?ContentTypeID=1</link><pubDate>Wed, 22 Dec 2021 12:24:28 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:52ecac2d-7800-4f43-84b1-0b74e6a69402</guid><dc:creator>run_ar</dc:creator><description>&lt;p&gt;Hi,&lt;br /&gt;Unfortunately we will be a bit low on staff due to Holidays. Not sure if we will be able to come back to you before the first week of January, Sorry for the inconvenience.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Data Queues crashing Zephyr code</title><link>https://devzone.nordicsemi.com/thread/344246?ContentTypeID=1</link><pubDate>Mon, 20 Dec 2021 07:21:22 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3cbe6dbf-bfaf-4f15-ae79-4ad05e845be3</guid><dc:creator>Svetlio141</dc:creator><description>&lt;p&gt;I tried it but unfortunately, the program crashes again.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Data Queues crashing Zephyr code</title><link>https://devzone.nordicsemi.com/thread/343971?ContentTypeID=1</link><pubDate>Thu, 16 Dec 2021 15:08:00 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c3483821-b718-4592-906d-b71660957d51</guid><dc:creator>Hakon</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;have you tried increasing the &lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/kconfig/CONFIG_MAIN_STACK_SIZE.html#config-main-stack-size"&gt;main stack size&lt;/a&gt;?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Data Queues crashing Zephyr code</title><link>https://devzone.nordicsemi.com/thread/342003?ContentTypeID=1</link><pubDate>Mon, 06 Dec 2021 09:11:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9ac33c48-c2f3-4457-a0a4-83268725aee3</guid><dc:creator>Svetlio141</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;The data_senq is not a problem and the code just with it works without a problem that&amp;#39;s why I didn&amp;#39;t include more of it in the explanation.&lt;/p&gt;
&lt;p&gt;For the other parts, the .h file I changed a bit:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;struct&lt;/span&gt;&lt;span&gt; data_time{&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;uint64_t&lt;/span&gt;&lt;span&gt; time1;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;K_MSGQ_DEFINE&lt;/span&gt;&lt;span&gt;(data_timeq, &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;struct&lt;/span&gt;&lt;span&gt; data_time), &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;This is how I call the time_q in data_gen.c file to withe a variable in the queue:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;struct&lt;/span&gt;&lt;span&gt; k_msgq&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; time_q;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;data_gen&lt;/span&gt;&lt;span&gt;(){&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;uint64_t&lt;/span&gt;&lt;span&gt; message_ts &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; err &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;date_time_now&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;message_ts);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (err) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;printk&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;quot;date_time_now, error: %d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;, err);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; err;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;aws_put_to_dataq_timeq&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;sine_table&lt;/span&gt;&lt;span&gt;[i], message_ts);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;register_msgq_addres1&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;struct&lt;/span&gt;&lt;span&gt; k_msgq&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ptr_from_main_data&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;struct&lt;/span&gt;&lt;span&gt; k_msgq&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ptr_from_main_time&lt;/span&gt;&lt;span&gt;){&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; data_q &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; ptr_from_main_data;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; time_q &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; ptr_from_main_time;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;aws_put_to_dataq_timeq&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;uint8_t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;put_data&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;uint64_t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;put_time&lt;/span&gt;&lt;span&gt;){&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (data_q &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;){&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;printk&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;quot;Eda msgq is null! Did you forget to call register_msgq_address?&amp;quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (time_q &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;){&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;printk&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;quot;Eda msgq is null! Did you forget to call register_msgq_address?&amp;quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;k_msgq_put&lt;/span&gt;&lt;span&gt;(data_q, &lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;put_data, K_NO_WAIT);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;k_msgq_put&lt;/span&gt;&lt;span&gt;(time_q, &lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;put_time, K_NO_WAIT);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;and this is in MQTT_AWS.c file how I read the data from the queue:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;static&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;data_publish&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; err&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;char&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;message;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;uint64_t&lt;/span&gt;&lt;span&gt; message_ts &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;uint8_t&lt;/span&gt;&lt;span&gt; sen_val &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;k_msgq_num_used_get&lt;/span&gt;&lt;span&gt;(data_q1) &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;){&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;k_msgq_num_used_get&lt;/span&gt;&lt;span&gt;(time_q1) &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;){&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;aws_get_from_q(&amp;amp;message_ts, &amp;amp;sen_val);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (root_obj &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;){ &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;cJSON_Delete&lt;/span&gt;&lt;span&gt;(root_obj);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; err &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;ENOMEM;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; err;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; err &lt;/span&gt;&lt;span&gt;+=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;json_add_number&lt;/span&gt;&lt;span&gt;(root_obj, &lt;/span&gt;&lt;span&gt;&amp;quot;sen&amp;quot;&lt;/span&gt;&lt;span&gt;, sen_val);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; err &lt;/span&gt;&lt;span&gt;+=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;json_add_number&lt;/span&gt;&lt;span&gt;(root_obj, &lt;/span&gt;&lt;span&gt;&amp;quot;ts&amp;quot;&lt;/span&gt;&lt;span&gt;, message_ts);&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (err) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;printk&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;quot;json_add, error: %d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;, err);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;goto&lt;/span&gt;&lt;span&gt; cleanup;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; message &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;cJSON_Print&lt;/span&gt;&lt;span&gt;(root_obj);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (message &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;printk&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;quot;cJSON_Print, error: returned NULL&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; err &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;ENOMEM;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;goto&lt;/span&gt;&lt;span&gt; cleanup;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;struct&lt;/span&gt;&lt;span&gt; aws_iot_data tx_data &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .qos &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; MQTT_QOS_0_AT_MOST_ONCE,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&lt;/span&gt;&lt;span&gt;topic&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; AWS_IOT_SHADOW_TOPIC_UNKNOWN,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&lt;/span&gt;&lt;span&gt;topic&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;str&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; topic_string,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .&lt;/span&gt;&lt;span&gt;topic&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;len&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;sizeof&lt;/span&gt;&lt;span&gt;(topic_string),&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .ptr &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; message,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .len &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;strlen&lt;/span&gt;&lt;span&gt;(message)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;printk&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;quot;Publishing: %s to AWS IoT broker&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;, message);&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; err &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;aws_iot_send&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;tx_data);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (err) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;printk&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;quot;aws_iot_send, error: %d&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;, err);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;cJSON_FreeString&lt;/span&gt;&lt;span&gt;(message);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;cleanup:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;cJSON_Delete&lt;/span&gt;&lt;span&gt;(root_obj);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; err;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;aws_get_from_q&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;uint64_t&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;get_time&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;uint8_t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;get_data&lt;/span&gt;&lt;span&gt;){&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span&gt;k_msgq_get(time_q1, get_time, K_NO_WAIT);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;k_msgq_get&lt;/span&gt;&lt;span&gt;(data_q1, get_data, K_NO_WAIT);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;register_msgq_addres2&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;struct&lt;/span&gt;&lt;span&gt; k_msgq&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ptr_from_main_data&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;struct&lt;/span&gt;&lt;span&gt; k_msgq&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ptr_from_main_time&lt;/span&gt;&lt;span&gt;){&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; data_q1 &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; ptr_from_main_data;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; time_q1 &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; ptr_from_main_time;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;Currently the code gets data out and it diesn&amp;#39;t crash, but the data is not correct and it&amp;#39;s always the same number. It&amp;#39;s UNIX timestamp, but for a completely different time that it currently is.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Data Queues crashing Zephyr code</title><link>https://devzone.nordicsemi.com/thread/341515?ContentTypeID=1</link><pubDate>Wed, 01 Dec 2021 13:06:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e8d90039-0405-42eb-a4ad-4b33f1f25a26</guid><dc:creator>Amanda Hsieh</dc:creator><description>&lt;p&gt;Hi,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;From the team:&lt;/p&gt;
&lt;p&gt;The message queue definition looks fine, and the used alignment to one byte should not matter here. However, there is too little code to say something more - no definition of data_senq, it is not shown how an element is taken from the queue, when register_msgq_address2 is called, etc. Is it possible to elaborate in more detail? It&amp;#39;s better to put some more effort into preparing this question if you expect some real help.&amp;nbsp;The full error message could also be helpful.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Regards,&lt;br /&gt;Amanda&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Data Queues crashing Zephyr code</title><link>https://devzone.nordicsemi.com/thread/341460?ContentTypeID=1</link><pubDate>Wed, 01 Dec 2021 09:39:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d5276c1f-5da3-4622-900a-b15b7e1d0456</guid><dc:creator>tedhavelka</dc:creator><description>&lt;p&gt;Hello Svetlio,&lt;/p&gt;
&lt;p&gt;My apologies, you may be correct about the question of alignment, which we get to specify in the fourth parameter to &lt;span&gt;K_MSGQ_DEFINE(&lt;/span&gt;...).&amp;nbsp; I should have looked up the notes on this Zephyr macro.&amp;nbsp; Given the macro use notes at:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.zephyrproject.org/2.6.0/reference/kernel/data_passing/message_queues.html?highlight=k_msgq_define#c.K_MSGQ_DEFINE"&gt;https://docs.zephyrproject.org/2.6.0/reference/kernel/data_passing/message_queues.html?highlight=k_msgq_define#c.K_MSGQ_DEFINE&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I would try changing the last parameter to `sizeof(uint64_t)` or `sizeof(long int)`.&amp;nbsp; While Zephyr&amp;#39;s documentation reads,&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;em&gt;&amp;quot;...The buffer is aligned to a q_align -byte boundary, which must be a power of 2. To ensure that each message is similarly aligned to this boundary, q_msg_size must also be a multiple of q_align.&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;and 2^0 equals 1, I wonder whether Zephyr developers meant to say &amp;quot;non zero and positive integer power of two&amp;quot;.&amp;nbsp; The last sentence in the quote above makes me question this way.&amp;nbsp; If and when q_align has the value 1, then it&amp;#39;s trivial to say that q_msg_size or any other parameter should be a multiple of q_align, because all positive integers greater than 1 are themselves multiples of 1.&lt;/p&gt;
&lt;p&gt;If it turns out `sizeof(uint64_t)` as a fourth parameter fails similarly, you could try aligning on the size of your struct data_time.&lt;/p&gt;
&lt;p&gt;Sorry I am not able to run a quick test.&amp;nbsp; I&amp;#39;ve been working with function pointers and pointers to data structures, but am not yet using Zephyr queues.&amp;nbsp; Not sure if I can fully recreate your code in a Zephyr template or empty app of my own.&amp;nbsp; I see how `data_timeq` is defined, via that macro.&amp;nbsp; But I don&amp;#39;t see how `data_senq` is defined.&amp;nbsp; I&amp;#39;d be guessing to try and define it with a similar use of &lt;span&gt;K_MSGQ_DEFINE(&lt;/span&gt;...).&lt;/p&gt;
&lt;p&gt;This looks like an interesting problem, though, and I&amp;#39;m interested to understand how to solve it from a standpoint of using the queue macros correctly.&lt;/p&gt;
&lt;p&gt;- Ted&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Data Queues crashing Zephyr code</title><link>https://devzone.nordicsemi.com/thread/341439?ContentTypeID=1</link><pubDate>Wed, 01 Dec 2021 08:00:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:65d70596-a5b3-446c-a508-6f372eee12f1</guid><dc:creator>Svetlio141</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I tried printing the results of time_q1 and data_q1 and I actually get addresses so the problem is not that they are NULL.&lt;/p&gt;
&lt;p&gt;I was thinking that the problem might be in the definition here:&lt;/p&gt;
&lt;p&gt;&lt;span&gt;K_MSGQ_DEFINE(data_timeq, sizeof(struct data_time), 4, 1);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Since the data that I am putting in the queue is uint64_t and I am not sure if the aligning is correct since I had problems understanding it&amp;#39;s purpose.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Data Queues crashing Zephyr code</title><link>https://devzone.nordicsemi.com/thread/341383?ContentTypeID=1</link><pubDate>Tue, 30 Nov 2021 18:55:55 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:915ab2bc-ad10-4638-bd68-f9bd9f1b87d3</guid><dc:creator>tedhavelka</dc:creator><description>&lt;p&gt;Hello Svetlio,&lt;/p&gt;
&lt;p&gt;Your code looks similar to some code I was recently writing.&amp;nbsp; Given that you are able to &amp;quot;get the data from the queue and it&amp;#39;s printed&amp;quot;, your Zephyr queues are likely configured and working.&amp;nbsp; The error seems to indicate a program counter (pc) pointing to the memory address &amp;quot;zero&amp;quot;.&amp;nbsp; I&amp;nbsp; believe that&amp;#39;s what the error message means.&amp;nbsp; I&amp;#39;ve gotten this when a pointer I thought was assigned a valid address is actually NULL.&amp;nbsp; The value or entity &amp;quot;NULL&amp;quot; often translates to zero in many programming languages and contexts, though not all.&lt;br /&gt;&lt;br /&gt;If you add an IF construct to test whether your pointers `data_q1` and `time_q1` are NULL where they are referenced outside of main.c routines, what result do you see?&amp;nbsp; You can just printk() a short message if they&amp;#39;re null, instead of referencing them in the needed way.&amp;nbsp; Quick test to see whether they&amp;#39;re getting assigned the memory addresses you intend them to have.&lt;/p&gt;
&lt;p&gt;- Ted&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>