Description / Steps to reproduce the issue
This issue has occurred based on the modified config (rv-virt:pnsh) with enabling SMP and protected mode for RISC-V qemu-rv for my purpose, and to reach this, I have created the following patch:
diff --git a/arch/risc-v/src/qemu-rv/qemu_rv_start.c b/arch/risc-v/src/qemu-rv/qemu_rv_start.c
index 0128ba1d1b..b9bc90da89 100644
--- a/arch/risc-v/src/qemu-rv/qemu_rv_start.c
+++ b/arch/risc-v/src/qemu-rv/qemu_rv_start.c
@@ -225,6 +225,7 @@ void qemu_rv_start(int mhartid, const char *dtb)
cpux:
#ifdef CONFIG_SMP
+ configure_mpu();
riscv_cpu_boot(mhartid);
#endif
diff --git a/arch/risc-v/src/qemu-rv/qemu_rv_userspace.c b/arch/risc-v/src/qemu-rv/qemu_rv_userspace.c
index ecd09fcbf2..4262218557 100644
--- a/arch/risc-v/src/qemu-rv/qemu_rv_userspace.c
+++ b/arch/risc-v/src/qemu-rv/qemu_rv_userspace.c
@@ -63,7 +63,7 @@
*
****************************************************************************/
-static void configure_mpu(void)
+void configure_mpu(void)
{
int ret;
ret = riscv_append_pmp_region(UFLASH_F, UFLASH_START, UFLASH_SIZE);
diff --git a/arch/risc-v/src/qemu-rv/qemu_rv_userspace.h b/arch/risc-v/src/qemu-rv/qemu_rv_userspace.h
index 4d41613373..9566d6d62c 100644
--- a/arch/risc-v/src/qemu-rv/qemu_rv_userspace.h
+++ b/arch/risc-v/src/qemu-rv/qemu_rv_userspace.h
@@ -45,6 +45,7 @@
****************************************************************************/
#ifdef CONFIG_BUILD_PROTECTED
+void configure_mpu(void);
void qemu_rv_userspace(void);
#endif
diff --git a/boards/risc-v/qemu-rv/rv-virt/configs/pnsh/defconfig b/boards/risc-v/qemu-rv/rv-virt/configs/pnsh/defconfig
index 88281a037a..9c2e5b4c0e 100644
--- a/boards/risc-v/qemu-rv/rv-virt/configs/pnsh/defconfig
+++ b/boards/risc-v/qemu-rv/rv-virt/configs/pnsh/defconfig
@@ -70,4 +70,16 @@ CONFIG_SYMTAB_ORDEREDBYNAME=y
CONFIG_SYSTEM_NSH=y
CONFIG_TESTING_GETPRIME=y
CONFIG_TESTING_OSTEST=y
+CONFIG_TESTING_SMP=y
CONFIG_USEC_PER_TICK=1000
+CONFIG_SMP=y
+CONFIG_SMP_NCPUS=2
+CONFIG_DEBUG_SCHED_ERROR=y
+CONFIG_DEBUG_SCHED_WARN=y
+CONFIG_DEBUG_SCHED_INFO=y
+CONFIG_DEBUG_IRQ=y
+CONFIG_DEBUG_FEATURES=y
+CONFIG_DEBUG_FULLOPT=y
+CONFIG_DEBUG_SYMBOLS=y
+CONFIG_DEBUG_SCHED=y
+CONFIG_TESTING_OSTEST_LOOPS=10
After that, the build steps are
./tools/configure.sh -l rv-virt:pnsh
make
Then run the Nuttx:
qemu-system-riscv32 -semihosting -M virt,aclint=on -cpu rv32 -smp 2 -bios none -kernel nuttx -nographic -device loader,file=nuttx_user
I've successfully got the prompt for NuttShell, but when ostest is executed, somehow the test always fails at this point:
...
[CPU1] nxsig_deliver: Deliver signal 61 to PID 54
[CPU0] wait_finish: signest_test wait too long
[CPU0] dump_assert_info: Current Version: NuttX 12.10.0 b78b870d68-dirty Jul 25 2025 00:03:43 risc-v
[CPU0] dump_assert_info: Assertion failed : at file: signest.c:256 task(CPU0): ostest process: ostest 0x8004a914
[CPU0] up_dump_register: EPC: 800020b4
[CPU0] up_dump_register: A0: 80101760 A1: 00000100 A2: 00002080 A3: 801048e0
[CPU0] up_dump_register: A4: 00000002 A5: 00000000 A6: 00000100 A7: 80008906
[CPU0] up_dump_register: T0: 0000002e T1: 00000004 T2: 000001ff T3: 00002088
[CPU0] up_dump_register: T4: 00000000 T5: 00000009 T6: 0000002a
[CPU0] up_dump_register: S0: 0000018c S1: 00000000 S2: 80101760 S3: 801048e0
[CPU0] up_dump_register: S4: 00000000 S5: 80058a6c S6: 80102000 S7: 00002088
[CPU0] up_dump_register: S8: 00000006 S9: 00000100 S10: 0000003f S11: 00000000
[CPU0] up_dump_register: SP: 80205274 FP: 0000018c TP: 00000000 RA: 800020b4
[CPU0] dump_stackinfo: User Stack:
[CPU0] dump_stackinfo: base: 0x802036a8
[CPU0] dump_stackinfo: size: 00008104
[CPU0] dump_stackinfo: sp: 0x80205274
[CPU0] stack_dump: 0x80205254: 80102000 80058a6c 8001cca4 801048e0 80101760 80101760 8010499c 80002180
[CPU0] stack_dump: 0x80205274: 8010499c 8004a914 00000000 6700000b 00000067 8001f496 8001f496 8000ba06
[CPU0] stack_dump: 0x80205294: 0000003f 8001f494 801048e0 80101760 00000000 80058a6c 00000100 7474754e
[CPU0] stack_dump: 0x802052b4: 80200058 80058b1c 801048e0 80201000 0000003d 80201000 80200e3c 00000080
[CPU0] stack_dump: 0x802052d4: fffffffc 0000000a 80205310 80002664 2e323100 302e3031 80200e00 00000080
[CPU0] stack_dump: 0x802052f4: ffffffff 376248e0 37386238 38366430 7269642d 4a207974 32206c75 30322035
[CPU0] stack_dump: 0x80205314: 30203532 33303a30 0033343a 00000000 00000008 0000002f 736972e0 00762d63
[CPU0] stack_dump: 0x80205334: 00000000 80050dca 00002080 80000180 0000003f 0000000a 80201000 80201000
[CPU0] stack_dump: 0x80205354: 0000003d 80201000 80200e3c 00000080 00000008 ffffffda 801048e0 80008916
[CPU0] stack_dump: 0x80205374: 80058b1c 802054dc 00000006 800004f4 00000000 80046a6a 00002080 80000180
[CPU0] stack_dump: 0x80205394: 80046a6a 80040106 80205520 80201000 00000000 0000002e 50000000 000001ff
[CPU0] stack_dump: 0x802053b4: 00000001 00000001 00000007 80058a6c 00000100 00000000 00000000 00000000
[CPU0] stack_dump: 0x802053d4: 00000100 80058a6c 80201000 80200e4c 80200e3c 80201000 0000003d 80201000
[CPU0] stack_dump: 0x802053f4: 80201000 0000000a 0000003f 00000000 0000004c 00000068 00000009 0000002a
[CPU0] stack_dump: 0x80205414: 00002080 00000068 00000009 0000002a 00002080 00000068 00000009 0000002a
[CPU0] stack_dump: 0x80205434: 00002080 802054ec 80052012 80205538 00000000 80205478 0000002c 0000000a
[CPU0] stack_dump: 0x80205454: 802054ec 00000000 80047b38 000001ff 800547cc 800547d0 00000027 00000005
[CPU0] stack_dump: 0x80205474: 00001fa8 80203535 802036a8 00000000 00001fa8 80203658 8004062e 80055000
[CPU0] stack_dump: 0x80205494: 80055000 80055000 00000000 80201000 80201000 80201000 80201000 80201000
[CPU0] stack_dump: 0x802054b4: 80201000 80201000 80200e4c 80200e38 80058c6c 80203488 80051e6e 800569ec
[CPU0] stack_dump: 0x802054d4: 00001fa8 80203658 80205518 00000000 80055000 80055000 800489b6 80051ff2
[CPU0] stack_dump: 0x802054f4: 00001fa8 80203658 80205518 80055000 80201000 80058c6c 8004d642 80201000
[CPU0] stack_dump: 0x80205514: 80055420 80058ed8 80205538 802008e8 80203658 00000000 8004d654 80200e38
[CPU0] stack_dump: 0x80205534: 80200e50 00000051 09a9a2c8 80200e38 80200e50 80200e58 8004d862 80200e54
[CPU0] stack_dump: 0x80205554: 80200e44 80200e40 80201000 80200e37 0000003e 80203658 80051c6a 80201000
[CPU0] stack_dump: 0x80205574: 00001fa8 80203658 00000066 00010066 00000000 00000000 00002000 80201000
[CPU0] stack_dump: 0x80205594: 80203488 80055000 00000000 00000000 80055000 80055000 80055000 80055000
[CPU0] stack_dump: 0x802055b4: 80055000 80055000 80055000 80201000 80055000 0000000a 8004abfc 00000000
[CPU0] stack_dump: 0x802055d4: 00000000 80203696 80055acc 000ff170 00000001 00000018 000fa9a0 000047d0
[CPU0] stack_dump: 0x802055f4: 000fa9a0 00004938 00000000 00000000 00000000 00000000 00000000 00000000
[CPU0] stack_dump: 0x80205614: 00000000 00000000 00000000 00000000 00000000 8004a914 800400a6 00000000
[CPU0] stack_dump: 0x80205634: 00000000 00000005 80203668 00000000 00000000 00000000 00000000 00000000
[CPU0] pthread_completejoin: pid=55 exit_value=0xffffffff
[CPU0] pthread_completejoin: pid=54 exit_value=0xffffffff
[CPU0] nxtask_exit: ostest pid=5,TCB=0x801048e0
ostest_main: Exiting with status 256
[CPU1] nxtask_exit: ostest pid=4,TCB=0x80104728
nsh> QEMU: Terminated
I'm not really digging to the root cause yet, but It seems there might have race condition, and the issue would be mitigated if I change waiter_action() by adding a delay:
diff --git a/testing/ostest/signest.c b/testing/ostest/signest.c
index 5e8e65961..345d46083 100644
--- a/testing/ostest/signest.c
+++ b/testing/ostest/signest.c
@@ -139,6 +139,7 @@ static void waiter_action(int signo)
sched_unlock();
sem_post(&g_sem_signal_finish);
+ usleep(1);
}
At the same time, I found another issue was reported which is interested in. I wonder if anyone experiences the similar case before?
On which OS does this issue occur?
[OS: Linux]
What is the version of your OS?
Ubuntu 22.04.5
NuttX Version
master
Issue Architecture
[Arch: risc-v]
Issue Area
[Area: Kernel]
Host information
NuttX CFLAGS:
-fno-common
-Wall
-Wstrict-prototypes
-Wshadow
-Wundef
-Wno-attributes
-Wno-unknown-pragmas
-Wno-psabi
-Os
-fno-strict-aliasing
-fomit-frame-pointer
-ffunction-sections
-fdata-sections
-nostdlib \-g\
-march=rv32imafdc
-mabi=ilp32d
-isystem /home/u/workspace/nuttx/include
-D__NuttX__
NuttX CXXFLAGS:
-fno-common
-Wall
-Wshadow
-Wundef
-Wno-attributes
-Wno-unknown-pragmas
-nostdinc++
-Wno-psabi
-fno-exceptions
-fcheck-new
-fno-rtti
-Os
-fno-strict-aliasing
-fomit-frame-pointer
-ffunction-sections
-fdata-sections
-nostdlib \-g\
-march=rv32imafdc
-mabi=ilp32d
-isystem /home/u/workspace/nuttx/include/cxx
-isystem /home/u/workspace/nuttx/include
-D__NuttX__
NuttX LDFLAGS:
-melf32lriscv
--gc-sections
-nostdlib
--cref
-Map=/home/u/workspace/nuttx/nuttx.map
--print-memory-usage
NuttX configuration options:
CONFIG_HOST_LINUX=y
CONFIG_APPS_DIR=\../nuttx-apps\
CONFIG_BASE_DEFCONFIG=\rv-virt:pnsh\
CONFIG_MODULES=y
CONFIG_BUILD_PROTECTED=y
CONFIG_BUILD_2PASS=y
CONFIG_PASS1_TARGET=\all\
CONFIG_PASS1_BUILDIR=\boards/risc-v/qemu-rv/rv-virt/kernel\
CONFIG_PASS1_OBJECT=\\
CONFIG_NUTTX_USERSPACE=0x80040000
CONFIG_OUTPUT_STRIP_PATHS=y
CONFIG_ARCH_FLOAT_H=y
CONFIG_ARCH_HAVE_STDARG_H=y
CONFIG_ARCH_HAVE_SETJMP=y
CONFIG_ARCH_NONE_DEBUG_H=y
CONFIG_FORTIFY_SOURCE=0
CONFIG_ASSERTIONS_FILENAME=y
CONFIG_DEBUG_ALERT=y
CONFIG_DEBUG_FEATURES=y
CONFIG_DEBUG_ERROR=y
CONFIG_DEBUG_WARN=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_ASSERTIONS=y
CONFIG_DEBUG_ASSERTIONS_FILENAME=y
CONFIG_DEBUG_SCHED=y
CONFIG_DEBUG_SCHED_ERROR=y
CONFIG_DEBUG_SCHED_WARN=y
CONFIG_DEBUG_SCHED_INFO=y
CONFIG_DEBUG_IRQ=y
CONFIG_ARCH_HAVE_STACKCHECK=y
CONFIG_STACK_COLORATION=y
CONFIG_STACK_USAGE_WARNING=0
CONFIG_DEBUG_SYMBOLS=y
CONFIG_DEBUG_SYMBOLS_LEVEL=\-g\
CONFIG_ARCH_HAVE_CUSTOMOPT=y
CONFIG_DEBUG_FULLOPT=y
CONFIG_LTO_NONE=y
CONFIG_DEBUG_OPT_UNUSED_SECTIONS=y
CONFIG_DEBUG_LINK_MAP=y
CONFIG_ARCH_RISCV=y
CONFIG_ARCH=\risc-v\
CONFIG_ARCH_FAMILY=\rv32\
CONFIG_ARCH_CHIP=\qemu-rv\
CONFIG_ARCH_CHIP_QEMU_RV=y
CONFIG_ARCH_RV32=y
CONFIG_ARCH_RV_ISA_M=y
CONFIG_ARCH_RV_ISA_A=y
CONFIG_ARCH_RV_ISA_C=y
CONFIG_ARCH_RV_ISA_ZICSR_ZIFENCEI=y
CONFIG_ARCH_RV_ISA_VENDOR_EXTENSIONS=\\
CONFIG_ARCH_RV_MMIO_BITS=32
CONFIG_ARCH_RV_HARTID_BASE=0
CONFIG_ARCH_MMU_TYPE_SV32=y
CONFIG_ARCH_HAVE_S_MODE=y
CONFIG_RISCV_PERCPU_SCRATCH=y
CONFIG_RISCV_TOOLCHAIN_GNU_RV64=y
CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
CONFIG_ARCH_CHIP_QEMU_RV32=y
CONFIG_ARCH_CHIP_QEMU_RV_ISA_M=y
CONFIG_ARCH_CHIP_QEMU_RV_ISA_A=y
CONFIG_ARCH_CHIP_QEMU_RV_ISA_C=y
CONFIG_ARCH_TOOLCHAIN_GNU=y
CONFIG_ARCH_HAVE_ADDRENV=y
CONFIG_ARCH_NEED_ADDRENV_MAPPING=y
CONFIG_ARCH_HAVE_MULTICPU=y
CONFIG_ARCH_HAVE_CPUID_MAPPING=y
CONFIG_ARCH_HAVE_FORK=y
CONFIG_ARCH_HAVE_FPU=y
CONFIG_ARCH_HAVE_DPFPU=y
CONFIG_ARCH_HAVE_LAZYFPU=y
CONFIG_ARCH_HAVE_MMU=y
CONFIG_ARCH_HAVE_MPU=y
CONFIG_ARCH_HAVE_POWEROFF=y
CONFIG_ARCH_HAVE_TESTSET=y
CONFIG_ARCH_HAVE_THREAD_LOCAL=y
CONFIG_ARCH_HAVE_SYSCALL_HOOKS=y
CONFIG_ARCH_HAVE_BACKTRACE=y
CONFIG_ARCH_HAVE_DEBUG=y
CONFIG_ARCH_HAVE_CPUINFO=y
CONFIG_ARCH_CPUINFO_FREQ_KHZ=0
CONFIG_ARCH_HAVE_TCBINFO=y
CONFIG_ARCH_HAVE_ELF_EXECUTABLE=y
CONFIG_ARCH_FPU=y
CONFIG_ARCH_DPFPU=y
CONFIG_ARCH_USE_MPU=y
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_STACKDUMP_MAX_LENGTH=0
CONFIG_BOARD_LOOPSPERMSEC=6366
CONFIG_ARCH_HAVE_INTERRUPTSTACK=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_BOOT_RUNFROMFLASH=y
CONFIG_RAM_START=0x80000000
CONFIG_RAM_SIZE=3145728
CONFIG_FLASH_START=0x0
CONFIG_FLASH_SIZE=0
CONFIG_ARCH_BOARD_QEMU_RV_VIRT=y
CONFIG_ARCH_BOARD=\rv-virt\
CONFIG_ARCH_HAVE_LEDS=y
CONFIG_ARCH_LEDS=y
CONFIG_BOARD_CRASHDUMP_NONE=y
CONFIG_BOARDCTL=y
CONFIG_BOARDCTL_POWEROFF=y
CONFIG_BOARDCTL_MKRD=y
CONFIG_BOARD_MEMORY_RANGE=\\
CONFIG_ARCH_HAVE_TICKLESS=y
CONFIG_USEC_PER_TICK=1000
CONFIG_TIMER_ADJUST_USEC=0
CONFIG_ARCH_HAVE_TIMEKEEPING=y
CONFIG_START_YEAR=2021
CONFIG_START_MONTH=12
CONFIG_START_DAY=1
CONFIG_PREALLOC_TIMERS=8
CONFIG_SPINLOCK=y
CONFIG_IRQ_NWORKS=8
CONFIG_IRQ_WORK_SECTION=\\
CONFIG_IRQ_WORK_STACKSIZE=4096
CONFIG_IRQCOUNT=y
CONFIG_SMP=y
CONFIG_SMP_NCPUS=2
CONFIG_SMP_DEFAULT_CPUSET=0xffffffff
CONFIG_INIT_ENTRY=y
CONFIG_INIT_ARGS=\\
CONFIG_INIT_STACKSIZE=3072
CONFIG_INIT_PRIORITY=100
CONFIG_INIT_ENTRYPOINT=\nsh_main\
CONFIG_INIT_ENTRYNAME=\nsh_main\
CONFIG_RR_INTERVAL=200
CONFIG_TASK_NAME_SIZE=31
CONFIG_SCHED_WAITPID=y
CONFIG_PTHREAD_MUTEX_ROBUST=y
CONFIG_PTHREAD_MUTEX_DEFAULT_PRIO_NONE=y
CONFIG_SCHED_CPULOAD_NONE=y
CONFIG_SCHED_CPULOAD_TICKSPERSEC=100
CONFIG_SCHED_PROFILE_TICKSPERSEC=1000
CONFIG_SCHED_STACK_RECORD=0
CONFIG_DEV_CONSOLE=y
CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6
CONFIG_FILE_STREAM=y
CONFIG_SIG_PREALLOC_ACTIONS=4
CONFIG_SIG_ALLOC_ACTIONS=1
CONFIG_SIG_PREALLOC_IRQ_ACTIONS=8
CONFIG_PREALLOC_MQ_MSGS=8
CONFIG_PREALLOC_MQ_IRQ_MSGS=8
CONFIG_MQ_MAXMSGSIZE=32
CONFIG_DEFAULT_TASK_STACKSIZE=4096
CONFIG_IDLETHREAD_STACKSIZE=2048
CONFIG_PTHREAD_STACK_MIN=256
CONFIG_PTHREAD_STACK_DEFAULT=4096
CONFIG_PID_INITIAL_COUNT=16
CONFIG_ASSERT_PAUSE_CPU_TIMEOUT=2000
CONFIG_LIB_SYSCALL=y
CONFIG_SYS_NNEST=2
CONFIG_ONESHOT=y
CONFIG_ALARM_ARCH=y
CONFIG_DEV_NULL=y
CONFIG_DEV_ZERO=y
CONFIG_DEV_OPTEE_NONE=y
CONFIG_DRVR_MKRD=y
CONFIG_ARCH_HAVE_RDWR_MEM_CPU_RUN=y
CONFIG_ARCH_HAVE_SERIAL_TERMIOS=y
CONFIG_SERIAL=y
CONFIG_SERIAL_CONSOLE=y
CONFIG_16550_UART=y
CONFIG_16550_UART0=y
CONFIG_16550_UART0_BASE=0x10000000
CONFIG_16550_UART0_CLOCK=3686400
CONFIG_16550_UART0_IRQ=37
CONFIG_16550_UART0_BAUD=115200
CONFIG_16550_UART0_PARITY=0
CONFIG_16550_UART0_BITS=8
CONFIG_16550_UART0_2STOP=0
CONFIG_16550_UART0_RX_TRIGGER=2
CONFIG_16550_UART0_RXBUFSIZE=256
CONFIG_16550_UART0_TXBUFSIZE=256
CONFIG_16550_UART0_SERIAL_CONSOLE=y
CONFIG_SERIAL_UART_ARCH_MMIO=y
CONFIG_16550_REGINCR=1
CONFIG_16550_REGWIDTH=8
CONFIG_16550_ADDRWIDTH=0
CONFIG_16550_DLF_SIZE=0
CONFIG_SERIAL_NPOLLWAITERS=4
CONFIG_SYSLOG=y
CONFIG_SYSLOG_DEFAULT_MASK=0xff
CONFIG_SYSLOG_CRLF=y
CONFIG_SYSLOG_MAX_CHANNELS=1
CONFIG_SYSLOG_DEVPATH=\/dev/ttyS1\
CONFIG_SYSLOG_DEFAULT=y
CONFIG_FS_NEPOLL_DESCRIPTORS=8
CONFIG_FS_LOCK_BUCKET_SIZE=0
CONFIG_SENDFILE_BUFSIZE=512
CONFIG_FS_BACKTRACE=0
CONFIG_FS_MQUEUE_VFS_PATH=\/var/mqueue\
CONFIG_FS_MQUEUE_NPOLLWAITERS=4
CONFIG_FS_ANONMAP=y
CONFIG_FS_PROCFS=y
CONFIG_FS_HOSTFS=y
CONFIG_NXFONTS_PACKEDMSFIRST=y
CONFIG_MM_DEFAULT_MANAGER=y
CONFIG_MM_KERNEL_HEAP=y
CONFIG_MM_KERNEL_HEAPSIZE=8192
CONFIG_MM_DEFAULT_ALIGNMENT=8
CONFIG_MM_NODE_GUARDSIZE=0
CONFIG_MM_REGIONS=1
CONFIG_MM_MAP_COUNT_MAX=1024
CONFIG_MM_BACKTRACE=-1
CONFIG_MM_FREE_DELAYCOUNT_MAX=0
CONFIG_MM_HEAP_BIGGEST_COUNT=30
CONFIG_MM_HEAP_MEMPOOL_THRESHOLD=-1
CONFIG_PATH_INITIAL=\/system/bin\
CONFIG_BINFMT_LOADABLE=y
CONFIG_ELF=y
CONFIG_ELF_STACKSIZE=4096
CONFIG_BINFMT_ELF_RELOCATABLE=y
CONFIG_STDIO_BUFFER_SIZE=64
CONFIG_STDIO_LINEBUFFER=y
CONFIG_NUNGET_CHARS=2
CONFIG_LIBC_FLOATINGPOINT=y
CONFIG_LIBC_LONG_LONG=y
CONFIG_ARCH_LOWPUTC=y
CONFIG_LIBC_ARCH_ELF=y
CONFIG_LIBC_RAND_ORDER=1
CONFIG_LIBC_HOMEDIR=\/\
CONFIG_LIBC_TMPDIR=\/tmp\
CONFIG_LIBC_MAX_TMPFILE=32
CONFIG_LIBC_MAX_EXITFUNS=0
CONFIG_LIBC_EXECFUNCS=y
CONFIG_POSIX_SPAWN_DEFAULT_STACKSIZE=4096
CONFIG_LIBC_HOSTNAME=\\
CONFIG_LIBC_OPEN_MAX=256
CONFIG_NAME_MAX=32
CONFIG_PATH_MAX=256
CONFIG_LINE_MAX=80
CONFIG_LIBC_STRERROR=y
CONFIG_LIBC_PERROR_STDOUT=y
CONFIG_LIBC_STRSIGNAL=y
CONFIG_LIBC_ELF=y
CONFIG_LIBC_ELF_MAXDEPEND=2
CONFIG_LIBC_ELF_ALIGN_LOG2=2
CONFIG_LIBC_ELF_BUFFERSIZE=32
CONFIG_LIBC_ELF_BUFFERINCR=32
CONFIG_LIBC_ELF_RELOCATION_BUFFERCOUNT=256
CONFIG_LIBC_ELF_SYMBOL_CACHECOUNT=256
CONFIG_TLS_NELEM=0
CONFIG_TLS_TASK_NELEM=0
CONFIG_TLS_NCLEANUP=0
CONFIG_LIBC_GAISTRERROR_ERRNUM=y
CONFIG_LIBC_ENVPATH=y
CONFIG_LIBC_FTOK_VFS_PATH=\/var/ftok\
CONFIG_LIBC_MEMFD_ERROR=y
CONFIG_LIBC_TEMPBUFFER=y
CONFIG_LIBC_MAX_TEMPBUFFER=2
CONFIG_LIBC_TEMPBUFFER_MALLOC=y
CONFIG_LIBC_MUTEX_BACKTRACE=0
CONFIG_BUILTIN=y
CONFIG_SYMTAB_ORDEREDBYNAME=y
CONFIG_STREAM_OUT_BUFFER_SIZE=64
CONFIG_STREAM_HEXDUMP_BUFFER_SIZE=128
CONFIG_STREAM_BASE64_BUFFER_SIZE=128
CONFIG_LIBC_INLINE_QUEUE=y
CONFIG_LIBM=y
CONFIG_BUILTIN_TOOLCHAIN=y
CONFIG_COVERAGE_NONE=y
CONFIG_COVERAGE_DEFAULT_PREFIX_STRIP=\0\
CONFIG_COVERAGE_DEFAULT_PREFIX=\/data\
CONFIG_PROFILE_NONE=y
CONFIG_EXAMPLES_HELLO=y
CONFIG_EXAMPLES_HELLO_PROGNAME=\hello\
CONFIG_EXAMPLES_HELLO_PRIORITY=100
CONFIG_EXAMPLES_HELLO_STACKSIZE=4096
CONFIG_NSH_LIBRARY=y
CONFIG_NSH_PROMPT_STRING=\nsh> \
CONFIG_NSH_PROMPT_MAX=32
CONFIG_NSH_PROMPT_ENV=\PS1\
CONFIG_NSH_PROMPT_SUFFIX=\> \
CONFIG_NSH_READLINE=y
CONFIG_NSH_QUOTE=y
CONFIG_NSH_MAXARGUMENTS=7
CONFIG_NSH_ARGCAT=y
CONFIG_NSH_NESTDEPTH=3
CONFIG_NSH_ALIAS=y
CONFIG_NSH_ALIAS_MAX_AMOUNT=1
CONFIG_NSH_BUILTIN_APPS=y
CONFIG_NSH_DISABLE_DATE=y
CONFIG_NSH_DISABLE_LOMTD=y
CONFIG_NSH_DISABLE_MB=y
CONFIG_NSH_DISABLE_MH=y
CONFIG_NSH_DISABLE_MW=y
CONFIG_NSH_DISABLE_SHUTDOWN=y
CONFIG_NSH_DISABLE_TIMEDATECTL=y
CONFIG_NSH_CODECS_BUFSIZE=128
CONFIG_NSH_CMDOPT_HEXDUMP=y
CONFIG_NSH_PROC_MOUNTPOINT=\/proc\
CONFIG_NSH_FILEIOSIZE=512
CONFIG_NSH_SYSINITSCRIPT=\init.d/rc.sysinit\
CONFIG_NSH_INITSCRIPT=\init.d/rcS\
CONFIG_NSH_SCRIPT_REDIRECT_PATH=\\
CONFIG_NSH_CONSOLE=y
CONFIG_NSH_ARCHINIT=y
CONFIG_SYSTEM_DD=y
CONFIG_SYSTEM_DD_PROGNAME=\dd\
CONFIG_SYSTEM_DD_PRIORITY=100
CONFIG_SYSTEM_DD_STACKSIZE=4096
CONFIG_SYSTEM_DD_STATS=y
CONFIG_SYSTEM_NSH=y
CONFIG_SYSTEM_NSH_PRIORITY=100
CONFIG_SYSTEM_NSH_STACKSIZE=4096
CONFIG_SYSTEM_NSH_PROGNAME=\nsh\
CONFIG_SYSTEM_READLINE=y
CONFIG_READLINE_HAVE_EXTMATCH=y
CONFIG_READLINE_ECHO=y
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_READLINE_CMD_HISTORY_LINELEN=80
CONFIG_READLINE_CMD_HISTORY_LEN=16
CONFIG_TESTING_OSTEST=y
CONFIG_TESTING_OSTEST_LOOPS=10
CONFIG_TESTING_OSTEST_STACKSIZE=8192
CONFIG_TESTING_OSTEST_NBARRIER_THREADS=8
CONFIG_TESTING_OSTEST_RR_RANGE=10000
CONFIG_TESTING_OSTEST_RR_RUNS=10
CONFIG_TESTING_OSTEST_FPULOOPS=16
CONFIG_TESTING_OSTEST_FPUMSDELAY=750
CONFIG_TESTING_OSTEST_FPUPRIORITY=100
CONFIG_TESTING_OSTEST_FPUSTACKSIZE=4096
CONFIG_TESTING_OSTEST_WAITRESULT=y
CONFIG_TESTING_GETPRIME=y
CONFIG_TESTING_GETPRIME_PROGNAME=\getprime\
CONFIG_TESTING_GETPRIME_PRIORITY=50
CONFIG_TESTING_GETPRIME_STACKSIZE=4096
CONFIG_TESTING_GETPRIME_THREAD_PRIORITY=10
CONFIG_TESTING_SMP=y
CONFIG_TESTING_SMP_NBARRIER_THREADS=8
CONFIG_TESTING_SMP_PROGNAME=\smp\
CONFIG_TESTING_SMP_PRIORITY=100
CONFIG_TESTING_SMP_STACKSIZE=4096
Host system OS:
Ubuntu 22.04.5 LTS Linux u-NUC7i5BNH 6.8.0-64-generic #67~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Jun 24 15:19:46 UTC 2 x86_64 x86_64
Host system PATH:
/home/u/.local/bin
/home/u/.gvm/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/snap/bin
Verification
Description / Steps to reproduce the issue
This issue has occurred based on the modified config (rv-virt:pnsh) with enabling SMP and protected mode for RISC-V qemu-rv for my purpose, and to reach this, I have created the following patch:
After that, the build steps are
./tools/configure.sh -l rv-virt:pnshmakeThen run the Nuttx:
I've successfully got the prompt for NuttShell, but when
ostestis executed, somehow the test always fails at this point:I'm not really digging to the root cause yet, but It seems there might have race condition, and the issue would be mitigated if I change
waiter_action()by adding a delay:At the same time, I found another issue was reported which is interested in. I wonder if anyone experiences the similar case before?
On which OS does this issue occur?
[OS: Linux]
What is the version of your OS?
Ubuntu 22.04.5
NuttX Version
master
Issue Architecture
[Arch: risc-v]
Issue Area
[Area: Kernel]
Host information
Verification