<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>MQX Software SolutionsのトピックRe: MQX TCP bug - Lockup on more than one simultaneous open.</title>
    <link>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275800#M8540</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;We are working with MQX 4.2.0.2 and we are suffering the same problem.&lt;/P&gt;&lt;P&gt;is there any official patch to solve this problem? I can not find any, and Chris described perfectly more than one year ago.&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 13 Jun 2018 16:07:59 GMT</pubDate>
    <dc:creator>eukeniurkiaga</dc:creator>
    <dc:date>2018-06-13T16:07:59Z</dc:date>
    <item>
      <title>MQX TCP bug - Lockup on more than one simultaneous open.</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275793#M8533</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I have been working on this problem for about a week, and thought I would share my progress.&lt;/P&gt;&lt;P&gt;(Using MQX 4.0.1, but have checked and MQX 4.0.2.2 does not seem to have a fix.)&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Problem:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;I am working on a product with a 3G modem and a K70 based processor. It connects to the internet using PPP over USBOTG, and runs FTP and telnet servers, uses DNS, and sends data to a remote server (over TCP-IP).&lt;/P&gt;&lt;P&gt;We've noticed that if we cycle connection to the cellular network (simulating a customer moving in and out of coverage) we get reliable repeatable lockups (watchdog resets) .&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Investigation:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;I have tracked through RTCS and I have identified what I believe to be the problem:&lt;/P&gt;&lt;P&gt;To open a socket for an outgoing connection a call to socket_connect is made, which in turn calls the connect macro, which calls SOCK_STREAM_connect.&lt;/P&gt;&lt;P&gt;SOCK_STREAM_connect Has a local variable 'parms', which is populated and passed by reference (using RTCSCMD_issue) to TCP_Process_open.&lt;/P&gt;&lt;P&gt;TCP_Process_open stores this pointer in a linked list of pending open requests.&lt;/P&gt;&lt;P&gt;Note - this is a pointer to a local variable, which will go out of scope.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Each time a socket is opened, the local variable has the same address, so when the next pointer is stored it creates a loop in the linked list of pending open requests, which leads to an infinite loop in TCP_Return_open.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The same problem occurs when opening a socket to listen:&lt;/P&gt;&lt;P&gt;listen -&amp;gt; SOCK_STREAM_listen -&amp;gt; TCP_Process_open&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And TCP_Process_accept also looks like it suffers from the same vulnerability.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Proposed Solution:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Allocate memory in TCP_Process_open and TCP_Process_accept, and copy the data from the passed pointer to the newly allocated variable, then store that in the linked list.&lt;/P&gt;&lt;P&gt;Memory can be freed in the TCP_Return_open function after the call to RTCSCMD_complete.&lt;/P&gt;&lt;P&gt;I've attached a file with my fix - I've done a few hours bench testing, and it seems to solve the problem.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Questions:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Are there any problems with the propose solution?&lt;/P&gt;&lt;P&gt;Alternative solutions?&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-338439"&gt;tcp.c.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 23 Dec 2013 03:33:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275793#M8533</guid>
      <dc:creator>chrissolomon</dc:creator>
      <dc:date>2013-12-23T03:33:05Z</dc:date>
    </item>
    <item>
      <title>Re: MQX TCP bug - Lockup on more than one simultaneous open.</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275794#M8534</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I would like to bump this thread.&amp;nbsp; We are seeing a similar issue in MQX for KSDK 1.1.&amp;nbsp; We are using client sockets in MQX to connect to a server and push data.&amp;nbsp; There are multiple tasks that could be performing these pushes, and thus multiple connections.&amp;nbsp; This occasionally locks up, and when we attach a debugger, we find that the tcp_cfg-&amp;gt;OPENS list in TCP_Return_open() consists of two elements that have been linked into a loop (we have yet to see a time where there are more than two elements, but I suspect it could happen with two or more elements).&amp;nbsp; Therefore, it is in an infinite while loop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-Bowe&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 20 Jul 2015 16:53:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275794#M8534</guid>
      <dc:creator>bowe</dc:creator>
      <dc:date>2015-07-20T16:53:23Z</dc:date>
    </item>
    <item>
      <title>Re: MQX TCP bug - Lockup on more than one simultaneous open.</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275795#M8535</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Chris,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I will try to reproduce this issue and report it to MQX development team.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you have a simple porject where I can see this behavior it would be very helpful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Carlos&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 27 Jul 2015 23:58:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275795#M8535</guid>
      <dc:creator>Carlos_Musich</dc:creator>
      <dc:date>2015-07-27T23:58:40Z</dc:date>
    </item>
    <item>
      <title>Re: MQX TCP bug - Lockup on more than one simultaneous open.</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275796#M8536</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Carlos,&lt;/P&gt;&lt;P&gt;we have had the originally proposed fix in production from a month or so after my original post.&lt;/P&gt;&lt;P&gt;It works for us.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Glad to see that this bug may finally be getting some attention.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Chris&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 12 Aug 2015 23:19:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275796#M8536</guid>
      <dc:creator>chrissolomon</dc:creator>
      <dc:date>2015-08-12T23:19:10Z</dc:date>
    </item>
    <item>
      <title>Re: MQX TCP bug - Lockup on more than one simultaneous open.</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275797#M8537</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Our solution...err...(poor) work-around was to mutex the connect function, so that only one tcp connect could be pending at any given time.&amp;nbsp; Of course, this has the side effect of only allowing one task at a time to perform a connect, which can delay other tasks significantly in the case of a connect timeout.&amp;nbsp; Not a good work-around, but it seems to work (and perhaps gives a better hint into the problem?).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-Bowe&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 12 Aug 2015 23:49:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275797#M8537</guid>
      <dc:creator>bowe</dc:creator>
      <dc:date>2015-08-12T23:49:05Z</dc:date>
    </item>
    <item>
      <title>Re: MQX TCP bug - Lockup on more than one simultaneous open.</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275798#M8538</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There is a problem that when an active open request (connect()) changes state from SYN_SENT to SYN_RECEIVED and the TCB is closed on error (perhaps due to send timeout) the connect request is not removed from the OPENS list. So the TCB closes, but the request stays in the OPENS list, TCP_PARM in next connect() has the same address (as it would be when TCP_PARM is on stack) we have the problem. The same issue would occur if application request closes the connecting socket (connect() in SYN_RECEIVED state). &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What can help - make sure the TCB, that is being deallocated, is not left in the OPENS list - lines 62-95:&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_1456731888684579 jive_text_macro" data-renderedposition="138_8_1192_1536" jivemacro_uid="_1456731888684579"&gt;&lt;P&gt;/*FUNCTION*-------------------------------------------------------------&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;* Function Name&amp;nbsp;&amp;nbsp; : TCP_Free_TCB&lt;/P&gt;&lt;P&gt;* Returned Values : None.&lt;/P&gt;&lt;P&gt;* Comments&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&amp;nbsp; Deallocate TCB; must only be done when TCB has been closed and released.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*END*-----------------------------------------------------------------*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void TCP_Free_TCB&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; (&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCB_STRUCT_PTR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcb,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* IN/OUT - TCP context */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCP_CFG_STRUCT_PTR&amp;nbsp;&amp;nbsp; tcp_cfg&amp;nbsp; /* IN/OUT - TCP layer data */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; )&lt;/P&gt;&lt;P&gt;{ /* Body */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; TCB_STRUCT_PTR&amp;nbsp;&amp;nbsp;&amp;nbsp; tmp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if(NULL==tcb) return;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; /*&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; ** Free everything which wasn't freed in TCP_Close_TCB() ...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; TCP_Truncate_receive_chunks(tcb, tcp_cfg, tcb-&amp;gt;rcvlen); /* delete all chunk nodes */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if ( tcb-&amp;gt;rcvringbuf != NULL ) {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _mem_free(tcb-&amp;gt;rcvringbuf);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcb-&amp;gt;rcvringbuf = NULL;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; } /* Endif */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; /*&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; ** Deallocate TCB itself&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if ( tcb != NULL ) {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( tcb == tcp_cfg-&amp;gt;TCBhead ) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp_cfg-&amp;gt;TCBhead = tcb-&amp;gt;next;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tmp = tcp_cfg-&amp;gt;TCBhead;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( tmp != NULL &amp;amp;&amp;amp; tmp-&amp;gt;next != tcb ) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tmp = tmp-&amp;gt;next;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } /* Endwhile */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( tmp != NULL ) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tmp-&amp;gt;next = tcb-&amp;gt;next;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } /* Endif */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } /* Endif */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; } /* Endif */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if (tcb-&amp;gt;SOCKET) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((SOCKET_STRUCT_PTR)tcb-&amp;gt;SOCKET)-&amp;gt;TCB_PTR = NULL;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; } /* Endif */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; tcb-&amp;gt;VALID = TCB_INVALID_ID;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; tcp_cfg-&amp;gt;CONN_COUNT--;&lt;/P&gt;&lt;P&gt;#if RTCSCFG_TCP_MAX_HALF_OPEN&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCB_HALF_OPEN_DROP&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; _mem_free(tcb);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; /* double check OPENS list. &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * if the tcb is in OPENS list now, just return with error,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * so that application is aware. &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * normally it should not happen, as accept()/connect() request&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * if removed from OPENS list during ESTABLISHED and FINWAIT_1 states.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCP_PARM_PTR&amp;nbsp; req_ptr;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* upper layer request */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCP_PARM_PTR&amp;nbsp; prev_ptr;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* previous upper layer request */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prev_ptr = NULL;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; req_ptr = tcp_cfg-&amp;gt;OPENS;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (req_ptr != NULL &amp;amp;&amp;amp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcb != req_ptr-&amp;gt;TCB_PTR) &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prev_ptr = req_ptr;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; req_ptr = req_ptr-&amp;gt;NEXT;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (req_ptr != NULL) &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (prev_ptr == NULL) &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp_cfg-&amp;gt;OPENS = req_ptr-&amp;gt;NEXT;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prev_ptr-&amp;gt;NEXT = req_ptr-&amp;gt;NEXT;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } /* Endif */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; req_ptr-&amp;gt;NEXT = NULL;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; req_ptr-&amp;gt;TCB_PTR = tcb;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RTCSCMD_complete(req_ptr, RTCSERR_TCP_CONN_RLSD);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;} /* Endbody */&lt;/P&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 29 Feb 2016 07:55:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275798#M8538</guid>
      <dc:creator>Martin_</dc:creator>
      <dc:date>2016-02-29T07:55:36Z</dc:date>
    </item>
    <item>
      <title>Re: MQX TCP bug - Lockup on more than one simultaneous open.</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275799#M8539</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Original Content&amp;nbsp;posted by Manh Nguyen&amp;nbsp;on Feb 4, 2016&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;Hello Chris,&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: inherit;"&gt;Your solution can fix this bug but it caused a new bug which was described at&lt;/SPAN&gt;&lt;A class="" data-containerid="2023" data-containertype="14" data-content-finding="Community" data-objectid="383555" data-objecttype="1" href="https://community.freescale.com/thread/383555" style="color: #5e89c1; background-color: transparent; border: 0px; font-weight: inherit; padding: 1px 0px 1px calc(12px + 0.35ex);"&gt;https://community.freescale.com/thread/383555&lt;/A&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;The function connect() always return RTCS_OK even if it fails&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;In RTCS_cmd_issue() function:&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Execute TCP_Process_open =&amp;gt; ... =&amp;gt; TCP_Return_open&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Function TCP_Return_open() will store error code to tcp_cfg-&amp;gt;OPENS-&amp;gt;ERROR field&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; but due to tcp_cfg-&amp;gt;OPENS is pointed to "open_rqst_ptr" therefore error code will be&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; stored to "open_rqst_ptr" not "parms" and function RTCS_cmd_issue() always return RTCS_OK&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;uint32_t&amp;nbsp; SOCK_STREAM_connect&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;{&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCP_PARM parms;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // parms is passed to TCP_Process_open() through RTCS_cmd_issue()&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return RTCS_cmd_issue(&amp;amp;parms, TCP_Process_open);&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;}&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;void RTCS_cmd_issue(parms_ptr, ...)&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;{&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Send message to execute TCP_Process_open, TCP_Return_open&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // and block task until connect success or timeout&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //...&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return parm_ptr-&amp;gt;ERROR;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;}&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;void TCP_Process_open(parms_ptr)&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;{&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCP_PARM_PTR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; open_rqst_ptr;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Allocate and copy parms to open_rqst_ptr&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ...&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tcp_cfg-&amp;gt;OPENS = open_rqst_ptr;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;}&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;void TCP_Return_open(tcb, errnum, tcp_cfg)&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;{&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCP_PARM_PTR reg_ptr = tcp_cfg-&amp;gt;OPENS;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // RTCSCMD_complete(req_ptr, errnum);&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (errnum)&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp; &lt;SPAN style="border: 0px; font-weight: bold;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // due to tcp_cfg-&amp;gt;OPENS is pointed to "open_rqst_ptr" therefore error code will be&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&lt;SPAN style="border: 0px; font-weight: bold;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // stored to "open_rqst_ptr" not "parms" and parms-&amp;gt;ERROR is RTCS_OK always&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; reg_ptr-&amp;gt;ERROR = errnum;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;}&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;I suggest a other solution: We will allocate memory in SOCK_STREAM_connect() instead of allocate in TCP_Process_open() and free it before return parm_ptr-&amp;gt;ERROR. I thought this solution can resolve this issue without cause a new bug but I'm not sure because I can't reproduce this issue.&lt;/P&gt;&lt;P style="color: #51626f; background-color: #ffffff; border: 0px;"&gt;Can you have a look on my solution?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 04 Oct 2016 23:13:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275799#M8539</guid>
      <dc:creator>dianatorres</dc:creator>
      <dc:date>2016-10-04T23:13:44Z</dc:date>
    </item>
    <item>
      <title>Re: MQX TCP bug - Lockup on more than one simultaneous open.</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275800#M8540</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;We are working with MQX 4.2.0.2 and we are suffering the same problem.&lt;/P&gt;&lt;P&gt;is there any official patch to solve this problem? I can not find any, and Chris described perfectly more than one year ago.&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Jun 2018 16:07:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275800#M8540</guid>
      <dc:creator>eukeniurkiaga</dc:creator>
      <dc:date>2018-06-13T16:07:59Z</dc:date>
    </item>
    <item>
      <title>Re: MQX TCP bug - Lockup on more than one simultaneous open.</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275801#M8541</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, I have bee investigating a little more and I have detected that the problem was resolved in&amp;nbsp;MQX RTOS 4.2.0.1 patch (MQX-5591). However all the changes done in tcp.c in 4.2.0.1 patch , have been undone in&amp;nbsp;&lt;SPAN&gt;MQX RTOS 4.2.0.2 patch. Why? Has it been an errror?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Jun 2018 13:37:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275801#M8541</guid>
      <dc:creator>eukeniurkiaga</dc:creator>
      <dc:date>2018-06-14T13:37:49Z</dc:date>
    </item>
    <item>
      <title>Re: MQX TCP bug - Lockup on more than one simultaneous open.</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275802#M8542</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you very much for your feedback. I think the mqx 4.2.0.2 patch should include mqx 4.2.0.1 patch, there maybe a mistake here. You can manually merge the bug fix to your project.&lt;/P&gt;&lt;P&gt;&amp;nbsp;I am sorry that there will be no new release for MQX 4.2 any more.&lt;/P&gt;&lt;P&gt;MQX v5 is a continuation of MQX 4.2 with commercial license.&lt;/P&gt;&lt;P&gt;Please check below link for more details&lt;/P&gt;&lt;P&gt;&lt;A class="" href="https://community.nxp.com/external-link.jspa?url=https%3A%2F%2Fwww.nxp.com%2Fsupport%2Fdeveloper-resources%2Frun-time-software%2Fmqx-software-solutions%2Fmqx-v5-software-solutions%3AMQX-V5%3F%26tid%3Dvanmqxv5" rel="nofollow" target="_blank"&gt;MQX™ v5 Software Solutions|NXP&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Jun 2018 15:52:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275802#M8542</guid>
      <dc:creator>danielchen</dc:creator>
      <dc:date>2018-06-15T15:52:38Z</dc:date>
    </item>
    <item>
      <title>Re: MQX TCP bug - Lockup on more than one simultaneous open.</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275803#M8543</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Do you have a copy of the patch you applied?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Jun 2019 12:15:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275803#M8543</guid>
      <dc:creator>franciscolovera</dc:creator>
      <dc:date>2019-06-24T12:15:50Z</dc:date>
    </item>
    <item>
      <title>Re: MQX TCP bug - Lockup on more than one simultaneous open.</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275804#M8544</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;please see the attached file&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 25 Jun 2019 02:55:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-TCP-bug-Lockup-on-more-than-one-simultaneous-open/m-p/275804#M8544</guid>
      <dc:creator>danielchen</dc:creator>
      <dc:date>2019-06-25T02:55:20Z</dc:date>
    </item>
  </channel>
</rss>

