Debug and ReleaseSafe modes crash when accessing usb
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 38/100
- issue の種類
- バグ
- 明瞭さ
- 説明が足りない
- 活発さ
- 活発
- 技術スタック
- zig
- 領域
- cli, embedded-iot
調査の方向性
まずコミット 7a81a047efe8b82c30396960de51eac9cdf6f0dc をチェックアウトし、Raspberry Pi Pico を USB 経由で接続した状態で zig build run -- info を実行してクラッシュを再現します。Debug ビルドと ReleaseSafe ビルドを比較し、失敗箇所を記録します。どちらのモードでも USB アクセスがクラッシュせずに完了すれば完了です。
索引モデルが issue の本文から書いたものです。
説明
when accessing a rpi pico through usb, the tool built with debug info crashes.
tested with git commit 7a81a047efe8b82c30396960de51eac9cdf6f0dc
example command log:
tobi@simmet-tuxedo:~/repos/zig/picotool$ zig build run -- info
anyzig: .minimum_zig_version '0.16.0' pulled from '/home/tobi/repos/zig/picotool/build.zig.zon'
anyzig: appdata '/home/tobi/.local/share/anyzig'
anyzig: zig '0.16.0' already exists at '/home/tobi/.cache/zig/p/N-V-__8AAFFSVRWqblwBIcA-Yqv-u7sbjsJoww8K0mWaHbmJ'
[timestamp] [threadID] facility level [function call] <message>
--------------------------------------------------------------------------------
[ 0.000040] [0001785d] libusb: debug [libusb_init] libusb v1.0.26.11724
[ 0.000139] [0001785d] libusb: debug [usbi_add_event_source] add fd 3 events 1
[ 0.000182] [0001785d] libusb: debug [get_kernel_version] reported kernel version is 6.17.0-124040-tuxedo
[ 0.000229] [0001785d] libusb: debug [op_init] found usbfs at /dev/bus/usb
[ 0.000236] [0001785d] libusb: debug [op_init] max iso packet length is (likely) 98304 bytes
[ 0.000247] [0001785d] libusb: debug [op_init] sysfs is available
[ 0.000767] [0001785d] libusb: debug [linux_get_device_address] getting address for device: usb5 detached: 0
[ 0.000777] [0001785d] libusb: debug [linux_get_device_address] scan usb5
[ 0.000783] [0001785e] libusb: debug [linux_netlink_event_thread_main] netlink event thread entering
[ 0.000851] [0001785d] libusb: debug [linux_get_device_address] bus=5 dev=1
[ 0.000859] [0001785d] libusb: debug [linux_enumerate_device] busnum 5 devaddr 1 session_id 1281
[ 0.000865] [0001785d] libusb: debug [linux_enumerate_device] allocating new device for 5/1 (session 1281)
[ 0.000933] [0001785d] libusb: debug [linux_get_device_address] getting address for device: usb3 detached: 0
[ 0.000941] [0001785d] libusb: debug [linux_get_device_address] scan usb3
[ 0.000997] [0001785d] libusb: debug [linux_get_device_address] bus=3 dev=1
[ 0.001003] [0001785d] libusb: debug [linux_enumerate_device] busnum 3 devaddr 1 session_id 769
[ 0.001009] [0001785d] libusb: debug [linux_enumerate_device] allocating new device for 3/1 (session 769)
[ 0.001079] [0001785d] libusb: debug [linux_get_device_address] getting address for device: usb1 detached: 0
[ 0.001086] [0001785d] libusb: debug [linux_get_device_address] scan usb1
[ 0.001147] [0001785d] libusb: debug [linux_get_device_address] bus=1 dev=1
[ 0.001154] [0001785d] libusb: debug [linux_enumerate_device] busnum 1 devaddr 1 session_id 257
[ 0.001160] [0001785d] libusb: debug [linux_enumerate_device] allocating new device for 1/1 (session 257)
[ 0.001215] [0001785d] libusb: debug [linux_get_device_address] getting address for device: 1-5 detached: 0
[ 0.001222] [0001785d] libusb: debug [linux_get_device_address] scan 1-5
[ 0.001283] [0001785d] libusb: debug [linux_get_device_address] bus=1 dev=4
[ 0.001290] [0001785d] libusb: debug [linux_enumerate_device] busnum 1 devaddr 4 session_id 260
[ 0.001296] [0001785d] libusb: debug [linux_enumerate_device] allocating new device for 1/4 (session 260)
[ 0.001366] [0001785d] libusb: debug [linux_get_parent_info] dev 0x6a4c4f0 (1-5) has parent 0x6a4c210 (usb1) port 5
[ 0.001374] [0001785d] libusb: debug [linux_get_device_address] getting address for device: usb8 detached: 0
[ 0.001381] [0001785d] libusb: debug [linux_get_device_address] scan usb8
[ 0.001440] [0001785d] libusb: debug [linux_get_device_address] bus=8 dev=1
[ 0.001447] [0001785d] libusb: debug [linux_enumerate_device] busnum 8 devaddr 1 session_id 2049
[ 0.001455] [0001785d] libusb: debug [linux_enumerate_device] allocating new device for 8/1 (session 2049)
[ 0.001513] [0001785d] libusb: debug [linux_get_device_address] getting address for device: 1-3 detached: 0
[ 0.001520] [0001785d] libusb: debug [linux_get_device_address] scan 1-3
[ 0.001581] [0001785d] libusb: debug [linux_get_device_address] bus=1 dev=2
[ 0.001588] [0001785d] libusb: debug [linux_enumerate_device] busnum 1 devaddr 2 session_id 258
[ 0.001595] [0001785d] libusb: debug [linux_enumerate_device] allocating new device for 1/2 (session 258)
[ 0.001654] [0001785d] libusb: debug [linux_get_parent_info] dev 0x6a4ca20 (1-3) has parent 0x6a4c210 (usb1) port 3
[ 0.001662] [0001785d] libusb: debug [linux_get_device_address] getting address for device: usb6 detached: 0
[ 0.001669] [0001785d] libusb: debug [linux_get_device_address] scan usb6
[ 0.001728] [0001785d] libusb: debug [linux_get_device_address] bus=6 dev=1
[ 0.001735] [0001785d] libusb: debug [linux_enumerate_device] busnum 6 devaddr 1 session_id 1537
[ 0.001743] [0001785d] libusb: debug [linux_enumerate_device] allocating new device for 6/1 (session 1537)
[ 0.001800] [0001785d] libusb: debug [linux_get_device_address] getting address for device: usb4 detached: 0
[ 0.001807] [0001785d] libusb: debug [linux_get_device_address] scan usb4
[ 0.001867] [0001785d] libusb: debug [linux_get_device_address] bus=4 dev=1
[ 0.001874] [0001785d] libusb: debug [linux_enumerate_device] busnum 4 devaddr 1 session_id 1025
[ 0.001879] [0001785d] libusb: debug [linux_enumerate_device] allocating new device for 4/1 (session 1025)
[ 0.001936] [0001785d] libusb: debug [linux_get_device_address] getting address for device: usb2 detached: 0
[ 0.001943] [0001785d] libusb: debug [linux_get_device_address] scan usb2
[ 0.001999] [0001785d] libusb: debug [linux_get_device_address] bus=2 dev=1
[ 0.002006] [0001785d] libusb: debug [linux_enumerate_device] busnum 2 devaddr 1 session_id 513
[ 0.002013] [0001785d] libusb: debug [linux_enumerate_device] allocating new device for 2/1 (session 513)
[ 0.002134] [0001785d] libusb: debug [linux_get_device_address] getting address for device: 7-1 detached: 0
[ 0.002141] [0001785d] libusb: debug [linux_get_device_address] scan 7-1
[ 0.002205] [0001785d] libusb: debug [linux_get_device_address] bus=7 dev=2
[ 0.002212] [0001785d] libusb: debug [linux_enumerate_device] busnum 7 devaddr 2 session_id 1794
[ 0.002218] [0001785d] libusb: debug [linux_enumerate_device] allocating new device for 7/2 (session 1794)
[ 0.002278] [0001785d] libusb: debug [linux_get_parent_info] parent_dev usb7 not enumerated yet, enumerating now
[ 0.002285] [0001785d] libusb: debug [linux_get_device_address] getting address for device: usb7 detached: 0
[ 0.002291] [0001785d] libusb: debug [linux_get_device_address] scan usb7
[ 0.002348] [0001785d] libusb: debug [linux_get_device_address] bus=7 dev=1
[ 0.002355] [0001785d] libusb: debug [linux_enumerate_device] busnum 7 devaddr 1 session_id 1793
[ 0.002361] [0001785d] libusb: debug [linux_enumerate_device] allocating new device for 7/1 (session 1793)
[ 0.002419] [0001785d] libusb: debug [linux_get_parent_info] dev 0x6a4e5f0 (7-1) has parent 0x6a4f390 (usb7) port 1
[ 0.002427] [0001785d] libusb: debug [linux_get_device_address] getting address for device: 1-4 detached: 0
[ 0.002434] [0001785d] libusb: debug [linux_get_device_address] scan 1-4
[ 0.002493] [0001785d] libusb: debug [linux_get_device_address] bus=1 dev=3
[ 0.002499] [0001785d] libusb: debug [linux_enumerate_device] busnum 1 devaddr 3 session_id 259
[ 0.002506] [0001785d] libusb: debug [linux_enumerate_device] allocating new device for 1/3 (session 259)
[ 0.002565] [0001785d] libusb: debug [linux_get_parent_info] dev 0x6a4f530 (1-4) has parent 0x6a4c210 (usb1) port 4
[ 0.002572] [0001785d] libusb: debug [linux_get_device_address] getting address for device: 3-1 detached: 0
[ 0.002579] [0001785d] libusb: debug [linux_get_device_address] scan 3-1
[ 0.002636] [0001785d] libusb: debug [linux_get_device_address] bus=3 dev=2
[ 0.002643] [0001785d] libusb: debug [linux_enumerate_device] busnum 3 devaddr 2 session_id 770
[ 0.002652] [0001785d] libusb: debug [linux_enumerate_device] allocating new device for 3/2 (session 770)
[ 0.002722] [0001785d] libusb: debug [linux_get_parent_info] dev 0x6a4f5c0 (3-1) has parent 0x6a4bf60 (usb3) port 1
[ 0.002730] [0001785d] libusb: debug [linux_get_device_address] getting address for device: usb7 detached: 0
[ 0.002735] [0001785d] libusb: debug [linux_get_device_address] scan usb7
[ 0.002790] [0001785d] libusb: debug [linux_get_device_address] bus=7 dev=1
[ 0.002796] [0001785d] libusb: debug [linux_enumerate_device] busnum 7 devaddr 1 session_id 1793
[ 0.002803] [0001785d] libusb: debug [linux_enumerate_device] session_id 1793 already exists
[ 0.002810] [0001785d] libusb: debug [linux_get_device_address] getting address for device: 1-2 detached: 0
[ 0.002816] [0001785d] libusb: debug [linux_get_device_address] scan 1-2
[ 0.002876] [0001785d] libusb: debug [linux_get_device_address] bus=1 dev=16
[ 0.002883] [0001785d] libusb: debug [linux_enumerate_device] busnum 1 devaddr 16 session_id 272
[ 0.002890] [0001785d] libusb: debug [linux_enumerate_device] allocating new device for 1/16 (session 272)
[ 0.002957] [0001785d] libusb: debug [linux_get_parent_info] dev 0x6a57f20 (1-2) has parent 0x6a4c210 (usb1) port 2
[ 0.002972] [0001785d] libusb: warning [libusb_init] installing new context as implicit default
[ 0.002979] [0001785d] libusb: debug [libusb_get_device_list]
[ 0.002995] [0001785d] libusb: debug [libusb_get_device_descriptor]
[ 0.003103] [0001785d] libusb: debug [libusb_open] open 1.16
[ 0.003149] [0001785d] libusb: debug [usbi_add_event_source] add fd 8 events 4
[ 0.003159] [0001785d] libusb: debug [libusb_claim_interface] interface 1
[ 0.003203] [0001785d] libusb: debug [libusb_get_device_descriptor]
[ 0.003213] [0001785d] libusb: debug [libusb_get_device_descriptor]
[ 0.003222] [0001785d] libusb: debug [libusb_get_device_descriptor]
[ 0.003230] [0001785d] libusb: debug [libusb_get_device_descriptor]
[ 0.003238] [0001785d] libusb: debug [libusb_get_device_descriptor]
[ 0.003246] [0001785d] libusb: debug [libusb_get_device_descriptor]
[ 0.003254] [0001785d] libusb: debug [libusb_get_device_descriptor]
[ 0.003261] [0001785d] libusb: debug [libusb_get_device_descriptor]
[ 0.003268] [0001785d] libusb: debug [libusb_get_device_descriptor]
[ 0.003276] [0001785d] libusb: debug [libusb_get_device_descriptor]
[ 0.003283] [0001785d] libusb: debug [libusb_get_device_descriptor]
[ 0.003290] [0001785d] libusb: debug [libusb_get_device_descriptor]
[ 0.003297] [0001785d] libusb: debug [libusb_get_device_descriptor]
[ 0.003322] [0001785d] libusb: debug [libusb_submit_transfer] transfer 0x6a4faf0
[ 0.003354] [0001785d] libusb: debug [libusb_get_next_timeout] next timeout in 0.999976s
[ 0.003362] [0001785d] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 0.003369] [0001785d] libusb: debug [handle_events] event sources modified, reallocating event data
[ 0.003382] [0001785d] libusb: debug [usbi_wait_for_events] poll() 2 fds with timeout in 1000ms
[ 0.004902] [0001785d] libusb: debug [usbi_wait_for_events] poll() returned 1
[ 0.004930] [0001785d] libusb: debug [reap_for_handle] urb type=2 status=0 transferred=2
[ 0.004939] [0001785d] libusb: debug [handle_control_completion] handling completion status 0
[ 0.004950] [0001785d] libusb: debug [usbi_handle_transfer_completion] transfer 0x6a4faf0 has callback 0x14c5580
[ 0.004958] [0001785d] libusb: debug [sync_transfer_cb] actual_length=2
[ 0.004970] [0001785d] libusb: debug [libusb_free_transfer] transfer 0x6a4faf0
[ 0.004981] [0001785d] libusb: debug [libusb_submit_transfer] transfer 0x6a4fc20
[ 0.005005] [0001785d] libusb: debug [libusb_get_next_timeout] next timeout in 0.999983s
[ 0.005013] [0001785d] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[ 0.005021] [0001785d] libusb: debug [usbi_wait_for_events] poll() 2 fds with timeout in 1000ms
[ 0.007863] [0001785d] libusb: debug [usbi_wait_for_events] poll() returned 1
[ 0.007891] [0001785d] libusb: debug [reap_for_handle] urb type=2 status=0 transferred=2
[ 0.007900] [0001785d] libusb: debug [handle_control_completion] handling completion status 0
[ 0.007911] [0001785d] libusb: debug [usbi_handle_transfer_completion] transfer 0x6a4fc20 has callback 0x14c5580
[ 0.007919] [0001785d] libusb: debug [sync_transfer_cb] actual_length=2
[ 0.007929] [0001785d] libusb: debug [libusb_free_transfer] transfer 0x6a4fc20
thread 96349 panic: null pointer passed as argument 2, which is declared to never be null
zig-pkg/libusb-0.0.1-P02YQpKOFwBAho1_og2xDIiJXpOLKjuLTwCnbr7Lp2Nw/libusb/sync.c:122:3: 0x14c490f in libusb_control_transfer (/home/tobi/repos/zig/picotool/zig-pkg/libusb-0.0.1-P02YQpKOFwBAho1_og2xDIiJXpOLKjuLTwCnbr7Lp2Nw/libusb/sync.c)
memcpy(buffer + LIBUSB_CONTROL_SETUP_SIZE, data, wLength);
^
zig-pkg/N-V-__8AAMI8bAA1OLWzkwIWAXNxVMZV0urvzoSeC9tRCB4G/picoboot_connection/picoboot_connection.c:262:13: 0x15848bb in picoboot_reset (/home/tobi/repos/zig/picotool/zig-pkg/N-V-__8AAMI8bAA1OLWzkwIWAXNxVMZV0urvzoSeC9tRCB4G/picoboot_connection/picoboot_connection.c)
libusb_control_transfer(usb_device, LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_INTERFACE,
^
zig-pkg/N-V-__8AAMI8bAA1OLWzkwIWAXNxVMZV0urvzoSeC9tRCB4G/picoboot_connection/picoboot_connection_cxx.cpp:80:28: 0x157de2f in operator() (/home/tobi/repos/zig/picotool/zig-pkg/N-V-__8AAMI8bAA1OLWzkwIWAXNxVMZV0urvzoSeC9tRCB4G/picoboot_connection/picoboot_connection_cxx.cpp)
wrap_call([&] { return picoboot_reset(device); });
^
zig-pkg/N-V-__8AAMI8bAA1OLWzkwIWAXNxVMZV0urvzoSeC9tRCB4G/picoboot_connection/picoboot_connection_cxx.cpp:56:14: 0x157b0e2 in wrap_call<(lambda at /home/tobi/repos/zig/picotool/zig-pkg/N-V-__8AAMI8bAA1OLWzkwIWAXNxVMZV0urvzoSeC9tRCB4G/picoboot_connection/picoboot_connection_cxx.cpp:80:15)> (/home/tobi/repos/zig/picotool/zig-pkg/N-V-__8AAMI8bAA1OLWzkwIWAXNxVMZV0urvzoSeC9tRCB4G/picoboot_connection/picoboot_connection_cxx.cpp)
int rc = func();
^
zig-pkg/N-V-__8AAMI8bAA1OLWzkwIWAXNxVMZV0urvzoSeC9tRCB4G/picoboot_connection/picoboot_connection_cxx.cpp:80:5: 0x157b04e in reset (/home/tobi/repos/zig/picotool/zig-pkg/N-V-__8AAMI8bAA1OLWzkwIWAXNxVMZV0urvzoSeC9tRCB4G/picoboot_connection/picoboot_connection_cxx.cpp)
wrap_call([&] { return picoboot_reset(device); });
^
zig-pkg/N-V-__8AAMI8bAA1OLWzkwIWAXNxVMZV0urvzoSeC9tRCB4G/picoboot_connection/picoboot_connection_cxx.h:32:13: 0x12b26f2 in connection (/home/tobi/repos/zig/picotool/zig-pkg/N-V-__8AAMI8bAA1OLWzkwIWAXNxVMZV0urvzoSeC9tRCB4G/main.cpp)
reset();
^
zig-pkg/N-V-__8AAMI8bAA1OLWzkwIWAXNxVMZV0urvzoSeC9tRCB4G/main.cpp:4790:34: 0x122c7d7 in execute (/home/tobi/repos/zig/picotool/zig-pkg/N-V-__8AAMI8bAA1OLWzkwIWAXNxVMZV0urvzoSeC9tRCB4G/main.cpp)
picoboot::connection connection(std::get<2>(handles), std::get<0>(handles));
^
zig-pkg/N-V-__8AAMI8bAA1OLWzkwIWAXNxVMZV0urvzoSeC9tRCB4G/main.cpp:10421:36: 0x126629c in main (/home/tobi/repos/zig/picotool/zig-pkg/N-V-__8AAMI8bAA1OLWzkwIWAXNxVMZV0urvzoSeC9tRCB4G/main.cpp)
if (!selected_cmd->execute(devices) && tries) {
^
../sysdeps/nptl/libc_start_call_main.h:58:16: 0x7c11d882a1c9 in __libc_start_call_main (../sysdeps/x86/libc-start.c)
../csu/libc-start.c:360:3: 0x7c11d882a28a in __libc_start_main_impl (../sysdeps/x86/libc-start.c)
???:?:?: 0x12091b4 in ??? (???)
run
└─ run exe picotool failure
error: process terminated with signal ABRT
failed command: ./.zig-cache/o/227395296b062aa05224d9bee1341637/picotool info
Build Summary: 17/19 steps succeeded (1 failed)
run transitive failure
└─ run exe picotool failure
error: the following build command failed with exit code 1:
.zig-cache/o/93284605db47efe205191195027b324d/build /home/tobi/.cache/zig/p/N-V-__8AAFFSVRWqblwBIcA-Yqv-u7sbjsJoww8K0mWaHbmJ/zig /home/tobi/.cache/zig/p/N-V-__8AAFFSVRWqblwBIcA-Yqv-u7sbjsJoww8K0mWaHbmJ/lib /home/tobi/repos/zig/picotool .zig-cache /home/tobi/.cache/zig --seed 0xd4af7bf6 -Z6b5ea6c4392ffb64 run -- info
- 主要言語
- Zig
- スター
- 5
- フォーク
- 3
- 平均マージ
- 1分
- マージ済み PR(30日)
- 2
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
似ている issue
-
bug No Code Attached Yet
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
joomla/joomla-cms#48587 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
magicmonty/bash-git-prompt#581 ·
-
enhancement
難易度 1/5 1時間未満 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1時間未満 初心者へのやさしさ 78/100
JuliusBrussee/caveman#1214 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 75/100
polhenarejos/pico-hsm#147 ·