-
-
Notifications
You must be signed in to change notification settings - Fork 843
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
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Potential BugA potential, unconfirmed or very special circumstance bugA potential, unconfirmed or very special circumstance bug