anchao opened a new issue #1804:
URL: https://github.com/apache/incubator-nuttx/issues/1804


   We already have the corresponding fix on 
https://github.com/apache/incubator-nuttx/pull/1585
   but which still pending on review, @patacongo  could you please kindly fix 
this issue if you do not like our solution?
   
   Enable config:
   
   ```
   CONFIG_DEBUG_ASSERTIONS=y
   CONFIG_DEBUG_FEATURES=y
   ```
   
   
   Example code as below:
   
   ```
   #include <stdio.h>
   #include <fcntl.h>
   #include <unistd.h>
   #include <mqueue.h>
   #include <pthread.h>
   #include <errno.h>
   
   static mqd_t qid;
   
   static void *recv_thread(void *arg)
   {
     struct mq_attr attr;
     int deadcounter;
     int ret;
   
     mq_getattr(qid, &attr);
   
     while (1) {
       ret = mq_receive(qid, (void *)&deadcounter, attr.mq_msgsize, NULL);
       if (ret > 0) {
         printf("deadcounter: %d\n", deadcounter);
       }
     }
   
     return NULL;
   }
   
   int main(int argc, char *argv[])
   {
     int counter = 3;
     pthread_t pid;
     int ret;
   
     qid = mq_open("/test", O_RDWR | O_CREAT | O_EXCL, 0666, NULL);
   
     if (qid < 0) {
       if (errno == EEXIST) {
         mq_unlink("/test");
         qid = mq_open("/test", O_RDWR | O_CREAT, 0666, NULL);
       } else
         return -1;
     }
   
     ret = pthread_create(&pid, NULL, recv_thread, NULL);
     if (ret < 0)
       goto bail;
   
     while (mq_send(qid, (void *)&counter, sizeof(int), 1) >= 0) {
       sleep(1);
       if (counter-- == 0)
         pthread_cancel(pid);
     }
   
   bail:
     mq_close(qid);
   
     return 0;
   }
   
   ```
   
   
   Assertion:
   
   ```
   NuttShell (NSH) NuttX-9.1.0
   MOTD: username=admin password=Administrator
   nsh> hello
   deadcounter: 3
   deadcounter: 2
   deadcounter: 1
   deadcounter: 0
   Assertion failed at file:mqueue/mq_sndinternal.c line: 420
   ```
   
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to