Quality RTOS & Embedded Software

 Real time embedded FreeRTOS RSS feed 
Real time embedded FreeRTOS mailing list 
Quick Start Supported MCUs PDF Books Trace Tools Ecosystem TCP & FAT Training


FreeRTOS simulator on windows deadlock with standard libraries

Posted by alpmkn on July 28, 2014

Dear All,

Our application freezes after a while. The problem seems to be the use of the standard C++ libraries. In the standard libraries a critical section is used which results in a dead lock of the application.

The running threads is then locked in a critical section which is not known by FreeRTOS. If the thread that is running has a higher priority no other tasks will run. We found that this problem can occur immediately or after a period of time.

In the example project of the FreeRTOS windows simulator we created a timer and a thread. The timer uses a map and sends something using a FreeRTOS queue. The task waits forever for the queue and then prints the value in the map to the console.

I have included an adaptation (as described above) of the example code where the deadlock also happens (but is catched by the IDLE task and it comes into an assert).

Is there anything we overlooked in working with FreeRTOS and Windows and is there anything we can do to prevent the deadlocks?

I hope to hear from you soon,

Best regards

FreeRTOS simulator on windows deadlock with standard libraries

Posted by rtel on July 28, 2014

I'm afraid Windows programming is a little outside my scope of expertise. From your post it sounds like the windows library is causing the problem, and presumably when you are running the code on your real target the library will be completely different and probably not have the same issue.

Without knowing the full scenario I'm not sure why the thread that has entered a Windows critical section would not also exit the critical section before running any more of your FreeRTOS code though assuming the enter and exit of the windows critical section is within the same Windows library function.

Here would be some suggestions:

  • Use a different library while using the simulator - either by implementing small parts of the library yourself or by building in a library from a third party.

  • See if there are any compiler options that allow the selection of non-multi-threaded libraries that won't include these critical section.

  • Maybe if possible re-implement the critical section called by the library to use a FreeRTOS [simulated] critical section instead so the library links to your version rather than the library's version.



[ Back to the top ]    [ About FreeRTOS ]    [ Sitemap ]    [ ]

Copyright (C) 2004-2010 Richard Barry. Copyright (C) 2010-2016 Real Time Engineers Ltd.
Any and all data, files, source code, html content and documentation included in the FreeRTOSTM distribution or available on this site are the exclusive property of Real Time Engineers Ltd.. See the files license.txt (included in the distribution) and this copyright notice for more information. FreeRTOSTM and FreeRTOS.orgTM are trade marks of Real Time Engineers Ltd.

Latest News:

FreeRTOS V9.0.0 is now available for download.

Free TCP/IP and file system demos for the RTOS

Sponsored Links

⇓ Now With No Code Size Limit! ⇓
⇑ Free Download Without Registering ⇑

FreeRTOS Partners

ARM Connected RTOS partner for all ARM microcontroller cores

Renesas Electronics Gold Alliance RTOS Partner.jpg

Microchip Premier RTOS Partner

RTOS partner of NXP for all NXP ARM microcontrollers

Atmel RTOS partner supporting ARM Cortex-M3 and AVR32 microcontrollers

STMicro RTOS partner supporting ARM7, ARM Cortex-M3, ARM Cortex-M4 and ARM Cortex-M0

Xilinx Microblaze and Zynq partner

Silicon Labs low power RTOS partner

Altera RTOS partner for Nios II and Cortex-A9 SoC

Freescale Alliance RTOS Member supporting ARM and ColdFire microcontrollers

Infineon ARM Cortex-M microcontrollers

Texas Instruments MCU Developer Network RTOS partner for ARM and MSP430 microcontrollers

Cypress RTOS partner supporting ARM Cortex-M3

Fujitsu RTOS partner supporting ARM Cortex-M3 and FM3

Microsemi (previously Actel) RTOS partner supporting ARM Cortex-M3

Atollic Partner

IAR Partner

Keil ARM Partner

Embedded Artists