[BUG] RP2040 issues running OSTest

Đang mở
#19,253 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
45/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Ít trao đổi
Công nghệ
c

Hướng nghiên cứu

Bắt đầu bằng cách tái hiện OSTest với các cấu hình usbnsh trên raspberrypi-pico, raspberrypi-pico-w và seeed-xiao-rp2040, tập trung vào các hiện tượng treo đã được báo cáo xung quanh waitpid và bài kiểm thử task_restart ngay trước đó. Payload không nêu tệp mã nguồn hoặc tệp kiểm thử riêng; được xem là hoàn tất khi OSTest hoàn thành mà không bị treo trên các bo mạch bị ảnh hưởng.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Arch: arm Area: Applications Area: OS Components OS: Linux Type: Bug
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.
Ngôn ngữ chính
C
Star
4.1k
Fork
1.8k
Merge trung bình
1 ngày 3 giờ
Pull request đã merge (30 ngày)
833

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của apache/nuttx

Tất cả issue của apache/nuttx

Issue tương tự

Thêm issue về C

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.