[BUG] RP2040 issues running OSTest
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 45/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 静か
- 技術スタック
- c
調査の方向性
まず、raspberrypi-pico、raspberrypi-pico-w、seeed-xiao-rp2040でusbnsh構成を使ってOSTestを再現し、waitpid周辺で報告されているハングと、その直前のtask_restartテストに焦点を当てます。ペイロードではソースファイルや専用のテストファイルは指定されていません。対象ボードでOSTestがハングせずに完了すれば完了とします。
索引モデルが issue の本文から書いたものです。
説明
Description / Steps to reproduce the issue
Discovered while running tests against v13.0.0 RC0:
raspberrypi-pico, raspberrypi-pico-w and seeed-xiao-rp2040 all fail OSTest:
Here raspberrypi-pico:usbnsh failing by hanging:
NuttShell (NSH) NuttX-13.0.0
nsh> help
help usage: help [-v] [<cmd>]
. cp exit mkrd rmdir set truncate
? dirname false mv kill uname
alias date fdinfo pidof pkill umount
basename dmesg help ps usleep uptime
break echo hexdump pwd source watch
cat env ls reboot test xd
cd exec mkdir rm time wait
Builtin Apps:
dd getprime hello nsh ostest sh
nsh> ostest
stdio_test: write fd=1
stdio_test: Standard I/O Check: printf
rite fdstdio_test: Standard I/O Check: fprintf to stderr
ostest_main: putenv(Variable1=BadValue3)
ostest_main: setenv(Variable1, GoodValue1, TRUE)
ostest_main: setenv(Variable2, BadValue1, FALSE)
ostest_main: setenv(Variable2, GoodValue2, TRUE)
ostest_main: setenv(Variable3, GoodValue3, FALSE)
ostest_main: setenv(Variable3, BadValue2, FALSE)
show_variable: Variable=Variable1 has value=GoodValue1
show_variable: Variable=Variable2 has value=GoodValue2
show_variable: Variable=Variable3 has value=GoodValue3
ostest_main: Started user_main at PID=4
user_main: Begin argument test
user_main: Started with argc=5
user_main: argv[0]="ostest"
user_main: argv[1]="Arg1"
user_main: argv[2]="Arg2"
user_main: argv[3]="Arg3"
user_main: argv[4]="Arg4"
End of test memory usage:
VARIABLE BEFORE AFTER
======== ======== ========
arena 3f960 3f960
ordblks 1 1
mxordblk 3a988 3a988
uordblks 4fd8 4fd8
fordblks 3a988 3a988
Here is raspberrypi-pico-w:usbnsh failing (gets stuck at waitpid):
NuttShell (NSH) NuttX-13.0.0
nsh>
nsh> ls
/:
dev/
proc/
nsh> help
help usage: help [-v] [<cmd>]
. cp exit mkrd rmdir truncate
kill uname
alias date fdinfo pidof pkill umount
unalias df free printf sleep unset
basename dmesg help ps usleep uptime
break echo hexdump pwd source watch
cat env ls reboot test xd
cd exec mkdir rm time wait
Builtin Apps:
dd getprime hello nsh ostest sh
nsh> ostest
stdio_test: write fd=1
stdio_test: Standard I/O Check: printf
fd=2
stdio_test: Standard I/O Check: fprintf to stderr
ostest_main: putenv(Variable1=BadValue3)
ostest_main: setenv(Variable1, GoodValue1, TRUE)
ostest_main: setenv(Variable2, BadValue1, FALSE)
ostest_main: setenv(Variable2, GoodValue2, TRUE)
ostest_main: setenv(Variable3, GoodValue3, FALSE)
ostest_main: setenv(Variable3, BadValue2, FALSE)
show_variable: Variable=Variable1 has value=GoodValue1
show_variable: Variable=Variable2 has value=GoodValue2
show_variable: Variable=Variable3 has value=GoodValue3
ostest_main: Started user_main at PID=4
user_main: Begin argument test
user_main: Started with argc=5
user_main: argv[0]="ostest"
user_main: argv[1]="Arg1"
user_main: argv[2]="Arg2"
user_main: argv[3]="Arg3"
user_main: argv[4]="Arg4"
age:
VARIABLE BEFORE AFTER
======== ======== ========
arena 3f960 3f960
ordblks 1 1
mxordblk 3a988 3a988
uordblks 4fd8 4fd8
fordblks 3a988 3a988
user_main: getopt() test
getopt(): Simple test
getopt(): Invalid argument
getopt(): Missing optional argument
getopt_long(): Simple test
getopt_long(): No short options
getopt_long(): Argument for --option=argument
getopt_long(): Invalid long option
getopt_long(): Mixed long and short options
getopt_long(): Invalid short option
getopt_long(): Missing optional arguments
getopt_long_only(): Mixed long and short options
getopt_long_only(): Single hyphen long options
End of test memory usage:
VARIABLE BEFORE AFTER
======== ======== ========
arena 3f960 3f960
ordblks 1 1
mxordblk 3a988 3a988
uordblks 4fd8 4fd8
fordblks 3a988 3a988
user_main: libc tests
test memory usage:
LE BEFORE======== ======== ========
arena 3f960 3f960
ordblks 1 1
mxordblk 3a988 3a988
uordblks 4fd8 4fd8
fordblks 3a988 3a988
show_variable: Variable=Variable1 has value=GoodValue1
show_variable: Variable=Variable2 has value=GoodValue2
show_variable: Variable=Variable3 has value=GoodValue3
show_variable: Variable=Variable1 has no value
show_variable: Variable=Variable2 has value=GoodValue2
show_variable: Variable=Variable3 has value=GoodValue3
End of test memory usage:
VARIABLE BEFORE AFTER
======== ======== ========
arena 3f960 3f960
ordblks 1 2
mxordblk 3a988 3a988
uordblks 4fd8 4fb8
fordblks 3a988 3a9a8
show_variable: Variable=Variable1 has no value
show_variable: Variable=Variable2 has no value
show_variable: Variable=Variable3 has no value
End of test memory usage:
VARIABLE BEFORE AFTER
arena 3f960 3f960
ordblks 2 2
mxordblk 3a988 3a988
uordblks 4fb8 4f40
fordblks 3a9a8 3aa20
user_main: setvbuf test
setvbuf_test: Test NO buffering
setvbuf_test: Using NO buffering
setvbuf_test: Test default FULL buffering
setvbuf_test: Using default FULL buffering
setvbuf_test: Test FULL buffering, buffer size 64
setvbuf_test: Using FULL buffering, buffer size 64
setvbuf_test: Test FULL buffering, pre-allocated buffer
setvbuf_test: Using FULL buffering, pre-allocated buffer
setvbuf_test: Test LINE buffering, buffer size 64
setvbuf_test: Using LINE buffering, buffer size 64
setvbuf_test: Test FULL buffering, pre-allocated buffer
setvbuf_test: Using FULL buffering, pre-allocated buffer
End of test memory usage:
VARIABLE BEFORE AFTER
====
arena 3f960 3f960
ordblks 2 2
mxordblk 3a988 3a988
uordblks 4f40 4f40
fordblks 3aa20 3aa20
user_main: /dev/null test
dev_null: Read 0 bytes from /dev/null
dev_null: Wrote 1024 bytes to /dev/null
End of test memory usage:
VARIABLE BEFORE AFTER
== ======== ========
arena 3f960 3f960
ordblks 2 2
mxordblk 3a988 3a988
uordblks 4f40 4f40
fordblks 3aa20 3aa20
user_main: task_restart test
Test task_restart()
restart_main: setenv(VarName, VarValue, TRUE)
restart_main: Started restart_main at PID=5
restart_main: Started with argc=4
restart_main: argv[0]="ostest"
restart_main: argv[1]="This is argument 1"
restart_main: argv[2]="Argument 2 here"
restart_main: argv[3]="Lastly, the 3rd argument"
restart_main: Variable=VarName has value=VarValue
restart_main: I am still here
restart_main: I am still here
restart_main: Started restart_main at PID=5
restart_main: Started with argc=4
restart_main: argv[0]="ostest"
restart_main: argv[1]="This is argument 1"
restart_main: argv[2]="Argument 2 here"
restart_main: argv[3]="Lastly, the 3rd argument"
restart_main: Variable=VarName has value=VarValue
restart_main: Started with argc=4
restart_main: argv[0]="ostest"
restart_main: argv[1]="This is argument 1"
restart_main: argv[2]="Argument 2 here"
restart_main: argv[3]="Lastly, the 3rd argument"
restart_main: Variable=VarName has value=VarValue
restart_main: Exiting
End of test memory usage:
VARIABLE BEFORE AFTER
=
arena 3f960 3f960
ordblks 2 2
mxordblk 3a988 3a988
uordblks 4f40 4f78
fordblks 3aa20 3a9e8
ser_main: waitpid test
seeed-xiao-rp2040:usbnsh also failing due to hang:
NuttShell (NSH) NuttX-13.0.0
nsh> help
help usage: help [-v] [<cmd>]
. cp exit mkrd rmdir set truncate
? dirname false mv kill uname
unalias df free printf sleep ps usleep uptime
break echo hexdump pwd source watch
cat env ls reboot test xd
cd exec mkdir wait
Builtin Apps:
dd getprime hello nsh ostest
nsh> ostest
stdio_test: write fd=1
stdio_test: Standard I/O Check: printf
stdio_test: write fd=2
stdio_test: Standard I/O Check: fprintf to stderr
ostest_main: putenv(Variable1=BadValue3)
ostest_main: setenv(Variable1, GoodValue1, TRUE)
ostest_main: setenv(Variable2, BadValue1, FALSE)
ostest_main: setenv(Variable2, GoodValue2, TRUE)
ostest_main: setenv(Variable3, GoodValue3, FALSE)
ostest_main: setenv(Variable3, BadValue2, FALSE)
show_variable: Variable=Variable1 has value=GoodValue1
show_variable: Variable=Variable2 has value=GoodValue2
show_variable: Variable=Variable3 has value=GoodValue3
ostest_main: Started user_main at PID=4
user_main: Begin argument test
user_main: Started with argc=5
user_main: argv[0]="ostest"
user_main: argv[1]="Arg1"
user_main: argv[2]="Arg2"
user_main: argv[3]="Arg3"
user_main: argv[4]="Arg4"
End of test memory usage:
BEFORE AFTER
======== ======== ========
arena 3f960 3f960
ordblks 1 1
mxordblk 3a988 3a988
uordblks 4fd8 4fd8
fordblks 3a988 3a988
user_main: getopt() test
getopt(): Simple test
getopt(): Invalid argument
getopt(): Missing optional argument
getopt_long(): Simple test
getopt_long(): No short options
getopt_long(): Argument for --option=argument
getopt_long(): Invalid long option
getopt_long(): Mixed long and short options
getopt_long(): Invalid short option
getopt_long(): Missing optional arguments
getopt_long_only(): Mixed long and short options
getopt_long_only(): Single hyphen long options
End of test memory usage:
VARIABLE BEFORE AFTER
=======
arena 3f960 3f960
ordblks 1 1
mxordblk 3a988 3a988
uordblks 4fd8 4fd8
fordblks 3a988 3a988
user_main: libc tests
End of test memory usage:
VARIABLE BEFORE AFTER
======== ======== ========
arena 3f960 3f960
ordblks 1 1
mxordblk 3a988 3a988
uordblks 4fd8 4fd8
fordblks 3a988 3a988
show_variable: Variable=Variable1 has value=GoodValue1
show_variable: Variable=Variable2 has value=GoodValue2
show_variable: Variable=Variable3 has value=GoodValue3
show_variable: Variable=Variable1 has no value
show_variable: Variable=Variable2 has value=GoodValue2
show_variable: Variable=Variable3 has value=GoodValue3
End of test memory usage:
VARIABLE BEFORE AFTER
======== ======== ========
arena 3f960 3f960
ordblks 1 2
mxordblk 3a988 3a988
uordblks 4fd8 4fb8
fordblks 3a988 3a9a8
show_variable: Variable=Variable1 has no value
show_variable: Variable=Variable2 has no value
show_variable: Variable=Variable3 has no value
End of test memory usage:
EFORE AFTER
======== ======== ========
arena 3f960 3f960
or 2
mxordblk 3a988 3a988
uordblks 4fb8 4f40
fordblks 3a9a8 3aa20
user_main: setvbuf test
setvbuf_test: Test NO buffering
setvbuf_test: Using NO buffering
setvbuf_test: Test default FULL buffering
setvbuf_test: Using default FULL buffering
setvbuf_test: Test FULL buffering, buffer size 64
setvbuf_test: Using FULL buffering, buffer size 64
setvbuf_test: Test FULL buffering, pre-allocated buffer
setvbuf_test: Using FULL buffering, pre-allocated buffer
setvbuf_test: Test LINE buffering, buffer size 64
setvbuf_test: Using LINE buffering, buffer size 64
setvbuf_test: Test FULL buffering, pre-allocated buffer
setvbuf_test: Using FULL buffering, pre-allocated buffer
End of test memory usage:
VARIABLE BEFORE AFTER
======== ======== ========
arena 3f960 3f960
ordblks 2 2
mxordblk 3a988 3a988
uordblks 4f40 4f40
fordblks 3aa20 3aa20
user_main: /dev/null test
dev_null: Read 0 bytes from /dev/null
dev_null: Wrote 1024 bytes to /dev/null
End of test memory usage:
VARIABLE ER
======== ======== ========
arena 3f960 3f960
ordblks 2 2
mxordblk 3a988 3a988
uordblks 4f40 4f40
fordblks 3aa20 3aa20
On which OS does this issue occur?
[OS: Linux]
What is the version of your OS?
Linux 7.0.13-arch1-1 #1 SMP PREEMPT_DYNAMIC Tue, 23 Jun 2026 11:14:21 +0000 x86_64 GNU/Linux
NuttX Version
nuttx-13.0.0-RC0
Issue Architecture
[Arch: arm]
Issue Area
[Area: OS Components], [Area: Applications]
Host information
No response
Verification
- I have verified before submitting the report.
- 主要言語
- C
- スター
- 4.1k
- フォーク
- 1.8k
- 平均マージ
- 1日 3時間
- マージ済み PR(30日)
- 833
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/nuttx のほかの issue
-
Arch: all Arch: arm Area: Build system OS: Linux Type: Bug
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
apache/nuttx#19435 · コメント 9 件 ·
メンテナーはふだん 1 日以内に返信
-
Arch: all OS: Linux Type: Bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
apache/nuttx#16249 · コメント 7 件 ·
メンテナーはふだん 1 日以内に返信
-
Arch: all Area: Networking OS: Linux
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
メンテナーはふだん 1 日以内に返信
-
Type: Enhancement
難易度 4/5 3〜5日 初心者へのやさしさ 22/100
apache/nuttx#21581 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
severity: low
難易度 2/5 1〜3時間 初心者へのやさしさ 64/100
luainkernel/lunatik#2530 ·
メンテナーはふだん 1 日以内に返信
-
polygonToCells CLI silently drops vertices when whitespace precedes a coordinate's closing bracketオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
メンテナーはふだん 1 日以内に返信
-
issue: bug report
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 2 日以内に返信