masayuki2009 commented on PR #8951:
URL: https://github.com/apache/nuttx/pull/8951#issuecomment-1495585959
>It is strange. I just rebuilt the code and can't reproduce the crash. I
will do more experiments.
@pkarashchenko
I tried this PR with
```
--- a/boards/arm/cxd56xx/spresense/configs/smp/defconfig
+++ b/boards/arm/cxd56xx/spresense/configs/smp/defconfig
@@ -40,12 +40,14 @@ CONFIG_NSH_ARCHINIT=y
CONFIG_NSH_BUILTIN_APPS=y
CONFIG_NSH_READLINE=y
CONFIG_PREALLOC_TIMERS=4
+CONFIG_PRIORITY_INHERITANCE=y
CONFIG_RAM_SIZE=1572864
CONFIG_RAM_START=0x0d000000
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RR_INTERVAL=200
CONFIG_RTC=y
CONFIG_RTC_DRIVER=y
+CONFIG_SEM_PREALLOCHOLDERS=0
CONFIG_SMP=y
CONFIG_SMP_NCPUS=2
CONFIG_SPI=y
$ arm-none-eabi-gcc --version
arm-none-eabi-gcc (Arm GNU Toolchain 12.2.MPACBTI-Rel1 (Build
arm-12-mpacbti.34)) 12.2.1 20230214
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
```
And the ostest passed without any errors.
```
NuttShell (NSH) NuttX-3.6.1
nsh> uname -a
NuttX 3.6.1 7b6a424c6d-dirty Apr 4 2023 17:35:14 arm spresense
nsh> ps
PID GROUP CPU PRI POLICY TYPE NPX STATE EVENT SIGMASK
STACK COMMAND
0 0 0 0 FIFO Kthread N-- Assigned 0000000000000000
001000 CPU0 IDLE
1 1 1 0 FIFO Kthread N-- Running 0000000000000000
001000 CPU1 IDLE
3 3 --- 200 RR Task --- Waiting MQ empty 0000000000000000
000976 cxd56_pm_task
4 4 0 100 RR Task --- Running 0000000000000000
002000 spresense_main
nsh> free
total used free largest nused nfree
Umem: 1392840 15744 1377096 1374864 77 3
nsh> ostest
stdio_test: write fd=1
stdio_test: Standard I/O Check: printf
stdio_test: write fd=2
...
user_main: priority inheritance test
priority_inheritance: Started
priority_inheritance: Starting lowpri_thread-1 (of 1) at 1
priority_inheritance: Set lowpri_thread-1 priority to 1
priority_inheritance: Waiting...
lowpri_thread-1: Started
lowpri_thread-1: initial priority: 1
lowpri_thread-1: Waiting for the midle pri task to run
g_middlestate: 0
g_highstate[0]: 0
I still have a count on the semaphore
lowpri_thread-1: Waiting for the midle pri task to run
g_middlestate: 0
g_highstate[0]: 0
I still have a count on the semaphore
priority_inheritance: Starting medpri_thread at 99
priority_inheritance: Set medpri_thread priority to 99
priority_inheritance: Waiting...
medpri_thread: Started ... I won't let go of the CPU!
lowpri_thread-1: Sem count: 0, No. highpri thread: 0
lowpri_thread-1: SUCCESS priority before sem_post: 1
lowpri_thread-1: SUCCESS final priority: 1
lowpri_thread-1: Okay... I'm done!
priority_inheritance: Starting highpri_thread-1 (of 1) at 255
priority_inheritance: Set highpri_thread-1 priority to 255
priority_inheritance: Waiting for highpri_thread-1 to complete
highpri_thread-1: Started
highpri_thread-1: Calling sem_wait()
highpri_thread-1: SUCCESS midpri_thread is still running!
highpri_thread-1: Okay... I'm done!
priority_inheritance: Waiting for medpri_thread to complete
medpri_thread: Okay... I'm done!
priority_inheritance: Waiting for lowpri_thread-1 to complete
priority_inheritance: Restoration Test:
priority_inheritance: Task0 initial priority is:200
priority_inheritance: Task1 initial priority is:210
priority_inheritance: Waiting for Task-0 to complete
priority_inheritance: Task2 initial priority is:220
priority_inheritance: Task0 Started, waiting 0 uS to take count
priority_inheritance: Task1 Started, waiting 10000 uS to take count
priority_inheritance: Task2 Started, waiting 20000 uS to take count
priority_inheritance: Task0 Posted
priority_inheritance: Task0 priority was:200 is:200
priority_inheritance: Waiting for Task-1 to complete
priority_inheritance: Task2 Posted
priority_inheritance: Task2 priority was:220 is:220
priority_inheritance: Task1 Posted
priority_inheritance: Task1 priority was:210 is:210
priority_inheritance: Waiting for Task-2 to complete
priority_inheritance: PASSED Priority were correctly restored.
priority_inheritance: Finished
End of test memory usage:
VARIABLE BEFORE AFTER
======== ======== ========
arena 1540c8 1540c8
ordblks 11 12
mxordblk 143ed8 143ed8
uordblks 8520 a828
fordblks 14bba8 1498a0
user_main: vfork() test
vfork_test: Child 94 ran successfully
Final memory usage:
VARIABLE BEFORE AFTER
======== ======== ========
arena 1540c8 1540c8
ordblks 4 12
mxordblk 14b720 143ed8
uordblks 74e8 c028
fordblks 14cbe0 1480a0
user_main: Exiting
ostest_main: Exiting with status 0
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]