Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Debug and ReleaseSafe modes crash when accessing usb

オープン
#2 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
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 を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

似ている issue

CLI の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。