Skip to content

Instantly share code, notes, and snippets.

@bcantrill
Created January 7, 2022 14:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bcantrill/849a8b358c345be4a3c78a4119922425 to your computer and use it in GitHub Desktop.
Save bcantrill/849a8b358c345be4a3c78a4119922425 to your computer and use it in GitHub Desktop.
#pragma D option nspec=100
#pragma D option flowindent
pid$target::libusb_submit_transfer:entry
{
self->spec = speculation();
}
pid$target:*libusb*::entry,
pid$target:*libusb*::return
/self->spec/
{
speculate(self->spec);
printf("%x %x", arg0, arg1);
}
pid$target::libusb_submit_transfer:return
/self->spec && arg1 == 0/
{
discard(self->spec);
self->spec = 0;
}
pid$target::libusb_submit_transfer:return
/self->spec/
{
commit(self->spec);
self->spec = 0;
}
dtrace: pid 100867 has exited
CPU FUNCTION
0 -> libusb_submit_transfer 2ebdef8 2ebac50
0 -> usbi_log 0 4
0 -> log_v 0 4
0 -> usbi_get_context 0 4
0 <- usbi_get_context 1d 2e83e10
0 <- log_v 354 0
0 <- usbi_log b4 0
0 -> add_to_flying_list 2ebde90 0
0 -> calculate_timeout 2ebde90 0
0 <- calculate_timeout ef 144009dd
0 -> usbi_using_timer 2e83e10 2e83ea8
0 -> usbi_timer_valid 2e83e24 2e83ea8
0 <- usbi_timer_valid 17 1
0 <- usbi_using_timer 1d 1
0 -> usbi_log 0 4
0 -> log_v 0 4
0 -> usbi_get_context 0 4
0 <- usbi_get_context 1d 2e83e10
0 <- log_v 354 0
0 <- usbi_log b4 0
0 -> usbi_arm_timer 2e83e24 2ebdeb8
0 <- usbi_arm_timer 95 0
0 <- add_to_flying_list 23d 0
0 -> sunos_submit_transfer 2ebde90 0
0 -> sunos_check_device_and_status_open 2ebac50 0
0 -> usbi_log 0 4
0 -> log_v 0 4
0 -> usbi_get_context 0 4
0 <- usbi_get_context 1d 2e83e10
0 <- log_v 354 0
0 <- usbi_log b4 0
0 -> usbi_get_device_handle_priv 2ebac50 4
0 <- usbi_get_device_handle_priv 11 2ebac90
0 -> sunos_usb_ep_index 0 4
0 <- sunos_usb_ep_index 1f 0
0 -> sunos_find_interface 2ebac50 0
0 -> libusb_get_active_config_descriptor 2e805c0 fffffc7fffdf84b0
0 -> get_active_config_descriptor 2e805c0 fffffc7fffdf8466
0 -> sunos_get_active_config_descriptor 2e805c0 fffffc7fffdf8466
0 -> usbi_get_device_priv 2e805c0 fffffc7fffdf8466
0 <- usbi_get_device_priv 11 2e80628
0 -> usbi_log 0 4
0 -> log_v 0 4
0 -> usbi_get_context 0 4
0 <- usbi_get_context 1d 2e83e10
0 <- log_v 354 0
0 <- usbi_log b4 0
0 <- sunos_get_active_config_descriptor 1fc 9
0 <- get_active_config_descriptor ca 9
0 -> libusb_cpu_to_le16 65 4
0 <- libusb_cpu_to_le16 21 65
0 -> get_active_config_descriptor 2e805c0 2ebce50
0 -> sunos_get_active_config_descriptor 2e805c0 2ebce50
0 -> usbi_get_device_priv 2e805c0 2ebce50
0 <- usbi_get_device_priv 11 2e80628
0 -> usbi_log 0 4
0 -> log_v 0 4
0 -> usbi_get_context 0 4
0 <- usbi_get_context 1d 2e83e10
0 <- log_v 354 0
0 <- usbi_log b4 0
0 <- sunos_get_active_config_descriptor 1fc 65
0 <- get_active_config_descriptor ca 65
0 -> raw_desc_to_config 2e83e10 2ebce50
0 -> parse_configuration 2e83e10 2e7ef90
0 -> parse_descriptor 2ebce50 fffffc7fef2591cb
0 <- parse_descriptor 16e 0
0 -> parse_interface 2e83e10 2ea2990
0 -> parse_descriptor 2ebce59 fffffc7fef2590e8
0 <- parse_descriptor 16e 0
0 -> parse_endpoint 2e83e10 2ea2670
0 -> parse_descriptor 2ebce62 fffffc7fef259086
0 <- parse_descriptor 16e 0
0 <- parse_endpoint 350 7
0 -> parse_endpoint 2e83e10 2ea2690
0 -> parse_descriptor 2ebce69 fffffc7fef259086
0 <- parse_descriptor 16e 0
0 <- parse_endpoint 350 7
0 <- parse_interface 4d4 17
0 -> parse_interface 2e83e10 2ea29a0
0 -> parse_descriptor 2ebce70 fffffc7fef2590e8
0 <- parse_descriptor 16e 0
0 -> parse_endpoint 2e83e10 2ea29e0
0 -> parse_descriptor 2ebce79 fffffc7fef259086
0 <- parse_descriptor 16e 0
0 <- parse_endpoint 350 7
0 -> parse_endpoint 2e83e10 2ea2a00
0 -> parse_descriptor 2ebce80 fffffc7fef259086
0 <- parse_descriptor 16e 0
0 <- parse_endpoint 350 7
0 <- parse_interface 4d4 17
0 -> parse_interface 2e83e10 2ea29b0
0 -> parse_descriptor 2ebce87 fffffc7fef2590e8
0 <- parse_descriptor 16e 0
0 -> parse_endpoint 2e83e10 2ea2a30
0 -> parse_descriptor 2ebce90 fffffc7fef259086
0 <- parse_descriptor 16e 0
0 <- parse_endpoint 350 7
0 -> parse_endpoint 2e83e10 2ea2a50
0 -> parse_descriptor 2ebce97 fffffc7fef259086
0 <- parse_descriptor 16e 0
0 <- parse_endpoint 350 7
0 <- parse_interface 4d4 17
0 -> parse_interface 2e83e10 2ea29c0
0 -> parse_descriptor 2ebce9e fffffc7fef2590e8
0 <- parse_descriptor 16e 0
0 -> parse_endpoint 2e83e10 2ea2a80
0 -> parse_descriptor 2ebcea7 fffffc7fef259086
0 <- parse_descriptor 16e 0
0 <- parse_endpoint 350 7
0 -> parse_endpoint 2e83e10 2ea2aa0
0 -> parse_descriptor 2ebceae fffffc7fef259086
0 <- parse_descriptor 16e 0
0 <- parse_endpoint 350 7
0 <- parse_interface 4d4 17
0 <- parse_configuration 443 0
0 <- raw_desc_to_config d7 0
0 <- libusb_get_active_config_descriptor b4 0
0 -> libusb_free_config_descriptor 2e7ef90 75
0 -> clear_configuration 2e7ef90 75
0 -> clear_interface 2ea2990 75
0 -> clear_endpoint 2ea2670 75
0 <- clear_endpoint 1e 0
0 -> clear_endpoint 2ea2690 75
0 <- clear_endpoint 1e 0
0 <- clear_interface df 2ea2990
0 -> clear_interface 2ea29a0 38
0 -> clear_endpoint 2ea29e0 38
0 <- clear_endpoint 1e 0
0 -> clear_endpoint 2ea2a00 38
0 <- clear_endpoint 1e 0
0 <- clear_interface df 2ea29a0
0 -> clear_interface 2ea29b0 38
0 -> clear_endpoint 2ea2a30 38
0 <- clear_endpoint 1e 0
0 -> clear_endpoint 2ea2a50 38
0 <- clear_endpoint 1e 0
0 <- clear_interface df 2ea29b0
0 -> clear_interface 2ea29c0 38
0 -> clear_endpoint 2ea2a80 38
0 <- clear_endpoint 1e 0
0 -> clear_endpoint 2ea2aa0 38
0 <- clear_endpoint 1e 0
0 <- clear_interface df 2ea29c0
0 <- clear_configuration 73 0
0 <- libusb_free_config_descriptor 2f 2e7ef80
0 <- sunos_find_interface 12f fffffffe
0 -> usbi_log 0 4
0 -> log_v 0 4
0 -> usbi_get_context 0 4
0 <- usbi_get_context 1d 2e83e10
0 <- log_v 354 0
0 <- usbi_log b4 0
0 <- sunos_check_device_and_status_open 643 d
0 -> _errno_to_libusb d 4
0 -> usbi_log 0 4
0 -> log_v 0 4
0 -> usbi_get_context 0 4
0 <- usbi_get_context 1d 2e83e10
0 <- log_v 354 0
0 <- usbi_log b4 0
0 <- _errno_to_libusb 9f fffffffd
0 <- sunos_submit_transfer 1cc fffffffd
0 -> remove_from_flying_list 2ebde90 0
0 -> arm_timer_for_next_timeout 2e83e10 0
0 -> usbi_using_timer 2e83e10 0
0 -> usbi_timer_valid 2e83e24 0
0 <- usbi_timer_valid 17 1
0 <- usbi_using_timer 1d 1
0 -> usbi_log 0 4
0 -> log_v 0 4
0 -> usbi_get_context 0 4
0 <- usbi_get_context 1d 2e83e10
0 <- log_v 354 0
0 <- usbi_log b4 0
0 -> usbi_disarm_timer 2e83e24 4
0 <- usbi_disarm_timer 8a 0
0 <- arm_timer_for_next_timeout 11f 0
0 <- remove_from_flying_list b5 0
0 <- libusb_submit_transfer 18b fffffffd
1 -> libusb_submit_transfer 2ebdef8 2ebac50
1 -> usbi_log 0 4
1 -> log_v 0 4
1 -> usbi_get_context 0 4
1 <- usbi_get_context 1d 2e83e10
1 <- log_v 354 0
1 <- usbi_log b4 0
1 -> add_to_flying_list 2ebde90 0
1 -> calculate_timeout 2ebde90 0
1 <- calculate_timeout ef 17b6a76d
1 -> usbi_using_timer 2e83c50 2e83ce8
1 -> usbi_timer_valid 2e83c64 2e83ce8
1 <- usbi_timer_valid 17 1
1 <- usbi_using_timer 1d 1
1 -> usbi_log 0 4
1 -> log_v 0 4
1 -> usbi_get_context 0 4
1 <- usbi_get_context 1d 2e83e10
1 <- log_v 354 0
1 <- usbi_log b4 0
1 -> usbi_arm_timer 2e83c64 2ebdeb8
1 <- usbi_arm_timer 95 0
1 <- add_to_flying_list 23d 0
1 -> sunos_submit_transfer 2ebde90 0
1 -> sunos_check_device_and_status_open 2ebac50 0
1 -> usbi_log 0 4
1 -> log_v 0 4
1 -> usbi_get_context 0 4
1 <- usbi_get_context 1d 2e83e10
1 <- log_v 354 0
1 <- usbi_log b4 0
1 -> usbi_get_device_handle_priv 2ebac50 4
1 <- usbi_get_device_handle_priv 11 2ebac90
1 -> sunos_usb_ep_index 0 4
1 <- sunos_usb_ep_index 1f 0
1 -> sunos_find_interface 2ebac50 0
1 -> libusb_get_active_config_descriptor 2e80480 fffffc7fffdf8520
1 -> get_active_config_descriptor 2e80480 fffffc7fffdf84d6
1 -> sunos_get_active_config_descriptor 2e80480 fffffc7fffdf84d6
1 -> usbi_get_device_priv 2e80480 fffffc7fffdf84d6
1 <- usbi_get_device_priv 11 2e804e8
1 -> usbi_log 0 4
1 -> log_v 0 4
1 -> usbi_get_context 0 4
1 <- usbi_get_context 1d 2e83e10
1 <- log_v 354 0
1 <- usbi_log b4 0
1 <- sunos_get_active_config_descriptor 1fc 9
1 <- get_active_config_descriptor ca 9
1 -> libusb_cpu_to_le16 65 4
1 <- libusb_cpu_to_le16 21 65
1 -> get_active_config_descriptor 2e80480 2ebce50
1 -> sunos_get_active_config_descriptor 2e80480 2ebce50
1 -> usbi_get_device_priv 2e80480 2ebce50
1 <- usbi_get_device_priv 11 2e804e8
1 -> usbi_log 0 4
1 -> log_v 0 4
1 -> usbi_get_context 0 4
1 <- usbi_get_context 1d 2e83e10
1 <- log_v 354 0
1 <- usbi_log b4 0
1 <- sunos_get_active_config_descriptor 1fc 65
1 <- get_active_config_descriptor ca 65
1 -> raw_desc_to_config 2e83c50 2ebce50
1 -> parse_configuration 2e83c50 2e7e9d0
1 -> parse_descriptor 2ebce50 fffffc7fef2591cb
1 <- parse_descriptor 16e 0
1 -> parse_interface 2e83c50 2e74160
1 -> parse_descriptor 2ebce59 fffffc7fef2590e8
1 <- parse_descriptor 16e 0
1 -> parse_endpoint 2e83c50 2ea2ee0
1 -> parse_descriptor 2ebce62 fffffc7fef259086
1 <- parse_descriptor 16e 0
1 <- parse_endpoint 350 7
1 -> parse_endpoint 2e83c50 2ea2f00
1 -> parse_descriptor 2ebce69 fffffc7fef259086
1 <- parse_descriptor 16e 0
1 <- parse_endpoint 350 7
1 <- parse_interface 4d4 17
1 -> parse_interface 2e83c50 2e74170
1 -> parse_descriptor 2ebce70 fffffc7fef2590e8
1 <- parse_descriptor 16e 0
1 -> parse_endpoint 2e83c50 2e741b0
1 -> parse_descriptor 2ebce79 fffffc7fef259086
1 <- parse_descriptor 16e 0
1 <- parse_endpoint 350 7
1 -> parse_endpoint 2e83c50 2e741d0
1 -> parse_descriptor 2ebce80 fffffc7fef259086
1 <- parse_descriptor 16e 0
1 <- parse_endpoint 350 7
1 <- parse_interface 4d4 17
1 -> parse_interface 2e83c50 2e74180
1 -> parse_descriptor 2ebce87 fffffc7fef2590e8
1 <- parse_descriptor 16e 0
1 -> parse_endpoint 2e83c50 2e74200
1 -> parse_descriptor 2ebce90 fffffc7fef259086
1 <- parse_descriptor 16e 0
1 <- parse_endpoint 350 7
1 -> parse_endpoint 2e83c50 2e74220
1 -> parse_descriptor 2ebce97 fffffc7fef259086
1 <- parse_descriptor 16e 0
1 <- parse_endpoint 350 7
1 <- parse_interface 4d4 17
1 -> parse_interface 2e83c50 2e74190
1 -> parse_descriptor 2ebce9e fffffc7fef2590e8
1 <- parse_descriptor 16e 0
1 -> parse_endpoint 2e83c50 2e74250
1 -> parse_descriptor 2ebcea7 fffffc7fef259086
1 <- parse_descriptor 16e 0
1 <- parse_endpoint 350 7
1 -> parse_endpoint 2e83c50 2e74270
1 -> parse_descriptor 2ebceae fffffc7fef259086
1 <- parse_descriptor 16e 0
1 <- parse_endpoint 350 7
1 <- parse_interface 4d4 17
1 <- parse_configuration 443 0
1 <- raw_desc_to_config d7 0
1 <- libusb_get_active_config_descriptor b4 0
1 -> libusb_free_config_descriptor 2e7e9d0 75
1 -> clear_configuration 2e7e9d0 75
1 -> clear_interface 2e74160 75
1 -> clear_endpoint 2ea2ee0 75
1 <- clear_endpoint 1e 0
1 -> clear_endpoint 2ea2f00 75
1 <- clear_endpoint 1e 0
1 <- clear_interface df 2e74160
1 -> clear_interface 2e74170 38
1 -> clear_endpoint 2e741b0 38
1 <- clear_endpoint 1e 0
1 -> clear_endpoint 2e741d0 38
1 <- clear_endpoint 1e 0
1 <- clear_interface df 2e74170
1 -> clear_interface 2e74180 38
1 -> clear_endpoint 2e74200 38
1 <- clear_endpoint 1e 0
1 -> clear_endpoint 2e74220 38
1 <- clear_endpoint 1e 0
1 <- clear_interface df 2e74180
1 -> clear_interface 2e74190 38
1 -> clear_endpoint 2e74250 38
1 <- clear_endpoint 1e 0
1 -> clear_endpoint 2e74270 38
1 <- clear_endpoint 1e 0
1 <- clear_interface df 2e74190
1 <- clear_configuration 73 0
1 <- libusb_free_config_descriptor 2f 2e7e9c0
1 <- sunos_find_interface 12f fffffffe
1 -> usbi_log 0 4
1 -> log_v 0 4
1 -> usbi_get_context 0 4
1 <- usbi_get_context 1d 2e83e10
1 <- log_v 354 0
1 <- usbi_log b4 0
1 <- sunos_check_device_and_status_open 643 d
1 -> _errno_to_libusb d 4
1 -> usbi_log 0 4
1 -> log_v 0 4
1 -> usbi_get_context 0 4
1 <- usbi_get_context 1d 2e83e10
1 <- log_v 354 0
1 <- usbi_log b4 0
1 <- _errno_to_libusb 9f fffffffd
1 <- sunos_submit_transfer 1cc fffffffd
1 -> remove_from_flying_list 2ebde90 0
1 -> arm_timer_for_next_timeout 2e83c50 0
1 -> usbi_using_timer 2e83c50 0
1 -> usbi_timer_valid 2e83c64 0
1 <- usbi_timer_valid 17 1
1 <- usbi_using_timer 1d 1
1 -> usbi_log 0 4
1 -> log_v 0 4
1 -> usbi_get_context 0 4
1 <- usbi_get_context 1d 2e83e10
1 <- log_v 354 0
1 <- usbi_log b4 0
1 -> usbi_disarm_timer 2e83c64 4
1 <- usbi_disarm_timer 8a 0
1 <- arm_timer_for_next_timeout 11f 0
1 <- remove_from_flying_list b5 0
1 <- libusb_submit_transfer 18b fffffffd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment