bytecodealliance / bytecodealliance/componentize-py

Is there a way to include debug info?

Đang mở
#146 6 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Rust
Star
277
Fork
51
Merge trung bình
12 giờ 10 phút
Pull request đã merge (30 ngày)
10

Mô tả

When the .wasm file raises an error, the resulting backtrace does not contain any reference to the original source files (even using `wasmtime::WasmBacktraceDetails::Enable`).

With Rust and Go components it's possible to use compile-time flags such as `--release` or `-no-debug` to control whether debug info is included or not in the .wasm file. So I was wondering if the same would be possible with componentize-py?

Here's an example of the backtrace I get on error (where the only useful reference to my component's code is line 28):

```shell
Error: Failed to call component: error while executing at wasm backtrace:
0: 0xa9b968 - wit-component:adapter:wasi_snapshot_preview1!
1: 0x2230183 - wit-component:shim!adapt-wasi_snapshot_preview1-fd_write
2: 0x21b2244 - libc.so!__wasi_fd_write
3: 0x21b1a9f - libc.so!write
4: 0x14934 - !
5: 0xeba24e - _Py_write_impl
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Python/fileutils.c:1962:17 - _Py_write
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Python/fileutils.c:2033:12
6: 0xf9dffd - _io_FileIO_write_impl
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Modules/_io/fileio.c:874:9 - _io_FileIO_write
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Modules/_io/clinic/fileio.c.h:388:20
7: 0xd16038 - method_vectorcall_FASTCALL_KEYWORDS_METHOD
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Objects/descrobject.c:387:24
8: 0xd09540 - _PyObject_VectorcallTstate
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Include/internal/pycore_call.h:92:11 - PyObject_VectorcallMethod
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Objects/call.c:887:24
9: 0xfab74b - PyObject_CallMethodOneArg
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Include/cpython/abstract.h:103:12 - _textiowrapper_writeflush
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Modules/_io/textio.c:1629:15
10: 0xfacee3 - _io_TextIOWrapper_write_impl
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Modules/_io/textio.c:1759:13 - _io_TextIOWrapper_write
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Modules/_io/clinic/textio.c.h:680:20
11: 0xd64d6e - cfunction_vectorcall_O
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Objects/methodobject.c:509:24
12: 0xd084da - _PyObject_VectorcallTstate
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Include/internal/pycore_call.h:92:11 - PyObject_CallOneArg
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Objects/call.c:401:12
13: 0xd291f6 - PyFile_WriteObject
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Objects/fileobject.c:132:14
14: 0xd292e5 - PyFile_WriteString
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Objects/fileobject.c:156:15
15: 0xeab96b - _Py_WriteIndentedMargin
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Python/traceback.c:430:13 - _PyTraceBack_Print_Indented
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Python/traceback.c:1078:9
16: 0xe96e54 - print_exception_traceback
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Python/pythonrun.c:911:15 - print_exception
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Python/pythonrun.c:1180:9
17: 0xe96465 - print_exception_recursive
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Python/pythonrun.c:1474:13
18: 0xe96122 - _PyErr_Display
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Python/pythonrun.c:1524:9
19: 0xe9600c - PyErr_Display
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Python/pythonrun.c:1556:5
20: 0xea872d - sys_excepthook_impl
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Python/sysmodule.c:772:5 - sys_excepthook
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Python/clinic/sysmodule.c.h:102:20
21: 0xd64ea4 - cfunction_vectorcall_FASTCALL
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Objects/methodobject.c:422:24
22: 0xd08285 - _PyObject_VectorcallTstate
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Include/internal/pycore_call.h:92:11 - _PyObject_FastCallTstate
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Include/internal/pycore_call.h:116:12 - _PyObject_FastCall
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Objects/call.c:334:12
23: 0xe94994 - _PyErr_PrintEx
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Python/pythonrun.c:807:28
24: 0xe96049 - PyErr_PrintEx
at /home/runner/work/componentize-py/componentize-py/cpython/builddir/wasi/../../Python/pythonrun.c:845:5
25: 0x12f52 - !
26: 0xaf3c63 - libcomponentize_py_runtime.so!pyo3::err::PyErr::print::hbb86b960398edf90
27: 0xadda83 - libcomponentize_py_runtime.so!componentize-py#Dispatch
28: 0x221c1db - libcomponentize_py_bindings.so!edgee:components/data-collection#page-export
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu bằng cách lần theo đường dẫn build của componentize-py và cách .wasm được tạo ra được truyền cho Wasmtime, sử dụng WasmBacktraceDetails::Enable làm tham chiếu gỡ lỗi. So sánh các tùy chọn kiểm soát thông tin gỡ lỗi tại thời điểm biên dịch có sẵn trong Rust và Go với các tùy chọn của componentize-py, sau đó xác minh rằng backtrace thu được xác định được các tệp mã nguồn gốc của component.

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

Đánh giá

Công nghệ
python, rust, wasm
Lĩnh vực
build-system, tooling
Loại issue
Tính năng
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
42/100

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.