-
-
Notifications
You must be signed in to change notification settings - Fork 838
Open
Labels
Potential BugA potential, unconfirmed or very special circumstance bugA potential, unconfirmed or very special circumstance bug
Milestone
Description
whenever I step on a empty loop, gdb hangs and Ctrl-c stop working until I reset the board.
Steps to reproduce
- setup the code bellow
#include <stdio.h>
#define SEMIHOSTING
#ifdef SEMIHOSTING
void initialise_monitor_handles(void);
#endif //SEMIHOSTING
volatile int s;
int main(void)
{
#ifdef SEMIHOSTING
initialise_monitor_handles();
#endif // SEMIHOSTING
printf("Hello, World!\n");
while(1) {
}
}- set a breakpoint just before the loop
nextandnext
I have this logs from a rust test, but the effective setup is pretty much the same.
$ ./blackmagic -v 1
Black Magic Debug App (for BMP only) v1.10.2
Using:
_v1.10.2 BlackPill-F401CC 306D35993235
Listening on TCP port: 2000
Got connection
Speed set to 7.000MHz for SWD
Switching out of dormant state into SWD
DP DPIDR 0x1ba01477 (v1 rev0) designer 0x43b partno 0xba
AP 0: IDR=14770011 CFG=00000000 BASE=e00ff003 CSW=a3000040 (AHB3-AP var1 rev1)
Halt via DHCSR(01030003): success after 14ms
ROM: Table BASE=0xe00ff000 SYSMEM=0x00000001, Manufacturer 020 Partno 410
0 0xe000e000: Generic IP component - Cortex-M3 SCS (System Control Space) (PIDR = 0x00000004001bb000 DEVTYPE = 0x00 ARCHID = 0x0000)
-> cortexm_probe
CPUID 0x411fc231 (M3 var 1 rev 1)
1 0xe0001000: 0x00000000 <- does not match preamble (0xb105000d)
2 0xe0002000: Generic IP component - Cortex-M3 FBP (Flash Patch and Breakpoint) (PIDR = 0x00000004000bb003 DEVTYPE = 0x00 ARCHID = 0x0000)
3 0xe0000000: 0x00000000 <- does not match preamble (0xb105000d)
4 0xe0040000: 0x00000000 <- does not match preamble (0xb105000d)
5 Entry 0xfff42002 -> Not present
ROM: Table END
syscall SYS_OPEN (800172c 4 3 800172c)
syscall SYS_WRITE (3 8001670 e 3)
Hello, world!$ arm-none-eabi-gdb -q hello.elf
...
(gdb) n
19 loop {}
(gdb) n
^C^C^C^C^C^C^C^C
cortex_m_rt::Reset () at src/lib.rs:497
497 pub unsafe extern "C" fn Reset() -> ! {
(gdb)
518 __pre_init();
(gdb) Expected behavior
the second next should block and run the loop, but Ctrl-c should be able to interrupt.
Breakpoint 1, main () at dbg-loop.c:4
4 {
(gdb) n
5 printf("Hello, World!\n");
(gdb) n
Hello, World!
6 while(1){
(gdb) n
^C
Program received signal SIGINT, Interrupt.
main () at dbg-loop.c:6
6 while(1){
(gdb) Notes
- This also happening with the probe alone.
- Tested target with
-O0and-Og - Target is well tested and know to be working
Metadata
Metadata
Assignees
Labels
Potential BugA potential, unconfirmed or very special circumstance bugA potential, unconfirmed or very special circumstance bug