Skip to content

os/arch/arm/src/armino: software-extended watchdog timeout period#7279

Open
ziliguo wants to merge 1 commit intoSamsung:masterfrom
bekencorp:wdt_set_timeout
Open

os/arch/arm/src/armino: software-extended watchdog timeout period#7279
ziliguo wants to merge 1 commit intoSamsung:masterfrom
bekencorp:wdt_set_timeout

Conversation

@ziliguo
Copy link
Copy Markdown
Contributor

@ziliguo ziliguo commented Apr 16, 2026

  • Increment nmi_seen on each WDT expiry NMI (only when watchdog is logically STARTed and extension state is valid).
  • If nmi_seen < n: intermediate — bk_wdt_start(next_slice_ms), clear s_nmi_occur (or equivalent) so the “second NMI hard hang” does not trigger on legitimate chained expiries; if int_mode with a user handler, do not call the handler on intermediates; return.
  • If nmi_seen == n``: final — **reset nmi_seen`, then existing reset / PANIC / int_mode handler path.

extern uint32_t sys_hal_nmi_wdt_get_clk_div(void);

#if !defined(CONFIG_ARMINO_WDG_SLICE_MAX_MS) || (CONFIG_ARMINO_WDG_SLICE_MAX_MS < 1)
#define ARMINO_WDG_SLICE_CAP_MS 60000u
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When the config is enabled, the maximum value is 32,767.

config ARMINO_WDG_SLICE_MAX_MS
	int "Max WDT slice (ms) for software-extended timeout"
	default 30000
	range 1 32767

But this shows 60,000 at disabled.
Is this right?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ohh, Thank you Mr Chang. You remind me. I will change the default value of source code as 30000 ms.

Copy link
Copy Markdown
Contributor Author

@ziliguo ziliguo Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have changed the default ARMINO_WDG_SLICE_CAP_MS to 30000 to match Kconfig defaults.

Comment on lines +78 to +92
config ARMINO_WDG_SLICE_MAX_MS
int "Max WDT slice (ms) for software-extended timeout"
default 30000
range 1 32767
---help---
Hardware watchdog is reloaded in slices no longer than this value
(and never longer than the chip-specific hardware limit), so the
logical timeout can exceed one hardware period.

config ARMINO_WDG_MAX_SOFT_TIMEOUT_MS
int "Max logical watchdog timeout (ms)"
default 300000
range 1 86400000
---help---
Upper bound for WDIOC_SETTIMEOUT / settimeout in milliseconds.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry but I don't get what the configs are and how to use them. Could you explain them?

Copy link
Copy Markdown
Contributor Author

@ziliguo ziliguo Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @sunghan-chang

  • ARMINO_WDG_SLICE_MAX_MS

What it is: The longest one hardware reload is allowed to be (in ms), when the driver splits a long logical timeout into multiple slices.

How it’s used: The real slice length is min(this Kconfig value, chip hardware max). Smaller slice → more NMI/reload steps for the same long timeout; larger slice → fewer steps (still capped by hardware).

How to set it: Pick something in 1…32767 that fits your tolerance for how often the watchdog is re-armed. Default 30000 is a reasonable starting point.


  • ARMINO_WDG_MAX_SOFT_TIMEOUT_MS

What it is: The maximum logical timeout userspace may request via WDIOC_SETTIMEOUT / settimeout (ms). Values above this are rejected (EINVAL).

How it’s used: Set it to the longest timeout your product allows (e.g. 5 minutes default, or up to 86400000 if you really need a day).

In one line: Slice max = size of each hardware chunk; soft max = largest user-visible timeout you allow.

Comment on lines +696 to +699
priv->wdg_slice_ms = 0;
priv->wdg_last_slice_ms = 0;
priv->wdg_nmi_total = 0;
priv->wdg_nmi_seen = 0;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You changed malloc to zalloc at line 681. Those initializations look duplicated.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @sunghan-chang
Yes. With kmm_zalloc, those four assignments are redundant, I have removed the lines 696–699 and rely on zalloc. Behavior stays the same as before.

Copy link
Copy Markdown
Member

@pcs1265 pcs1265 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tested this locally

but It fails when the timeout was set to 30001.
actually it's not used normally but it's bug in software so please check this.

==========================
11:58:56:177 ---- Sent utf8 encoded message: "2" ----
11:58:56:365 -> 
11:58:56:365 -> [Watchdog Reset Test Start]
11:58:56:365 -> WARNING: System will reset in 30001 ms!
11:58:56:365 -> Watchdog timeout set to 30001 ms
11:58:56:365 -> Watchdog started - waiting for reset...
12:00:24:747 -> [15] WIFI ALIVE
12:00:39:836 -> 
12:00:39:836 -> print_hardfault_detail: PANIC!!! Hard fault: 40000000
12:00:39:836 -> print_hardfault_detail:   IRQ: 3 regs: 0x702891ec
12:00:39:836 -> print_hardfault_detail:   BASEPRI: 00000040 PRIMASK: 00000001 IPSR: 00000003 CONTROL: 00000001
12:00:39:836 -> print_hardfault_detail:   CFAULTS: 00000000 HFAULTS: 40000000 DFAULTS: 00000000 BFAULTADDR: e000ed38 AFAULTS: 00000000
12:00:39:836 -> print_hardfault_detail:   R0: 00000002 70017450 70011ed0 00000000 70011e10 00000000 7028925c 000000e0
12:00:39:836 -> print_hardfault_detail:   R8: 00000000 00000000 00000000 00000000 121a99ff 70289240 121a3611 18010856
12:00:39:880 -> print_hardfault_detail:   xPSR: 0100020f BASEPRI: 00000040 EXC_RETURN: ffffffb0 (saved)
12:00:39:880 -> 
12:00:39:880 -> ===========================================================
12:00:39:880 -> Assertion details
12:00:39:880 -> ===========================================================
12:00:39:880 -> print_assert_detail: Assertion failed at file:armv8-m/up_hardfault.c line: 215 task: hpwork
12:00:39:880 -> print_assert_detail: Assert location (PC) : 0x18010856
12:00:39:880 -> print_assert_detail: Code asserted in workqueue!
12:00:39:880 -> print_assert_detail: Running work function is 18011a85.
12:00:39:880 -> check_assert_location: Code asserted in normal thread!
12:00:39:925 -> ===========================================================
12:00:39:925 -> Asserted task's stack details
12:00:39:925 -> ===========================================================
12:00:39:925 -> print_stack_dump: ERROR: Stack pointer is not within any of the allocated stack
12:00:39:925 -> print_stack_dump: Wrong Stack pointer 70289240: 121a3611 00000001 00000000 7028924c 00000000 70289254 70289258 7028925c
12:00:39:925 -> print_stack_dump: Nested IRQ stack dump:
12:00:39:925 -> up_stackdump: 70008c40: xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx deadbeef deadbeef deadbeef
12:00:39:969 -> up_stackdump: 70008c60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:39:969 -> up_stackdump: 70008c80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:39:969 -> up_stackdump: 70008ca0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:39:969 -> up_stackdump: 70008cc0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:39:969 -> up_stackdump: 70008ce0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:013 -> up_stackdump: 70008d00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:013 -> up_stackdump: 70008d20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:013 -> up_stackdump: 70008d40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:013 -> up_stackdump: 70008d60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:013 -> up_stackdump: 70008d80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:013 -> up_stackdump: 70008da0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:058 -> up_stackdump: 70008dc0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:058 -> up_stackdump: 70008de0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:058 -> up_stackdump: 70008e00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:058 -> up_stackdump: 70008e20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:058 -> up_stackdump: 70008e40: deadbeef deadbeef deadbeef deadbeef 00000000 00000000 702891ec 00000000
12:00:40:103 -> print_stack_dump: User thread stack dump:
12:00:40:103 -> up_stackdump: 70012da0: xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx deadbeef deadbeef deadbeef deadbeef
12:00:40:103 -> up_stackdump: 70012dc0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:103 -> up_stackdump: 70012de0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:103 -> up_stackdump: 70012e00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:103 -> up_stackdump: 70012e20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:147 -> up_stackdump: 70012e40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:147 -> up_stackdump: 70012e60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:147 -> up_stackdump: 70012e80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:147 -> up_stackdump: 70012ea0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:147 -> up_stackdump: 70012ec0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:191 -> up_stackdump: 70012ee0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:191 -> up_stackdump: 70012f00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:191 -> up_stackdump: 70012f20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:191 -> up_stackdump: 70012f40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:191 -> up_stackdump: 70012f60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:236 -> up_stackdump: 70012f80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:236 -> up_stackdump: 70012fa0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:236 -> up_stackdump: 70012fc0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:236 -> up_stackdump: 70012fe0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:236 -> up_stackdump: 70013000: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:236 -> up_stackdump: 70013020: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:280 -> up_stackdump: 70013040: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:280 -> up_stackdump: 70013060: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:280 -> up_stackdump: 70013080: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:280 -> up_stackdump: 700130a0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:280 -> up_stackdump: 700130c0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:325 -> up_stackdump: 700130e0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:325 -> up_stackdump: 70013100: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:325 -> up_stackdump: 70013120: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:325 -> up_stackdump: 70013140: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:325 -> up_stackdump: 70013160: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:369 -> up_stackdump: 70013180: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:369 -> up_stackdump: 700131a0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:369 -> up_stackdump: 700131c0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:369 -> up_stackdump: 700131e0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:369 -> up_stackdump: 70013200: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:369 -> up_stackdump: 70013220: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:414 -> up_stackdump: 70013240: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:414 -> up_stackdump: 70013260: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:414 -> up_stackdump: 70013280: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:414 -> up_stackdump: 700132a0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:414 -> up_stackdump: 700132c0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:458 -> up_stackdump: 700132e0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:458 -> up_stackdump: 70013300: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:458 -> up_stackdump: 70013320: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:458 -> up_stackdump: 70013340: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:458 -> up_stackdump: 70013360: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:502 -> up_stackdump: 70013380: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:502 -> up_stackdump: 700133a0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:502 -> up_stackdump: 700133c0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:502 -> up_stackdump: 700133e0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:502 -> up_stackdump: 70013400: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:547 -> up_stackdump: 70013420: deadbeef deadbeef deadbeef deadbeef deadbeef 70013464 18010691 70008f80
12:00:40:547 -> up_stackdump: 70013440: 70008e58 0000000b 180108a5 70011e10 00000000 00000000 00000000 00000040
12:00:40:547 -> up_stackdump: 70013460: 1801057f 700134b8 00000040 70011e10 00000000 00000000 00000000 00000040
12:00:40:547 -> up_stackdump: 70013480: 700299c0 700299c0 700134cc 700299c0 0000000b 700134cc 00000000 700134cc
12:00:40:547 -> up_stackdump: 700134a0: 18010691 70008f80 70008e58 0000000b 180108a5 70011e10 00020000 00000000
12:00:40:547 -> up_stackdump: 700134c0: 00000000 00000040 1801057f 70013520 00000040 70011e10 00020000 00000000
12:00:40:591 -> up_stackdump: 700134e0: 00000000 00000040 70013554 00000000 00000000 ffffffb8 00000000 70012db0
12:00:40:591 -> up_stackdump: 70013500: 00000002 70011ed0 70029a80 00000000 121e5475 121e468b 18010856 01000000
12:00:40:591 -> up_stackdump: 70013520: 70013554 00000000 00000000 00000000 00000000 70008f9c 000000e0 00000000
12:00:40:591 -> up_stackdump: 70013540: 00000000 00000000 0004cc60 121b17e3 70008f9c 00020000 70029a80 70008f9c
12:00:40:591 -> up_stackdump: 70013560: 121b14f1 00000000 00000000 00000000 00000000 00000000 00000000 121b14fd
12:00:40:635 -> up_stackdump: 70013580: 00000002 1219e559 00000000 00000000 00000000 00000000 deadbeef 700135a4
12:00:40:635 -> ===========================================================
12:00:40:635 -> Asserted task's TCB info 
12:00:40:635 -> ===========================================================
12:00:40:635 -> task_show_tcbinfo: State       : 4
12:00:40:635 -> task_show_tcbinfo: Flags       : 34
12:00:40:635 -> task_show_tcbinfo: Lock count  : 0
12:00:40:635 -> task_show_tcbinfo: Timeslice   : 10
12:00:40:635 -> task_show_tcbinfo: Waitdog     : 0
12:00:40:635 -> task_show_tcbinfo: WaitSem     : 0
12:00:40:680 -> task_show_tcbinfo: MsgwaitQ    : 0
12:00:40:680 -> task_show_tcbinfo: Sigdeliver  : 0x121a366f
12:00:40:680 -> task_show_tcbinfo: Nsyscalls   : 0
12:00:40:680 -> ===========================================================
12:00:40:680 -> Asserted task's register dump
12:00:40:680 -> ===========================================================
12:00:40:680 -> up_registerdump: R0: 00000002 70017450 70011ed0 00000000 70011e10 00000000 7028925c 000000e0
12:00:40:680 -> up_registerdump: R8: 00000000 00000000 00000000 00000000 121a99ff 70289240 121a3611 18010856
12:00:40:680 -> up_registerdump: xPSR: 0100020f BASEPRI: 00000040 CONTROL: 00000000
12:00:40:724 -> up_registerdump: EXC_RETURN: ffffffb0
12:00:40:724 -> ===========================================================
12:00:40:724 -> List of all tasks in the system
12:00:40:724 -> ===========================================================
12:00:40:724 ->                            NAME |   PID |  PRI |    USED / TOTAL STACK | STACK ALLOC ADDR | TCB ADDR | TASK STATE 
12:00:40:724 -> -------------------------------------------------------------------------------------------------------------------
12:00:40:724 ->                       Idle Task |     0 |    0 |    8184 /    8192 |       0x38062000 | 0x700031f0 |          2 
12:00:40:769 ->                          hpwork |     1 |  201 |     356 /    2028 |       0x70012db0 | 0x70011e10 |          4 
12:00:40:769 ->                          lpwork |     2 |   50 |     272 /    4076 |       0x70014560 | 0x700135c0 |          8 
12:00:40:769 ->                             cli |     4 |  183 |     608 /    3036 |       0x70019670 | 0x700186d0 |          6 
12:00:40:769 ->                      bk_irq_log |     5 |  182 |     960 /    2004 |       0x7001ba50 | 0x7001aab0 |          6 
12:00:40:769 ->                       bk_sensor |     7 |  185 |     520 /    1492 |       0x7002a960 | 0x700299c0 |          9 
12:00:40:813 ->                          pm_thd |     8 |  186 |     392 /     980 |       0x7002c000 | 0x7002b060 |          9 
12:00:40:813 ->                     LWIP_TCP/IP |     9 |  107 |     376 /    4068 |       0x7002d430 | 0x7002c490 |          6 
12:00:40:813 ->            netmgr_event_handler |    10 |  100 |     232 /    2012 |       0x7002f3e0 | 0x7002e440 |          6 
12:00:40:813 ->                        log_dump |    11 |  200 |     432 /   10212 |       0x70030c90 | 0x7002fcf0 |          9 
12:00:40:858 ->                  binary_manager |    12 |  203 |     952 /    8164 |       0x70034440 | 0x700334a0 |          9 
12:00:40:858 ->                            app1 |    15 |  180 |     732 /    8164 |       0x70281300 | 0x70015990 |          8 
12:00:40:858 ->                           uwork |    16 |  100 |     288 /    2028 |       0x70285840 | 0x70016220 |          8 
12:00:40:858 ->                            tash |    17 |  125 |     840 /    4076 |       0x70286760 | 0x70016ab0 |          6 
12:00:40:902 ->                           hello |    18 |  100 |    1160 /    4060 |       0x702883c0 | 0x70017390 |          2 
12:00:40:902 -> -------------------------------------------------------------------------------------------------------------------
12:00:40:902 -> ===========================================================
12:00:40:902 -> List of MPU regions and permissions
12:00:40:902 -> ===========================================================
12:00:40:902 -> mpu_show_regioninfo: ********************************************************************************************
12:00:40:902 -> mpu_show_regioninfo: REGION_NO.         BASE_ADDRESS    SIZE            STATUS          ACCESS (P/U)    EXECUTE     
12:00:40:946 -> mpu_show_regioninfo: ********************************************************************************************
12:00:40:946 -> mpu_show_regioninfo: 0                  0x12000000      0x26D000        ENABLED         RO/RO           X           
12:00:40:946 -> mpu_show_regioninfo: 1                  0x18000000      0xA0000         ENABLED         RO/RO           X           
12:00:40:946 -> mpu_show_regioninfo: 2                  0x38000000      0x80000         ENABLED         RW/RW           X           
12:00:40:946 -> mpu_show_regioninfo: 3                  0x50000000      0x20000000      ENABLED         RW/RW           XN          
12:00:40:991 -> mpu_show_regioninfo: 4                  0x70000000      0x94A0          ENABLED         RW/RW           X           
12:00:40:991 -> mpu_show_regioninfo: 5                  0x0             0x20            DISABLED        RW/NO           X           
12:00:40:991 -> mpu_show_regioninfo: 6                  0x700094A0      0x276B60        ENABLED         RW/RW           XN          
12:00:40:991 -> mpu_show_regioninfo: 7                  0x0             0x20            DISABLED        RW/NO           X           
12:00:40:991 -> mpu_show_regioninfo: 8                  0x0             0x20            DISABLED        RW/NO           X           
12:00:41:035 -> mpu_show_regioninfo: 9                  0x1226D000      0x352000        ENABLED         RO/RO           X           
12:00:41:035 -> mpu_show_regioninfo: 10                 0x70780000      0x70000         ENABLED         RW/RW           XN          
12:00:41:035 -> mpu_show_regioninfo: 11                 0x125BF000      0x100000        ENABLED         RO/RO           X           
12:00:41:035 -> mpu_show_regioninfo: 12                 0x70280000      0x500000        ENABLED         RW/RW           XN          
12:00:41:035 -> mpu_show_regioninfo: 13                 0x0             0x20            DISABLED        RW/NO           X           
12:00:41:079 -> mpu_show_regioninfo: 14                 0x0             0x20            DISABLED        RW/NO           X           
12:00:41:079 -> mpu_show_regioninfo: 15                 0x0             0x20            DISABLED        RW/NO           X           
12:00:41:079 -> mpu_show_regioninfo: ********************************************************************************************
12:00:41:079 -> ===========================================================
12:00:41:079 -> Loading location information
12:00:41:079 -> ===========================================================
12:00:41:095 -> elf_show_all_bin_section_addr: [common] Text Addr : 0x1226d010, Text Size : 3481600
12:00:41:095 -> elf_show_all_bin_section_addr: [app1] Text Addr : 0x125bf030, Text Size : 1048576
12:00:41:095 -> ===========================================================
12:00:41:095 -> Checking kernel heap for corruption
12:00:41:095 -> ===========================================================
12:00:41:095 -> mm_check_heap_corruption: Heap start = 0x700094a0 end = 0x7027fff0
12:00:41:095 -> mm_check_heap_corruption: No heap corruption detected
12:00:41:095 -> ##########################################################################################################################################

@ziliguo
Copy link
Copy Markdown
Contributor Author

ziliguo commented Apr 17, 2026

I tested this locally

but It fails when the timeout was set to 30001. actually it's not used normally but it's bug in software so please check this.

==========================
11:58:56:177 ---- Sent utf8 encoded message: "2" ----
11:58:56:365 -> 
11:58:56:365 -> [Watchdog Reset Test Start]
11:58:56:365 -> WARNING: System will reset in 30001 ms!
11:58:56:365 -> Watchdog timeout set to 30001 ms
11:58:56:365 -> Watchdog started - waiting for reset...
12:00:24:747 -> [15] WIFI ALIVE
12:00:39:836 -> 
12:00:39:836 -> print_hardfault_detail: PANIC!!! Hard fault: 40000000
12:00:39:836 -> print_hardfault_detail:   IRQ: 3 regs: 0x702891ec
12:00:39:836 -> print_hardfault_detail:   BASEPRI: 00000040 PRIMASK: 00000001 IPSR: 00000003 CONTROL: 00000001
12:00:39:836 -> print_hardfault_detail:   CFAULTS: 00000000 HFAULTS: 40000000 DFAULTS: 00000000 BFAULTADDR: e000ed38 AFAULTS: 00000000
12:00:39:836 -> print_hardfault_detail:   R0: 00000002 70017450 70011ed0 00000000 70011e10 00000000 7028925c 000000e0
12:00:39:836 -> print_hardfault_detail:   R8: 00000000 00000000 00000000 00000000 121a99ff 70289240 121a3611 18010856
12:00:39:880 -> print_hardfault_detail:   xPSR: 0100020f BASEPRI: 00000040 EXC_RETURN: ffffffb0 (saved)
12:00:39:880 -> 
12:00:39:880 -> ===========================================================
12:00:39:880 -> Assertion details
12:00:39:880 -> ===========================================================
12:00:39:880 -> print_assert_detail: Assertion failed at file:armv8-m/up_hardfault.c line: 215 task: hpwork
12:00:39:880 -> print_assert_detail: Assert location (PC) : 0x18010856
12:00:39:880 -> print_assert_detail: Code asserted in workqueue!
12:00:39:880 -> print_assert_detail: Running work function is 18011a85.
12:00:39:880 -> check_assert_location: Code asserted in normal thread!
12:00:39:925 -> ===========================================================
12:00:39:925 -> Asserted task's stack details
12:00:39:925 -> ===========================================================
12:00:39:925 -> print_stack_dump: ERROR: Stack pointer is not within any of the allocated stack
12:00:39:925 -> print_stack_dump: Wrong Stack pointer 70289240: 121a3611 00000001 00000000 7028924c 00000000 70289254 70289258 7028925c
12:00:39:925 -> print_stack_dump: Nested IRQ stack dump:
12:00:39:925 -> up_stackdump: 70008c40: xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx deadbeef deadbeef deadbeef
12:00:39:969 -> up_stackdump: 70008c60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:39:969 -> up_stackdump: 70008c80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:39:969 -> up_stackdump: 70008ca0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:39:969 -> up_stackdump: 70008cc0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:39:969 -> up_stackdump: 70008ce0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:013 -> up_stackdump: 70008d00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:013 -> up_stackdump: 70008d20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:013 -> up_stackdump: 70008d40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:013 -> up_stackdump: 70008d60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:013 -> up_stackdump: 70008d80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:013 -> up_stackdump: 70008da0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:058 -> up_stackdump: 70008dc0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:058 -> up_stackdump: 70008de0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:058 -> up_stackdump: 70008e00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:058 -> up_stackdump: 70008e20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:058 -> up_stackdump: 70008e40: deadbeef deadbeef deadbeef deadbeef 00000000 00000000 702891ec 00000000
12:00:40:103 -> print_stack_dump: User thread stack dump:
12:00:40:103 -> up_stackdump: 70012da0: xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx deadbeef deadbeef deadbeef deadbeef
12:00:40:103 -> up_stackdump: 70012dc0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:103 -> up_stackdump: 70012de0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:103 -> up_stackdump: 70012e00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:103 -> up_stackdump: 70012e20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:147 -> up_stackdump: 70012e40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:147 -> up_stackdump: 70012e60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:147 -> up_stackdump: 70012e80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:147 -> up_stackdump: 70012ea0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:147 -> up_stackdump: 70012ec0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:191 -> up_stackdump: 70012ee0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:191 -> up_stackdump: 70012f00: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:191 -> up_stackdump: 70012f20: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:191 -> up_stackdump: 70012f40: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:191 -> up_stackdump: 70012f60: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:236 -> up_stackdump: 70012f80: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:236 -> up_stackdump: 70012fa0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:236 -> up_stackdump: 70012fc0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:236 -> up_stackdump: 70012fe0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:236 -> up_stackdump: 70013000: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:236 -> up_stackdump: 70013020: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:280 -> up_stackdump: 70013040: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:280 -> up_stackdump: 70013060: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:280 -> up_stackdump: 70013080: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:280 -> up_stackdump: 700130a0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:280 -> up_stackdump: 700130c0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:325 -> up_stackdump: 700130e0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:325 -> up_stackdump: 70013100: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:325 -> up_stackdump: 70013120: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:325 -> up_stackdump: 70013140: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:325 -> up_stackdump: 70013160: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:369 -> up_stackdump: 70013180: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:369 -> up_stackdump: 700131a0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:369 -> up_stackdump: 700131c0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:369 -> up_stackdump: 700131e0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:369 -> up_stackdump: 70013200: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:369 -> up_stackdump: 70013220: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:414 -> up_stackdump: 70013240: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:414 -> up_stackdump: 70013260: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:414 -> up_stackdump: 70013280: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:414 -> up_stackdump: 700132a0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:414 -> up_stackdump: 700132c0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:458 -> up_stackdump: 700132e0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:458 -> up_stackdump: 70013300: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:458 -> up_stackdump: 70013320: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:458 -> up_stackdump: 70013340: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:458 -> up_stackdump: 70013360: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:502 -> up_stackdump: 70013380: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:502 -> up_stackdump: 700133a0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:502 -> up_stackdump: 700133c0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:502 -> up_stackdump: 700133e0: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:502 -> up_stackdump: 70013400: deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef deadbeef
12:00:40:547 -> up_stackdump: 70013420: deadbeef deadbeef deadbeef deadbeef deadbeef 70013464 18010691 70008f80
12:00:40:547 -> up_stackdump: 70013440: 70008e58 0000000b 180108a5 70011e10 00000000 00000000 00000000 00000040
12:00:40:547 -> up_stackdump: 70013460: 1801057f 700134b8 00000040 70011e10 00000000 00000000 00000000 00000040
12:00:40:547 -> up_stackdump: 70013480: 700299c0 700299c0 700134cc 700299c0 0000000b 700134cc 00000000 700134cc
12:00:40:547 -> up_stackdump: 700134a0: 18010691 70008f80 70008e58 0000000b 180108a5 70011e10 00020000 00000000
12:00:40:547 -> up_stackdump: 700134c0: 00000000 00000040 1801057f 70013520 00000040 70011e10 00020000 00000000
12:00:40:591 -> up_stackdump: 700134e0: 00000000 00000040 70013554 00000000 00000000 ffffffb8 00000000 70012db0
12:00:40:591 -> up_stackdump: 70013500: 00000002 70011ed0 70029a80 00000000 121e5475 121e468b 18010856 01000000
12:00:40:591 -> up_stackdump: 70013520: 70013554 00000000 00000000 00000000 00000000 70008f9c 000000e0 00000000
12:00:40:591 -> up_stackdump: 70013540: 00000000 00000000 0004cc60 121b17e3 70008f9c 00020000 70029a80 70008f9c
12:00:40:591 -> up_stackdump: 70013560: 121b14f1 00000000 00000000 00000000 00000000 00000000 00000000 121b14fd
12:00:40:635 -> up_stackdump: 70013580: 00000002 1219e559 00000000 00000000 00000000 00000000 deadbeef 700135a4
12:00:40:635 -> ===========================================================
12:00:40:635 -> Asserted task's TCB info 
12:00:40:635 -> ===========================================================
12:00:40:635 -> task_show_tcbinfo: State       : 4
12:00:40:635 -> task_show_tcbinfo: Flags       : 34
12:00:40:635 -> task_show_tcbinfo: Lock count  : 0
12:00:40:635 -> task_show_tcbinfo: Timeslice   : 10
12:00:40:635 -> task_show_tcbinfo: Waitdog     : 0
12:00:40:635 -> task_show_tcbinfo: WaitSem     : 0
12:00:40:680 -> task_show_tcbinfo: MsgwaitQ    : 0
12:00:40:680 -> task_show_tcbinfo: Sigdeliver  : 0x121a366f
12:00:40:680 -> task_show_tcbinfo: Nsyscalls   : 0
12:00:40:680 -> ===========================================================
12:00:40:680 -> Asserted task's register dump
12:00:40:680 -> ===========================================================
12:00:40:680 -> up_registerdump: R0: 00000002 70017450 70011ed0 00000000 70011e10 00000000 7028925c 000000e0
12:00:40:680 -> up_registerdump: R8: 00000000 00000000 00000000 00000000 121a99ff 70289240 121a3611 18010856
12:00:40:680 -> up_registerdump: xPSR: 0100020f BASEPRI: 00000040 CONTROL: 00000000
12:00:40:724 -> up_registerdump: EXC_RETURN: ffffffb0
12:00:40:724 -> ===========================================================
12:00:40:724 -> List of all tasks in the system
12:00:40:724 -> ===========================================================
12:00:40:724 ->                            NAME |   PID |  PRI |    USED / TOTAL STACK | STACK ALLOC ADDR | TCB ADDR | TASK STATE 
12:00:40:724 -> -------------------------------------------------------------------------------------------------------------------
12:00:40:724 ->                       Idle Task |     0 |    0 |    8184 /    8192 |       0x38062000 | 0x700031f0 |          2 
12:00:40:769 ->                          hpwork |     1 |  201 |     356 /    2028 |       0x70012db0 | 0x70011e10 |          4 
12:00:40:769 ->                          lpwork |     2 |   50 |     272 /    4076 |       0x70014560 | 0x700135c0 |          8 
12:00:40:769 ->                             cli |     4 |  183 |     608 /    3036 |       0x70019670 | 0x700186d0 |          6 
12:00:40:769 ->                      bk_irq_log |     5 |  182 |     960 /    2004 |       0x7001ba50 | 0x7001aab0 |          6 
12:00:40:769 ->                       bk_sensor |     7 |  185 |     520 /    1492 |       0x7002a960 | 0x700299c0 |          9 
12:00:40:813 ->                          pm_thd |     8 |  186 |     392 /     980 |       0x7002c000 | 0x7002b060 |          9 
12:00:40:813 ->                     LWIP_TCP/IP |     9 |  107 |     376 /    4068 |       0x7002d430 | 0x7002c490 |          6 
12:00:40:813 ->            netmgr_event_handler |    10 |  100 |     232 /    2012 |       0x7002f3e0 | 0x7002e440 |          6 
12:00:40:813 ->                        log_dump |    11 |  200 |     432 /   10212 |       0x70030c90 | 0x7002fcf0 |          9 
12:00:40:858 ->                  binary_manager |    12 |  203 |     952 /    8164 |       0x70034440 | 0x700334a0 |          9 
12:00:40:858 ->                            app1 |    15 |  180 |     732 /    8164 |       0x70281300 | 0x70015990 |          8 
12:00:40:858 ->                           uwork |    16 |  100 |     288 /    2028 |       0x70285840 | 0x70016220 |          8 
12:00:40:858 ->                            tash |    17 |  125 |     840 /    4076 |       0x70286760 | 0x70016ab0 |          6 
12:00:40:902 ->                           hello |    18 |  100 |    1160 /    4060 |       0x702883c0 | 0x70017390 |          2 
12:00:40:902 -> -------------------------------------------------------------------------------------------------------------------
12:00:40:902 -> ===========================================================
12:00:40:902 -> List of MPU regions and permissions
12:00:40:902 -> ===========================================================
12:00:40:902 -> mpu_show_regioninfo: ********************************************************************************************
12:00:40:902 -> mpu_show_regioninfo: REGION_NO.         BASE_ADDRESS    SIZE            STATUS          ACCESS (P/U)    EXECUTE     
12:00:40:946 -> mpu_show_regioninfo: ********************************************************************************************
12:00:40:946 -> mpu_show_regioninfo: 0                  0x12000000      0x26D000        ENABLED         RO/RO           X           
12:00:40:946 -> mpu_show_regioninfo: 1                  0x18000000      0xA0000         ENABLED         RO/RO           X           
12:00:40:946 -> mpu_show_regioninfo: 2                  0x38000000      0x80000         ENABLED         RW/RW           X           
12:00:40:946 -> mpu_show_regioninfo: 3                  0x50000000      0x20000000      ENABLED         RW/RW           XN          
12:00:40:991 -> mpu_show_regioninfo: 4                  0x70000000      0x94A0          ENABLED         RW/RW           X           
12:00:40:991 -> mpu_show_regioninfo: 5                  0x0             0x20            DISABLED        RW/NO           X           
12:00:40:991 -> mpu_show_regioninfo: 6                  0x700094A0      0x276B60        ENABLED         RW/RW           XN          
12:00:40:991 -> mpu_show_regioninfo: 7                  0x0             0x20            DISABLED        RW/NO           X           
12:00:40:991 -> mpu_show_regioninfo: 8                  0x0             0x20            DISABLED        RW/NO           X           
12:00:41:035 -> mpu_show_regioninfo: 9                  0x1226D000      0x352000        ENABLED         RO/RO           X           
12:00:41:035 -> mpu_show_regioninfo: 10                 0x70780000      0x70000         ENABLED         RW/RW           XN          
12:00:41:035 -> mpu_show_regioninfo: 11                 0x125BF000      0x100000        ENABLED         RO/RO           X           
12:00:41:035 -> mpu_show_regioninfo: 12                 0x70280000      0x500000        ENABLED         RW/RW           XN          
12:00:41:035 -> mpu_show_regioninfo: 13                 0x0             0x20            DISABLED        RW/NO           X           
12:00:41:079 -> mpu_show_regioninfo: 14                 0x0             0x20            DISABLED        RW/NO           X           
12:00:41:079 -> mpu_show_regioninfo: 15                 0x0             0x20            DISABLED        RW/NO           X           
12:00:41:079 -> mpu_show_regioninfo: ********************************************************************************************
12:00:41:079 -> ===========================================================
12:00:41:079 -> Loading location information
12:00:41:079 -> ===========================================================
12:00:41:095 -> elf_show_all_bin_section_addr: [common] Text Addr : 0x1226d010, Text Size : 3481600
12:00:41:095 -> elf_show_all_bin_section_addr: [app1] Text Addr : 0x125bf030, Text Size : 1048576
12:00:41:095 -> ===========================================================
12:00:41:095 -> Checking kernel heap for corruption
12:00:41:095 -> ===========================================================
12:00:41:095 -> mm_check_heap_corruption: Heap start = 0x700094a0 end = 0x7027fff0
12:00:41:095 -> mm_check_heap_corruption: No heap corruption detected
12:00:41:095 -> ##########################################################################################################################################

Hello @pcs1265 ,
Thank you for find this issue. I have update the PR with fix.
Please help check if it works if you have time.

@seokhun-eom24
Copy link
Copy Markdown
Contributor

seokhun-eom24 commented Apr 20, 2026

This is pseudo code I used to test the watchodg function.
However, there appears to be a problem with the timeleft calculation.
Could you check about this?

ioctl(fd, WDIOC_SETTIMEOUT, 10000);
ioctl(fd, WDIOC_START, 0);
usleep(1000 * 1000);
ioctl(fd, WDIOC_GETSTATUS, before_status)
ioctl(fd, WDIOC_PAUSE, 0);
usleep(1000 * 1000);
ioctl(fd, WDIOC_RESUME, 0);
usleep(200 * 1000);
ioctl(fd, WDIOC_GETSTATUS, after_status)
[before] flags=0x3 timeout=10000 timeleft=9000
[after] flags=0x3 timeout=10000 timeleft=1168241904

…gle hardware window

- Increment nmi_seen on each WDT expiry NMI (only when watchdog is logically STARTed and extension state is valid).
- If nmi_seen < n: intermediate — bk_wdt_start(next_slice_ms), clear s_nmi_occur (or equivalent) so the “second NMI hard hang” does not trigger on legitimate chained expiries; if int_mode with a user handler, do not call the handler on intermediates; return.
- If nmi_seen == n``: **final** — **reset nmi_seen`, then existing reset / PANIC / int_mode handler path.
@ziliguo
Copy link
Copy Markdown
Contributor Author

ziliguo commented Apr 20, 2026

This is pseudo code I used to test the watchodg function. However, there appears to be a problem with the timeleft calculation. Could you check about this?

ioctl(fd, WDIOC_SETTIMEOUT, 10000);
ioctl(fd, WDIOC_START, 0);
usleep(1000 * 1000);
ioctl(fd, WDIOC_GETSTATUS, before_status)
ioctl(fd, WDIOC_PAUSE, 0);
usleep(1000 * 1000);
ioctl(fd, WDIOC_RESUME, 0);
usleep(200 * 1000);
ioctl(fd, WDIOC_GETSTATUS, after_status)
[before] flags=0x3 timeout=10000 timeleft=9000
[after] flags=0x3 timeout=10000 timeleft=1168241904

Hello @seokhun-eom24 ,

Thanks for finding this WDIOC_PAUSE/WDIOC_RESUME issue, I have updated the PR, and checked passed locally.
Could you please help check if you have time? Thanks so much.

[19:16:46.773]收←◆wdt_slice pause_resume: logical_timeout=10000ms
[before] flags=0x3 timeout=10000ms timeleft=9000ms
[after] flags=0x3 timeout=10000ms timeleft=8800ms
wdt_slice: PASS pause_resume timeleft sanity
TASH>>\0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants