RT_thread overflow debug记录 问题:main/tshell stack overflow 对于main thread问题出现在rt_hw_stack_init由rt_thread_create和_thread_init调用。 看一下错误判定: 推测sp越界。看一下main thread创建时的参数列表:RT_MAIN_THREAD_STACK_SIZE2048, RT_MAIN_THREAD_PRIORITY10 这里可以看到分配的addr为thread->s...
/* 定义该宏可开启系统 FinSH 调试工具的使用, 未定义则关闭 */#define RT_USING_FINSH/* 开启系统 FinSH 时: 将该线程名称定义为 tshell */#define FINSH_THREAD_NAME "tshell"/* 开启系统 FinSH 时: 使用历史命令 */#define FINSH_USING_HISTORY/* 开启系统 FinSH 时: 对历史命令行数的定义 */#defi...
原因:深入分析后,会在 shell.c 文件中的 finsh_getchar 函数中看到信号量的使用,如下图所示: 现在原因找到了,那么我们只需要在适当的时候释放信号量即可,那我们在找找看看有么有信号释放的函数,接下来我们会发现在 shell.c 文件中 finsh_rx_ind 函数就是释放信号量的,如图所示: 那么新的问题又来了,怎么调用...
}returnresult; }staticvoidserial_thread_entry(void*parameter){rt_err_tresult;rt_uint8_tc =0;rt_uint8_ti =0, rx_state = SERIAL2_STATE_WAIT_FRAME;rt_device_tserial2 = rt_device_find("uart2");structframe_msgmsg;while(1) {/* 使用信号量触发接收数据 */switch(rx_state) {caseSERIAL2_...
usb: rt_size_t follows UNIX style, changed to rt_ssize_t virtio: qemu-virt64-aarch64 / qemu-virt64-riscv support SDL2 i2c: Add generic software simulation I2C; Add device tree support spi: Fix qspi configuration not taking effect issue sdio: Add rt_mmcsd_fops_flush(block_dev) functio...
在默认情况下,系统配置的各种线程栈大小均较小,若不能正常运行,很有可能是栈不够用,可将栈值调大。例如 main 线程栈大小默认为 256,在实际使用时,main 中可能加入其它代码导致栈不够用的情况;FinSH 组件的线程 tshell,默认栈 512 也比较小,在使用时可以调大。
44 #define RT_MAIN_THREAD_STACK_SIZE 2048 //定义main线程的栈大小 45 46 /* FinSH */ 47 #define RT_USING_FINSH //定义该宏可开启系统FinSH调试工具的使用,未定义则关闭 48 #ifdef RT_USING_FINSH 49 #define FINSH_THREAD_NAME "tshell" //开启系统FinSH时:将该线程名称定义为tshell ...
所以当前线程会一直呈阻塞状态,通过IDE调试器也无法看到新创建的线程,因为这时新线程还没开始执行。 在stackoverflow上,找到了同款问题:2 文中给出的建议就是绝对不要在DllMain中创建线程. 这也是Microsoft官方文档3中给的要求:
#include<stdlib.h>#include<pthread.h>void*child_thread(void*args){// child thread exits immediately.return(void*)666;}intmain(){pthread_t t1;pthread_create(&t1,NULL,child_thread,NULL);while(1);// parent and child never join.// pthread_join(t1, NULL);} ...
Here's some direct links to related resources about VCL Thread Safety, in case you don't want to search... Embarcadero - Using the Main VCL Thread Embarcadero - Delphi Threading by Example Stack Overflow - Delphi: Why VCL is not thread-safe? How can be? Dr. Bob - Is the VCL thread...