Skip to content

Conversation

@hujun260
Copy link
Contributor

Summary

add a return value to riscv_swint indicating whether a context switch is required

This commit fixes the regression from #13561

Impact

Testing

ostest

@github-actions github-actions bot added Arch: risc-v Issues related to the RISC-V (32-bit or 64-bit) architecture Size: S The size of the change in this PR is small labels Sep 21, 2024
@nuttxpr
Copy link

nuttxpr commented Sep 21, 2024

[Experimental Bot, please feedback here]

Yes, the PR appears to meet the NuttX requirements.

Here's a breakdown:

  • Summary: Clearly explains the "why" (fixing a regression), "what" (adding a return value to a specific function), and "how" (referencing the original PR that caused the regression). It also links to the original PR.
  • Impact: While lacking details, it implies minimal impact since it's a fix for a regression. More specifics about the impact (e.g., on compatibility) would strengthen this section.
  • Testing: Provides basic testing information (platform: ostest). Including testing logs before and after the change would significantly improve the thoroughness of this section.

Recommendations for Improvement:

  • Impact: Expand on the potential impact areas. Even if the impact is minimal, explicitly stating this helps reviewers. For example:
    • Compatibility: "This change only affects internal scheduling logic and has no backward or forward compatibility impact."
    • Hardware/Build: "No changes to hardware or build process are required."
  • Testing:
    • Include actual "before" and "after" testing logs to demonstrate the fix.
    • If possible, test on more than one platform or configuration to increase confidence.

Overall: The PR provides a good starting point. Adding the recommended details will ensure a smoother review process and increase the likelihood of a quick merge.

Copy link
Member

@lupyuen lupyuen left a comment

Choose a reason for hiding this comment

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

OSTest seems to hang at vfork() for rv-virt:knsh? https://gist.github.com/lupyuen/8daee1123a52e222fb601287a00af149

$ git clone https://github.com/hujun260/nuttx --branch apache_10 nuttx
$ tools/configure.sh rv-virt:knsh
...
$ qemu-system-riscv32 -semihosting -M virt,aclint=on -cpu rv32 -kernel nuttx -bios opensbi-1.5-rv-bin/share/opensbi/ilp32/generic/firmware/fw_dynamic.bin -nographic
QEMU emulator version 9.0.2
OpenSBI v1.5
...
nsh> ostest
user_main: vfork() test
[Hangs here]

Update: rv-virt:knsh64 also hangs at vfork(): https://gist.github.com/lupyuen/ce2e2cb328073d25743adbd4bc4a9b87

… switch is required

This commit fixes the regression from apache#13561

Signed-off-by: hujun5 <hujun5@xiaomi.com>
@hujun260
Copy link
Contributor Author

OSTest seems to hang at vfork() for rv-virt:knsh? https://gist.github.com/lupyuen/8daee1123a52e222fb601287a00af149

$ git clone https://github.com/hujun260/nuttx --branch apache_10 nuttx
$ tools/configure.sh rv-virt:knsh
...
$ qemu-system-riscv32 -semihosting -M virt,aclint=on -cpu rv32 -kernel nuttx -bios opensbi-1.5-rv-bin/share/opensbi/ilp32/generic/firmware/fw_dynamic.bin -nographic
QEMU emulator version 9.0.2
OpenSBI v1.5
...
nsh> ostest
user_main: vfork() test
[Hangs here]

Update: rv-virt:knsh64 also hangs at vfork(): https://gist.github.com/lupyuen/ce2e2cb328073d25743adbd4bc4a9b87

i fixed this issue

Copy link
Member

@lupyuen lupyuen left a comment

Choose a reason for hiding this comment

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

OSTest is now OK on rv-virt:knsh, rv-virt:knsh64 and milkv_duos:nsh thanks!

@acassis acassis merged commit e4a0470 into apache:master Sep 22, 2024
@lupyuen
Copy link
Member

lupyuen commented Sep 23, 2024

Sorry @hujun260 I think we might have a Race Condition that's intermittently hanging and failing the Signals Test in OSTest. Yesterday Milk-V Duo S SBC (SG2000) tested OK. But today it's hanging:
https://github.com/lupyuen/nuttx-sg2000/releases/tag/nuttx-sg2000-2024-09-23

nsh> ostest
...
user_main: nested signal handler test
signest_test: Starting signal waiter task at priority 101
waiter_main: Waiter started
signest_test: Started waiter_main pid=52
waiter_main: Setting signal mask
signest_test: Starting interfering task at priority 102
waiter_main: Registering signal handler
interfere_main: Waiting on semaphore
waiter_main: Waiting on semaphore
signest_test: Started interfere_main pid=53
[Hangs here]

knsh64 fails the Signal Test with a Segmentation Fault (it was OK yesterday):
https://github.com/lupyuen/nuttx-riscv64/releases/tag/qemu-riscv-knsh64-2024-09-23

$ tools/configure.sh rv-virt:knsh64
...
$ qemu-system-riscv64 -semihosting -M virt,aclint=on -cpu rv64 -kernel nuttx -nographic
QEMU emulator version 9.0.2
OpenSBI v1.4
nsh> ostest
...
user_main: nested signal handler test
signest_test: Starting signal waiter task at priority 101
waiter_main: Waiter started
waiter_main: Setting signal mask
waiter_main: Registering signal handler
waiter_main: Waiting on semaphore
signest_test: Started waiter_main pid=51
signest_test: Starting interfering task at priority 102
interfere_main: Waiting on semaphore
signest_test: Started interfere_main pid=52
signest_test: Simple case:
  Total signalled 1240  Odd=620 Even=620
  Total handled   1240  Odd=620 Even=620
  Total nested    0    Odd=0   Even=0  
[   55.393000] riscv_exception: EXCEPTION: Instruction page fault. MCAUSE: 000000000000000c, EPC: 0000000000000000, MTVAL: 0000000000000000
[   55.393000] riscv_exception: Segmentation fault in PID 10: ostest
ostest_main: Exiting with status 2816

Are you able to reproduce this problem when you re-run knsh64 a few times? Thanks!

@tmedicci
Copy link
Contributor

Hi @hujun260, this PR did not fix the issue introduced by #13561 for esp32c3-generic:knsh:

ESP-ROM:esp32c3-api1-20210207
Build:Feb  7 2021
rst:0x1 (POWERON),boot:0xc (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:2
load:0x3fcd5820,len:0x16c0
load:0x403cc710,len:0x87c
load:0x403ce710,len:0x2f54
entry 0x403cc710
I (31) boot: ESP-IDF v5.1-dev-3972-g1559b6309f 2nd stage bootloader
I (31) boot: compile time Mar 15 2023 12:14:06
I (32) boot: chip revision: v0.3
I (36) boot.esp32c3: SPI Speed      : 40MHz
I (41) boot.esp32c3: SPI Mode       : DIO
I (46) boot.esp32c3: SPI Flash Size : 4MB
I (50) boot: Enabling RNG early entropy source...
I (56) boot: Partition Table:
I (59) boot: ## Label            Usage          Type ST Offset   Length
I (67) boot:  0 factory          factory app      00 00 00010000 00100000
I (74) boot: End of partition table
I (78) esp_image: segment 0: paddr=00010020 vaddr=3c020020 size=0637ch ( 25468) map
I (92) esp_image: segment 1: paddr=000163a4 vaddr=3fc81b8c size=00180h (   384) load
I (95) esp_image: segment 2: paddr=0001652c vaddr=40380000 size=01b8ch (  7052) load
I (105) esp_image: segment 3: paddr=000180c0 vaddr=00000000 size=08038h ( 32824) 
I (119) esp_image: segment 4: paddr=00020100 vaddr=42000100 size=13d78h ( 81272) map
I (138) boot: Loaded app from partition at offset 0x10000
I (138) boot: Disabling RNG early entropy source...
ABCDriscv_exception: EXCEPTION: Instruction access fault. MCAUSE: 00000001, EPC: 00000000, MTVAL: 00000000
riscv_exception: PANIC!!! Exception = 00000001
_assert: Current Version: NuttX  10.4.0 d68fab125e Sep 23 2024 09:29:49 risc-v
_assert: Assertion failed panic: at file: common/riscv_exception.c:132 task: nsh_main process: nsh_main 0x42090918
up_dump_register: EPC: 00b78123
up_dump_register: A0: 80820141 A1: 552987aa A2: c981cb89 A3: 0007d783
up_dump_register: A4: 07c24501 A5: c19c87c1 A6: 80828082 A7: c4221141
up_dump_register: T0: 04330005 T1: f0ef4080 T2: c100a85f T3: 85b2852e
up_dump_register: T4: 92828636 T5: 014140a2 T6: 0073451d
up_dump_register: S0: 40b2547d S1: 44228522 S2: f0efc606 S3: 842afe3f
up_dump_register: S4: 00055863 S5: 40800433 S6: a47ff0ef S7: 547dc100
up_dump_register: S8: 852240b2 S9: 01414422 S10: 11418082 S11: 82aac406
up_dump_register: SP: c606c422 FP: 40b2547d TP: 5863842a RA: 11418082
dump_stacks: ERROR: Stack pointer is not within the stack
dump_stack: IRQ Stack:
dump_stack:   base: 0x3fc825d0
dump_stack:   size: 00002048
stack_dump: 0x3fc82afc: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82b1c: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82b3c: 42003cee 00000000 42003cee 00000000 4200a738 00000000 42003cee 00000000
stack_dump: 0x3fc82b5c: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82b7c: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82b9c: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82bbc: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82bdc: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82bfc: 42003cee 00000000 42003cee 00000000 42003cee 00000000 00000000 00000000
stack_dump: 0x3fc82c1c: 00000000 00b78123 11418082 c606c422 fbdff0ef 5863842a 04330005 f0ef4080
stack_dump: 0x3fc82c3c: c100a85f 40b2547d 44228522 80820141 552987aa c981cb89 0007d783 07c24501
stack_dump: 0x3fc82c5c: c19c87c1 80828082 c4221141 f0efc606 842afe3f 00055863 40800433 a47ff0ef
stack_dump: 0x3fc82c7c: 547dc100 852240b2 01414422 11418082 82aac406 85b2852e 92828636 014140a2
stack_dump: 0x3fc82c9c: 0073451d 00010000 3fc81d64 3fc82cd0 00000000 00000000 00000000 00000000
stack_dump: 0x3fc82cbc: 00000000 00000000 00000000 00000000 00000000 3fc82ca4 3fc82cfc 00000000
stack_dump: 0x3fc82cdc: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
stack_dump: 0x3fc82cfc: 3fc82cd0 3fc82d28 00000000 00000000 00000000 00000000 00000000 00000000
stack_dump: 0x3fc82d1c: 00000000 00000000 00000000 3fc82cfc 3fc82d54 00000000 00000000 00000000
stack_dump: 0x3fc82d3c: 00000000 00000000 00000000 00000000 00000000 00000000 3fc82d28 3fc82d80
stack_dump: 0x3fc82d5c: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
stack_dump: 0x3fc82d7c: 00000000 3fc82d54 3fc82dac 00000000 00000000 00000000 00000000 00000000
stack_dump: 0x3fc82d9c: 00000000 00000000 00000000 00000000 3fc82d80 3fc82dd8 00000000 00000000
stack_dump: 0x3fc82dbc: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
dump_stack: User Stack:
dump_stack:   base: 0x3fc903f0
dump_stack:   size: 00002000
stack_dump: 0x3fc90b1c: 42090000 420063fc 3fc90ba0 deadbeef 00000000 00000000 00000000 00000000
stack_dump: 0x3fc90b3c: 00000000 3fc841c8 42090918 00000001 3fc903d0 3fc903d0 42090918 00000001
stack_dump: 0x3fc90b5c: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
stack_dump: 0x3fc90b7c: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
stack_dump: 0x3fc90b9c: 00000080 00000000 00000000 00000000 420063fc 00000000 00000000 00000000
stack_dump: 0x3fc90bbc: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
dump_tasks:    PID GROUP PRI POLICY   TYPE    NPX STATE   EVENT      SIGMASK          STACKBASE  STACKSIZE      USED   FILLED    COMMAND
dump_tasks:   ----   --- --- -------- ------- --- ------- ---------- ---------------- 0x3fc825d0      2048       756    36.9%    irq
dump_task:       0     0   0 FIFO     Kthread - Ready              0000000000000000 0x3fc83510      2032       532    26.1%    Idle_Task
dump_task:       1     1 100 RR       Task    - Running            0000000000000000 0x3fc903f0      2000       164     8.2%    nsh_main

@hujun260
Copy link
Contributor Author

Sorry @hujun260 I think we might have a Race Condition that's intermittently hanging and failing the Signals Test in OSTest. Yesterday Milk-V Duo S SBC (SG2000) tested OK. But today it's hanging: https://github.com/lupyuen/nuttx-sg2000/releases/tag/nuttx-sg2000-2024-09-23

nsh> ostest
...
user_main: nested signal handler test
signest_test: Starting signal waiter task at priority 101
waiter_main: Waiter started
signest_test: Started waiter_main pid=52
waiter_main: Setting signal mask
signest_test: Starting interfering task at priority 102
waiter_main: Registering signal handler
interfere_main: Waiting on semaphore
waiter_main: Waiting on semaphore
signest_test: Started interfere_main pid=53
[Hangs here]

knsh64 fails the Signal Test with a Segmentation Fault (it was OK yesterday): https://github.com/lupyuen/nuttx-riscv64/releases/tag/qemu-riscv-knsh64-2024-09-23

$ tools/configure.sh rv-virt:knsh64
...
$ qemu-system-riscv64 -semihosting -M virt,aclint=on -cpu rv64 -kernel nuttx -nographic
QEMU emulator version 9.0.2
OpenSBI v1.4
nsh> ostest
...
user_main: nested signal handler test
signest_test: Starting signal waiter task at priority 101
waiter_main: Waiter started
waiter_main: Setting signal mask
waiter_main: Registering signal handler
waiter_main: Waiting on semaphore
signest_test: Started waiter_main pid=51
signest_test: Starting interfering task at priority 102
interfere_main: Waiting on semaphore
signest_test: Started interfere_main pid=52
signest_test: Simple case:
  Total signalled 1240  Odd=620 Even=620
  Total handled   1240  Odd=620 Even=620
  Total nested    0    Odd=0   Even=0  
[   55.393000] riscv_exception: EXCEPTION: Instruction page fault. MCAUSE: 000000000000000c, EPC: 0000000000000000, MTVAL: 0000000000000000
[   55.393000] riscv_exception: Segmentation fault in PID 10: ostest
ostest_main: Exiting with status 2816

Are you able to reproduce this problem when you re-run knsh64 a few times? Thanks!

ok i,ll look into this issue

@hujun260
Copy link
Contributor Author

Sorry @hujun260 I think we might have a Race Condition that's intermittently hanging and failing the Signals Test in OSTest. Yesterday Milk-V Duo S SBC (SG2000) tested OK. But today it's hanging: https://github.com/lupyuen/nuttx-sg2000/releases/tag/nuttx-sg2000-2024-09-23

nsh> ostest
...
user_main: nested signal handler test
signest_test: Starting signal waiter task at priority 101
waiter_main: Waiter started
signest_test: Started waiter_main pid=52
waiter_main: Setting signal mask
signest_test: Starting interfering task at priority 102
waiter_main: Registering signal handler
interfere_main: Waiting on semaphore
waiter_main: Waiting on semaphore
signest_test: Started interfere_main pid=53
[Hangs here]

knsh64 fails the Signal Test with a Segmentation Fault (it was OK yesterday): https://github.com/lupyuen/nuttx-riscv64/releases/tag/qemu-riscv-knsh64-2024-09-23

$ tools/configure.sh rv-virt:knsh64
...
$ qemu-system-riscv64 -semihosting -M virt,aclint=on -cpu rv64 -kernel nuttx -nographic
QEMU emulator version 9.0.2
OpenSBI v1.4
nsh> ostest
...
user_main: nested signal handler test
signest_test: Starting signal waiter task at priority 101
waiter_main: Waiter started
waiter_main: Setting signal mask
waiter_main: Registering signal handler
waiter_main: Waiting on semaphore
signest_test: Started waiter_main pid=51
signest_test: Starting interfering task at priority 102
interfere_main: Waiting on semaphore
signest_test: Started interfere_main pid=52
signest_test: Simple case:
  Total signalled 1240  Odd=620 Even=620
  Total handled   1240  Odd=620 Even=620
  Total nested    0    Odd=0   Even=0  
[   55.393000] riscv_exception: EXCEPTION: Instruction page fault. MCAUSE: 000000000000000c, EPC: 0000000000000000, MTVAL: 0000000000000000
[   55.393000] riscv_exception: Segmentation fault in PID 10: ostest
ostest_main: Exiting with status 2816

Are you able to reproduce this problem when you re-run knsh64 a few times? Thanks!

#13585
this pr fixed this issue

@hujun260
Copy link
Contributor Author

Hi @hujun260, this PR did not fix the issue introduced by #13561 for esp32c3-generic:knsh:

ESP-ROM:esp32c3-api1-20210207
Build:Feb  7 2021
rst:0x1 (POWERON),boot:0xc (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:2
load:0x3fcd5820,len:0x16c0
load:0x403cc710,len:0x87c
load:0x403ce710,len:0x2f54
entry 0x403cc710
I (31) boot: ESP-IDF v5.1-dev-3972-g1559b6309f 2nd stage bootloader
I (31) boot: compile time Mar 15 2023 12:14:06
I (32) boot: chip revision: v0.3
I (36) boot.esp32c3: SPI Speed      : 40MHz
I (41) boot.esp32c3: SPI Mode       : DIO
I (46) boot.esp32c3: SPI Flash Size : 4MB
I (50) boot: Enabling RNG early entropy source...
I (56) boot: Partition Table:
I (59) boot: ## Label            Usage          Type ST Offset   Length
I (67) boot:  0 factory          factory app      00 00 00010000 00100000
I (74) boot: End of partition table
I (78) esp_image: segment 0: paddr=00010020 vaddr=3c020020 size=0637ch ( 25468) map
I (92) esp_image: segment 1: paddr=000163a4 vaddr=3fc81b8c size=00180h (   384) load
I (95) esp_image: segment 2: paddr=0001652c vaddr=40380000 size=01b8ch (  7052) load
I (105) esp_image: segment 3: paddr=000180c0 vaddr=00000000 size=08038h ( 32824) 
I (119) esp_image: segment 4: paddr=00020100 vaddr=42000100 size=13d78h ( 81272) map
I (138) boot: Loaded app from partition at offset 0x10000
I (138) boot: Disabling RNG early entropy source...
ABCDriscv_exception: EXCEPTION: Instruction access fault. MCAUSE: 00000001, EPC: 00000000, MTVAL: 00000000
riscv_exception: PANIC!!! Exception = 00000001
_assert: Current Version: NuttX  10.4.0 d68fab125e Sep 23 2024 09:29:49 risc-v
_assert: Assertion failed panic: at file: common/riscv_exception.c:132 task: nsh_main process: nsh_main 0x42090918
up_dump_register: EPC: 00b78123
up_dump_register: A0: 80820141 A1: 552987aa A2: c981cb89 A3: 0007d783
up_dump_register: A4: 07c24501 A5: c19c87c1 A6: 80828082 A7: c4221141
up_dump_register: T0: 04330005 T1: f0ef4080 T2: c100a85f T3: 85b2852e
up_dump_register: T4: 92828636 T5: 014140a2 T6: 0073451d
up_dump_register: S0: 40b2547d S1: 44228522 S2: f0efc606 S3: 842afe3f
up_dump_register: S4: 00055863 S5: 40800433 S6: a47ff0ef S7: 547dc100
up_dump_register: S8: 852240b2 S9: 01414422 S10: 11418082 S11: 82aac406
up_dump_register: SP: c606c422 FP: 40b2547d TP: 5863842a RA: 11418082
dump_stacks: ERROR: Stack pointer is not within the stack
dump_stack: IRQ Stack:
dump_stack:   base: 0x3fc825d0
dump_stack:   size: 00002048
stack_dump: 0x3fc82afc: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82b1c: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82b3c: 42003cee 00000000 42003cee 00000000 4200a738 00000000 42003cee 00000000
stack_dump: 0x3fc82b5c: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82b7c: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82b9c: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82bbc: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82bdc: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82bfc: 42003cee 00000000 42003cee 00000000 42003cee 00000000 00000000 00000000
stack_dump: 0x3fc82c1c: 00000000 00b78123 11418082 c606c422 fbdff0ef 5863842a 04330005 f0ef4080
stack_dump: 0x3fc82c3c: c100a85f 40b2547d 44228522 80820141 552987aa c981cb89 0007d783 07c24501
stack_dump: 0x3fc82c5c: c19c87c1 80828082 c4221141 f0efc606 842afe3f 00055863 40800433 a47ff0ef
stack_dump: 0x3fc82c7c: 547dc100 852240b2 01414422 11418082 82aac406 85b2852e 92828636 014140a2
stack_dump: 0x3fc82c9c: 0073451d 00010000 3fc81d64 3fc82cd0 00000000 00000000 00000000 00000000
stack_dump: 0x3fc82cbc: 00000000 00000000 00000000 00000000 00000000 3fc82ca4 3fc82cfc 00000000
stack_dump: 0x3fc82cdc: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
stack_dump: 0x3fc82cfc: 3fc82cd0 3fc82d28 00000000 00000000 00000000 00000000 00000000 00000000
stack_dump: 0x3fc82d1c: 00000000 00000000 00000000 3fc82cfc 3fc82d54 00000000 00000000 00000000
stack_dump: 0x3fc82d3c: 00000000 00000000 00000000 00000000 00000000 00000000 3fc82d28 3fc82d80
stack_dump: 0x3fc82d5c: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
stack_dump: 0x3fc82d7c: 00000000 3fc82d54 3fc82dac 00000000 00000000 00000000 00000000 00000000
stack_dump: 0x3fc82d9c: 00000000 00000000 00000000 00000000 3fc82d80 3fc82dd8 00000000 00000000
stack_dump: 0x3fc82dbc: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
dump_stack: User Stack:
dump_stack:   base: 0x3fc903f0
dump_stack:   size: 00002000
stack_dump: 0x3fc90b1c: 42090000 420063fc 3fc90ba0 deadbeef 00000000 00000000 00000000 00000000
stack_dump: 0x3fc90b3c: 00000000 3fc841c8 42090918 00000001 3fc903d0 3fc903d0 42090918 00000001
stack_dump: 0x3fc90b5c: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
stack_dump: 0x3fc90b7c: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
stack_dump: 0x3fc90b9c: 00000080 00000000 00000000 00000000 420063fc 00000000 00000000 00000000
stack_dump: 0x3fc90bbc: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
dump_tasks:    PID GROUP PRI POLICY   TYPE    NPX STATE   EVENT      SIGMASK          STACKBASE  STACKSIZE      USED   FILLED    COMMAND
dump_tasks:   ----   --- --- -------- ------- --- ------- ---------- ---------------- 0x3fc825d0      2048       756    36.9%    irq
dump_task:       0     0   0 FIFO     Kthread - Ready              0000000000000000 0x3fc83510      2032       532    26.1%    Idle_Task
dump_task:       1     1 100 RR       Task    - Running            0000000000000000 0x3fc903f0      2000       164     8.2%    nsh_main

can you reproduce this issue using qemu?

@tmedicci
Copy link
Contributor

Hi @hujun260, this PR did not fix the issue introduced by #13561 for esp32c3-generic:knsh:

ESP-ROM:esp32c3-api1-20210207
Build:Feb  7 2021
rst:0x1 (POWERON),boot:0xc (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:2
load:0x3fcd5820,len:0x16c0
load:0x403cc710,len:0x87c
load:0x403ce710,len:0x2f54
entry 0x403cc710
I (31) boot: ESP-IDF v5.1-dev-3972-g1559b6309f 2nd stage bootloader
I (31) boot: compile time Mar 15 2023 12:14:06
I (32) boot: chip revision: v0.3
I (36) boot.esp32c3: SPI Speed      : 40MHz
I (41) boot.esp32c3: SPI Mode       : DIO
I (46) boot.esp32c3: SPI Flash Size : 4MB
I (50) boot: Enabling RNG early entropy source...
I (56) boot: Partition Table:
I (59) boot: ## Label            Usage          Type ST Offset   Length
I (67) boot:  0 factory          factory app      00 00 00010000 00100000
I (74) boot: End of partition table
I (78) esp_image: segment 0: paddr=00010020 vaddr=3c020020 size=0637ch ( 25468) map
I (92) esp_image: segment 1: paddr=000163a4 vaddr=3fc81b8c size=00180h (   384) load
I (95) esp_image: segment 2: paddr=0001652c vaddr=40380000 size=01b8ch (  7052) load
I (105) esp_image: segment 3: paddr=000180c0 vaddr=00000000 size=08038h ( 32824) 
I (119) esp_image: segment 4: paddr=00020100 vaddr=42000100 size=13d78h ( 81272) map
I (138) boot: Loaded app from partition at offset 0x10000
I (138) boot: Disabling RNG early entropy source...
ABCDriscv_exception: EXCEPTION: Instruction access fault. MCAUSE: 00000001, EPC: 00000000, MTVAL: 00000000
riscv_exception: PANIC!!! Exception = 00000001
_assert: Current Version: NuttX  10.4.0 d68fab125e Sep 23 2024 09:29:49 risc-v
_assert: Assertion failed panic: at file: common/riscv_exception.c:132 task: nsh_main process: nsh_main 0x42090918
up_dump_register: EPC: 00b78123
up_dump_register: A0: 80820141 A1: 552987aa A2: c981cb89 A3: 0007d783
up_dump_register: A4: 07c24501 A5: c19c87c1 A6: 80828082 A7: c4221141
up_dump_register: T0: 04330005 T1: f0ef4080 T2: c100a85f T3: 85b2852e
up_dump_register: T4: 92828636 T5: 014140a2 T6: 0073451d
up_dump_register: S0: 40b2547d S1: 44228522 S2: f0efc606 S3: 842afe3f
up_dump_register: S4: 00055863 S5: 40800433 S6: a47ff0ef S7: 547dc100
up_dump_register: S8: 852240b2 S9: 01414422 S10: 11418082 S11: 82aac406
up_dump_register: SP: c606c422 FP: 40b2547d TP: 5863842a RA: 11418082
dump_stacks: ERROR: Stack pointer is not within the stack
dump_stack: IRQ Stack:
dump_stack:   base: 0x3fc825d0
dump_stack:   size: 00002048
stack_dump: 0x3fc82afc: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82b1c: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82b3c: 42003cee 00000000 42003cee 00000000 4200a738 00000000 42003cee 00000000
stack_dump: 0x3fc82b5c: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82b7c: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82b9c: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82bbc: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82bdc: 42003cee 00000000 42003cee 00000000 42003cee 00000000 42003cee 00000000
stack_dump: 0x3fc82bfc: 42003cee 00000000 42003cee 00000000 42003cee 00000000 00000000 00000000
stack_dump: 0x3fc82c1c: 00000000 00b78123 11418082 c606c422 fbdff0ef 5863842a 04330005 f0ef4080
stack_dump: 0x3fc82c3c: c100a85f 40b2547d 44228522 80820141 552987aa c981cb89 0007d783 07c24501
stack_dump: 0x3fc82c5c: c19c87c1 80828082 c4221141 f0efc606 842afe3f 00055863 40800433 a47ff0ef
stack_dump: 0x3fc82c7c: 547dc100 852240b2 01414422 11418082 82aac406 85b2852e 92828636 014140a2
stack_dump: 0x3fc82c9c: 0073451d 00010000 3fc81d64 3fc82cd0 00000000 00000000 00000000 00000000
stack_dump: 0x3fc82cbc: 00000000 00000000 00000000 00000000 00000000 3fc82ca4 3fc82cfc 00000000
stack_dump: 0x3fc82cdc: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
stack_dump: 0x3fc82cfc: 3fc82cd0 3fc82d28 00000000 00000000 00000000 00000000 00000000 00000000
stack_dump: 0x3fc82d1c: 00000000 00000000 00000000 3fc82cfc 3fc82d54 00000000 00000000 00000000
stack_dump: 0x3fc82d3c: 00000000 00000000 00000000 00000000 00000000 00000000 3fc82d28 3fc82d80
stack_dump: 0x3fc82d5c: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
stack_dump: 0x3fc82d7c: 00000000 3fc82d54 3fc82dac 00000000 00000000 00000000 00000000 00000000
stack_dump: 0x3fc82d9c: 00000000 00000000 00000000 00000000 3fc82d80 3fc82dd8 00000000 00000000
stack_dump: 0x3fc82dbc: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
dump_stack: User Stack:
dump_stack:   base: 0x3fc903f0
dump_stack:   size: 00002000
stack_dump: 0x3fc90b1c: 42090000 420063fc 3fc90ba0 deadbeef 00000000 00000000 00000000 00000000
stack_dump: 0x3fc90b3c: 00000000 3fc841c8 42090918 00000001 3fc903d0 3fc903d0 42090918 00000001
stack_dump: 0x3fc90b5c: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
stack_dump: 0x3fc90b7c: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
stack_dump: 0x3fc90b9c: 00000080 00000000 00000000 00000000 420063fc 00000000 00000000 00000000
stack_dump: 0x3fc90bbc: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
dump_tasks:    PID GROUP PRI POLICY   TYPE    NPX STATE   EVENT      SIGMASK          STACKBASE  STACKSIZE      USED   FILLED    COMMAND
dump_tasks:   ----   --- --- -------- ------- --- ------- ---------- ---------------- 0x3fc825d0      2048       756    36.9%    irq
dump_task:       0     0   0 FIFO     Kthread - Ready              0000000000000000 0x3fc83510      2032       532    26.1%    Idle_Task
dump_task:       1     1 100 RR       Task    - Running            0000000000000000 0x3fc903f0      2000       164     8.2%    nsh_main

can you reproduce this issue using qemu?

It doesn't make sense to try to reproduce this problem on QEMU: it's a different chip. ESP32-C3 has its own IRQs and memory protection unit.

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

Labels

Arch: risc-v Issues related to the RISC-V (32-bit or 64-bit) architecture Size: S The size of the change in this PR is small

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants