Comments (5)
I have an uncommitted change on my machine from several months ago that attempts to address this issue. If I recall correctly, I found and fixed this issue because it was leading to a global variable being corrupted as the main task was getting set up. I never got to the bottom of all the issues I was hitting with my program at that time so I never got around to pushing up this fix. Here is my diff where I use the task_body instead of the task_id for this check. Maybe you can change the call order to fix it as well.
diff --git a/libraries/rtos/rtx/HAL_CM.c b/libraries/rtos/rtx/HAL_CM.c
index a5a2a9c..acabd65 100644
--- a/libraries/rtos/rtx/HAL_CM.c
+++ b/libraries/rtos/rtx/HAL_CM.c
@@ -52,6 +52,7 @@ BIT dbg_msg;
/*--------------------------- rt_init_stack ---------------------------------*/
+extern int main (void);
void rt_init_stack (P_TCB p_TCB, FUNCP task_body) {
/* Prepare TCB and saved context for a first time start of a task. */
U32 *stk,i,size;
@@ -88,11 +89,11 @@ void rt_init_stack (P_TCB p_TCB, FUNCP task_body) {
p_TCB->ptask = task_body;
/* Set a magic word for checking of stack overflow.
- For the main thread (ID: 0x01) the stack is in a memory area shared with the
+ For the main thread the stack is in a memory area shared with the
heap, therefore the last word of the stack is a moving target.
We want to do stack/heap collision detection instead.
*/
- if (p_TCB->task_id != 0x01)
+ if (task_body != (FUNCP)main)
p_TCB->stack[0] = MAGIC_WORD;
}
from mbed-os.
Thanks for answer. I just moved
OS_TID tsk = rt_get_TID ();
task_context->task_id = tsk;
in rt_CMSIS.c before rt_init_context(...).
Though it would be good to see a fix for everyone.
from mbed-os.
Hi,
did you fix it locally? I dont see any change in the rt_CMSIS.c file. Is this bug still present? If not, please close this, otherwise could you send a pull request with a fix for this issue?
Regards,
0xc0170
from mbed-os.
I haven’t submitted any fix. I just checked the current version in github and task_id is still used uninitialized.
Both mine and adamgreen’s solution seem to do the trick.
As I am not familiar with mbed coding practices should we change HAL_CM.c or rt_CMSIS.c ?
from mbed-os.
This should be now fixed via #827. Thanks Adam!
from mbed-os.
Related Issues (20)
- STM32WL Deep Sleep STOP1 over consumption HOT 2
- TARGET_STM: masking logic for CAN rx interrupt is wrong HOT 2
- Buffer overflow vulnerablilty in MbedOS BLE Cordio stack HOT 2
- STM32WL USART2@2400 not working with every device HOT 6
- STM32WL System Clock differs at boot/reset and after deepsleep HOT 2
- Mbed CLI 2 USB no such file or directory HOT 2
- mbed-tools deploy is limiting the git fetch specification HOT 2
- STM32_gen_peripheralPins.py chrashing after generating pinmaps HOT 3
- Linking with error: "cannot move location counter backwards" HOT 1
- BLE start routine freezes when the event_queue dispatching inside mbed-os-ble-utils moved to a thread HOT 1
- Include directive issue with BLE API HOT 1
- PD_14 is not labeled as a SPI CS pin for Nucleo-F413ZH HOT 5
- time(NULL) not returning real RTC value after reboot HOT 1
- PC_13 is unlisted HOT 2
- TARGET_STM32F303xC: SetSysClock() missing HOT 2
- Update hidapi used for non-Linux platforms HOT 2
- Flashing Controller from Docker Container HOT 2
- mbed::CircularBuffer interrupt safe but not thread safe? HOT 2
- STM32 I2CSlave race condition causing timeouts
- LoRaWAN no OTAA Uplink on AS923 region STM32WL HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mbed-os.