when accessing a rpi pico through usb, the tool built with debug info crashes.
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
when accessing a rpi pico through usb, the tool built with debug info crashes.
tested with git commit 7a81a04
example command log: