Skip to content

Debug and ReleaseSafe modes crash when accessing usb #2

Description

@dasimmet

when accessing a rpi pico through usb, the tool built with debug info crashes.

tested with git commit 7a81a04

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions