We have a quite large multitasking communication system implemented on Vxworks 5.5 and PPC8260. The system should handle a lot of Ethernet traffic and also handle some cyclic peripheral control activities via RS-232, memory mapped I/O etc. What happens is that in some moment few message queues we are using for inter task communication become overflowed (I see it by log inspection). When I check the status of tasks responsible for serving this Message queues (that is doing receive on them) they appear to be READY.When I inspect msgQShow for the queues themselves they are full but no tasks appear to be blocked on them. But looking at task stack trace shows that a task actually pending inside msgQReceive call.Specifically in the qJobGet kernel call or something alike.
vxworks message queue "lost" a task blocked on it. What can be a reason?
433 Views Asked by ErikRTDev At
1
There are 1 best solutions below
Related Questions in MULTITHREADING
- new thread blocks main thread
- WPF MessageBox Cancel checkbox check
- How to avoid concurrent access to a resource?
- run oncomplete event in async
- Threading Segfault when reading members
- Function timeouts in C and thread
- How are multiple requests to Task.Run handled from a resource management standpoint?
- Acumatica perfomance with threads
- Wait and Notify in Java threads for a given interval
- Different behavior of async with Visual Studio 2013(Windows8.1) and GCC 4.9(Ubuntu14.10)
- How to return blocking queue to the right object?
- background thread using Task.Run
- deletion and cleanup of worker thread in Qt crashes
- Pipeline-like operation using TChan
- implementing in app purchase on android
Related Questions in MESSAGE-QUEUE
- Message Queues: Per Message Guarantees
- mq_timedsend() returns error 14 "bad address"
- Posix message queues and the command line?
- Best way to ensure an event is eventually published to a message queuing sytem
- Azure Service Bus Queue grouped messages
- How to interrupt an xQueueReceive() API in FreeRTOS?
- Spring JMS - Unable to connect to broker URL with embedded Broker
- How to do error handling with EasyNetQ / RabbitMQ
- Setting message priority in RabbitMQ PHP
- Using a queuing system to do custom logic
- Storm-jms Spout collecting Avro messages and sending down stream?
- How many tcp connection created on a queuing protocol such as ZeroMQ
- RabbitMQ: How to send Dead Letter Exchange from Erlang client
- What happens to message in queue of 1 length which is not acked in rabbitmq?
- Can I view raw message in iron.io webpage?
Related Questions in VXWORKS
- Task Activation VxWorks vs. Posix
- Does free() free the memory immediately
- Changing IP address at runtime
- define string at compiler options
- vxworks message queue "lost" a task blocked on it. What can be a reason?
- Can statfs() read a remote FTP drive?
- tftpGet error from tftpLib in VxWorks
- i get a tftp timeout from vxworks
- manully establish connection to ftp server using sockets
- How can I send [SYN] with bare sockets?
- read from ftp socket in vxworks
- why is this not writing (receiving) the correct number of Bytes?
- How to know the limitations of specific VxWorks version?
- VxWorks CF creatred with dosFsVolFormat cannot be read on Windows
- Error using Boost C++ Libraries with VxWorks
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
It is unlikely in the extreme that a message queue "lost" a task that was blocked on it.
From your description we can assume:
The READY state is the state that tasks are in when they are available to run. Tasks are held in a queue (strictly, one queue per priority level), and when the reach the head of the queue they will be scheduled.
If tasks are persistently showing as READY, that suggests that they are not getting CPU time. The fact that the msgQ does not appear to empty supports that.
You should use tools such as system viewer to diagnose. You may need to raise the priority of the reader tasks. If your msgQSend is using NO_WAIT, you may need to use a timeout value