Replies: 7 comments
-
一、riscv64下的python测试进入系统 输出 1. 测试基础运行能力运行 输出 2. Python回归测试2.1 安装vim运行apk add vim 安装 vim 表示StarryOS 内核尚未实现setfsuid和setfsgid,不过不影响vim使用 2.2 基本环境信息测试2.2.1 sys测试创建文件sys_test.py输入 运行 python3 sys_test.py得到 Unsupported ioctl command显示缺少ioctl的syscall支持 2.3 运行python回归测试运行 安装python3-tests 计划运行以下测试
执行目标测试 2.3.1 test_sys 系统接口test_sys
2.3.2 test_types 内置类型系统test_types 2.3.3 test_import 模块导入机制test_import 2.3.4 test_errno 错误报告机制测试test_errno 2.3.5 test_stat 文件状态查询test_stat
2.3.6 test_iotest_io
2.3.7 test_ostest_os
2.3.8 test_fcntltest_fcntl
2.3.9 test_posixtest_posix
2.3.10 test_jsontest_json
2.3.11 test_mathtest_math 2.3.12 test_datetimetest_datetime 2.3.13 test_collectionstest_collections 2.3.14 test_sockettest_socket 2.3.15 test_selecttest_select |
Beta Was this translation helpful? Give feedback.
-
二、riscv64下测试python应用1. 编写python应用1.1 典型的 Web 服务 + 文件处理 + 并发任务2.运行测试运行自检输出 2.1 安装curl2.2 运行测试启动项目,调用 之后cat /tmp/starry.log文件,输出 功能正常 |
Beta Was this translation helpful? Give feedback.
-
三、其他架构下测试python应用1、在aarch64下进行测试运行二中的脚本,得到 1.1 在aarch64下运行python回归测试结果与riscv64上测试的一致 |
Beta Was this translation helpful? Give feedback.
-
四、常用框架的测试1、安装pip运行 apk add py3-pip 2、安装FastApi需要先创建虚拟环境 运行pip install fastapi进行安装,无法安装。 打log分析有 可以看到在level:1,optname:3,的时候sys_getsockopt返回 Err,而Err的返回的地方是在call_dispatch! 主要原因是没有对 SO_TYPE 进行支持 支持完之后显示 需要对 level:6,optname:31进行支持,即 进行支持 |
Beta Was this translation helpful? Give feedback.
-
五、段错误解决1、问题分析运行python -m test -v test_json 对应测试 预期行为是返回RecursionError 探究路径栈空间,Python 层递归计数器 编写测试文件测试递归检测机制 结果为调用1000层的时候报错RecursionError,说明递归检测机制正常工作 使用和测试文件一致的方式进行测试 返回 在其他设备上进行测试,修改栈空间大小 通过ulimit -s可以查看当前栈空间大小 一般设备上为 通过ulimit -s 512修改一般设备的栈空间 表示python正常handle住错误 增加计数器,统计调用深度 StarryOS在1800次后段错误 2. 进行调试安装gdb、运行 进入gdb后运行 显示 2.1 打印调用栈通过faulthandler.enable()打印出 最后三次内存访问为 用户栈地址为 在CPython中关于,内存限制的定义如下 这里估计为hard_limit以及soft_limit计算错误 有三个关键值:c_stack_top、c_stack_soft_limit、c_stack_hard_limit 获取这些值的代码为 其中关于musl,有如下内容 /// XXX musl supports HAVE_PTHRED_GETATTR_NP, but the resulting stack size 所以最后会走到 其中 并进入_Py_STACK_GROWS_DOWN分支 其中Py_C_STACK_SIZE为:4,000,000 -> 4MB 关于c_stack_top、c_stack_soft_limit、c_stack_hard_limit的计算 其中 有_PyOS_STACK_MARGIN_BYTES = 16384 有c_stack_soft_limit为 3.78MB 解决办法是把用户栈设为 4MB |
Beta Was this translation helpful? Give feedback.
-
六、IO递归段错误解决1. 错误现象test_recursive_repr (test.test_io.PyBufferedReaderTest.test_recursive_repr) ... Fatal Python error: Segmentation fault 2. 报错测试和json一样,将内存扩大到4MB能通过测试 |
Beta Was this translation helpful? Give feedback.
-
本次训练营项目阶段工作内容的总结一、 工作概述本次训练营主要做了验证StarryOS 不同架构对 Python 运行时环境的支持。实验分别在 RISC-V 64 与 AArch64 两种指令集架构下展开。
二、回归测试情况分别在RISC-V 64 与 AArch64,安装了python 3.12.12 和 python3-tests,进行了以下回归测试 发现有以下syscall未实现 三、递归调用段错误问题的解决在回归测试中发现在json测试和io测试中发生了段错误。 在解决过程中尝试使用gdb发现 四、实现了简单的web应用实现了一个本地的文本存储应用,通过网络接受字符串并存储到文件中,并通过curl进行调用,证明了StarryOS能实现python基于文件读写和多线程的网络服务。 五、尝试测试更多框架通过安装pip,去安装fastapi,发现POSIX支持不完善,在测试过程中发现以下syscall未实现。 对于不完善的POSIX支持,目前实现了 level:1,optname: 3 的支持,即 (SOL_SOCKET, SO_TYPE) 目前还在继续支持中 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
第一周
启动项目,研究StarryOS源码,确定选题为验证Python在ARM64下的运行情况
第二周
调研验证方式,编写验证脚本,先在riscv下进行测试
第三周
编写python应用进行测试,在riscv下和aarch64下验证
第四周
研究json递归调用的段错误问题
第五周
研究json递归调用的段错误问题,研究io递归调用的段错误问题
第六周
pip网络问题
Beta Was this translation helpful? Give feedback.
All reactions