linux/tools/testing/selftests/bpf/prog_tests
Delyan Kratunov cb3f4a4a46 selftests/bpf: add tests for sleepable (uk)probes
Add tests that ensure sleepable uprobe programs work correctly.
Add tests that ensure sleepable kprobe programs cannot attach.

Also add tests that attach both sleepable and non-sleepable
uprobe programs to the same location (i.e. same bpf_prog_array).

Acked-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Delyan Kratunov <delyank@fb.com>
Link: https://lore.kernel.org/r/c744e5bb7a5c0703f05444dc41f2522ba3579a48.1655248076.git.delyank@fb.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2022-06-16 19:27:30 -07:00
..
.gitignore
align.c bpf: Small BPF verifier log improvements 2022-03-03 16:54:10 +01:00
arg_parsing.c selftests/bpf: Improve by-name subtest selection logic in prog_tests 2022-04-10 20:08:20 -07:00
atomic_bounds.c
atomics.c bpf, selftests: Use raw_tp program for atomic test 2022-02-28 16:28:40 +01:00
attach_probe.c selftests/bpf: add tests for sleepable (uk)probes 2022-06-16 19:27:30 -07:00
autoload.c
bind_perm.c bpf: selftests: Remove libcap usage from test_progs 2022-03-16 15:07:49 -07:00
bloom_filter_map.c selftests/bpf: Migrate selftests to bpf_map_create() 2021-11-25 23:37:38 +01:00
bpf_cookie.c selftest/bpf: The test cases of BPF cookie for fentry/fexit/fmod_ret/lsm. 2022-05-10 21:58:40 -07:00
bpf_iter.c selftests/bpf: Add bpf link iter test 2022-05-10 11:20:45 -07:00
bpf_iter_setsockopt.c selfetest/bpf: Make some tests serial 2021-10-08 15:17:00 -07:00
bpf_iter_setsockopt_unix.c selftest/bpf: Test batching and bpf_(get|set)sockopt in bpf unix iter. 2022-01-18 15:45:06 -08:00
bpf_loop.c selftests/bpf: Add bpf_loop test 2021-11-30 10:56:28 -08:00
bpf_mod_race.c selftests/bpf: Refactor prog_tests logging and test execution 2022-04-18 21:22:13 -07:00
bpf_nf.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
bpf_obj_id.c selftests/bpf: Stop using bpf_object__find_program_by_title API. 2021-12-14 14:38:05 -08:00
bpf_tcp_ca.c selftests/bpf: Drop duplicate max/min definitions 2022-04-11 17:18:09 +02:00
bpf_verif_scale.c selftests/bpf: Remove all the uses of deprecated bpf_prog_load_xattr() 2021-12-02 15:23:40 -08:00
btf.c selftests/bpf: Test BTF_KIND_ENUM64 for deduplication 2022-06-07 10:20:44 -07:00
btf_dedup_split.c selftests/bpf: Fix a compilation warning 2021-12-08 23:05:26 -08:00
btf_dump.c selftests/bpf: Update btf_dump case for conflicting names 2022-03-01 13:41:48 +01:00
btf_endian.c selftests/bpf: Use __BYTE_ORDER__ 2021-10-25 20:39:42 -07:00
btf_map_in_map.c
btf_module.c
btf_skc_cls_ingress.c bpf, selftests: Fix racing issue in btf_skc_cls_ingress test 2021-12-16 21:41:18 +01:00
btf_split.c selftests/bpf: Update btf_dump__new() uses to v1.0+ variant 2021-11-11 16:54:06 -08:00
btf_tag.c selftests/bpf: Add a test for btf_type_tag "percpu" 2022-03-05 18:39:51 -08:00
btf_write.c selftests/bpf: Test new enum kflag and enum64 API functions 2022-06-07 10:20:43 -07:00
cg_storage_multi.c selfetest/bpf: Make some tests serial 2021-10-08 15:17:00 -07:00
cgroup_attach_autodetach.c selftests/bpf: Clean up array_size.cocci warnings 2022-03-15 17:03:10 +01:00
cgroup_attach_multi.c selftests/bpf: Clean up array_size.cocci warnings 2022-03-15 17:03:10 +01:00
cgroup_attach_override.c selftests/bpf: Clean up array_size.cocci warnings 2022-03-15 17:03:10 +01:00
cgroup_getset_retval.c selftests/bpf: Test bpf_{get,set}_retval behavior with cgroup/sockopt 2022-01-19 12:51:30 -08:00
cgroup_link.c selfetest/bpf: Make some tests serial 2021-10-08 15:17:00 -07:00
cgroup_skb_sk_lookup.c
cgroup_v1v2.c selftests/bpf: Make cgroup_v1v2 use its own port 2021-10-08 15:10:43 -07:00
check_mtu.c selftests/bpf: Migrate from bpf_prog_test_run_xattr 2022-02-02 22:31:18 -08:00
cls_redirect.c selftests/bpf: Migrate from bpf_prog_test_run_xattr 2022-02-02 22:31:18 -08:00
connect_force_port.c selftests/bpf: Stop using bpf_object__find_program_by_title API. 2021-12-14 14:38:05 -08:00
core_autosize.c selftests/bpf: Convert some selftests to high-level BPF map APIs 2022-05-13 15:15:21 +02:00
core_extern.c
core_kern.c selftests/bpf: Test bpf_core_types_are_compat() functionality. 2022-02-04 11:29:01 -08:00
core_kern_overflow.c selftests/bpf: Test bpf_core_types_are_compat() functionality. 2022-02-04 11:29:01 -08:00
core_read_macros.c
core_reloc.c selftests/bpf: Avoid skipping certain subtests 2022-06-14 16:18:29 -07:00
core_retro.c selftests/bpf: Convert some selftests to high-level BPF map APIs 2022-05-13 15:15:21 +02:00
cpu_mask.c
custom_sec_handlers.c selftests/bpf: Add custom SEC() handling selftest 2022-03-05 09:38:15 -08:00
d_path.c bpf, selftests: Add ringbuf memory type confusion test 2022-01-19 01:27:03 +01:00
dummy_st_ops.c bpf: selftests: Test fentry tracing a struct_ops program 2022-03-30 19:31:30 -07:00
dynptr.c selftests/bpf: Dynptr tests 2022-05-23 14:31:29 -07:00
enable_stats.c
endian.c
exhandler.c selftests/bpf: Add exception handling selftests for tp_bpf program 2021-11-08 22:17:55 +01:00
fentry_fexit.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
fentry_test.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
fexit_bpf2bpf.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
fexit_sleep.c selftests/bpf: Add weak/typeless ksym test for light skeleton 2021-10-28 16:30:07 -07:00
fexit_stress.c selftests/bpf: Fix test_run logic in fexit_stress.c 2022-06-02 16:26:40 -07:00
fexit_test.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
find_vma.c Improve stability of find_vma BPF test 2022-03-08 17:39:29 -08:00
flow_dissector.c selftests/bpf: Migrate from bpf_prog_test_run_xattr 2022-02-02 22:31:18 -08:00
flow_dissector_load_bytes.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
flow_dissector_reattach.c selftests/bpf: Use explicit bpf_test_load_program() helper calls 2021-11-07 08:34:24 -08:00
for_each.c selftests/bpf: Convert some selftests to high-level BPF map APIs 2022-05-13 15:15:21 +02:00
get_branch_snapshot.c selftests/bpf: Guess function end for test_get_branch_snapshot 2021-10-25 21:43:05 -07:00
get_func_args_test.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
get_func_ip_test.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
get_stack_raw_tp.c selftests/bpf: Fix clang compilation errors 2022-03-28 20:00:11 -07:00
get_stackid_cannot_attach.c selftests/bpf: use preferred setter/getter APIs instead of deprecated ones 2022-01-25 17:59:07 -08:00
global_data.c selftests/bpf: Clean up array_size.cocci warnings 2022-03-15 17:03:10 +01:00
global_data_init.c selftests/bpf: Stop using bpf_map__def() API 2022-01-12 17:01:38 -08:00
global_func_args.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
hash_large_key.c
hashmap.c
helper_restricted.c selftests/bpf: Use non-autoloaded programs in few tests 2022-04-19 13:48:20 -07:00
kfree_skb.c selftests/bpf: Migrate from bpf_prog_test_run_xattr 2022-02-02 22:31:18 -08:00
kfunc_call.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
kprobe_multi_test.c selftests/bpf: fix a few clang compilation errors 2022-05-11 12:58:12 -07:00
ksyms.c
ksyms_btf.c selftests/bpf: Test passing rdonly mem to global func 2022-04-06 10:32:12 -07:00
ksyms_module.c selftests/bpf: Do not export subtest as standalone test 2022-02-08 21:17:34 +01:00
l4lb_all.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
legacy_printk.c selftests/bpf: Mix legacy (maps) and modern (vars) BPF in one test 2021-11-25 23:05:23 +01:00
libbpf_probes.c selftests/bpf: Add libbpf feature-probing API selftests 2021-12-17 23:11:13 +01:00
libbpf_str.c selftests/bpf: Add test for libbpf_bpf_link_type_str 2022-06-02 16:26:36 -07:00
link_pinning.c
linked_funcs.c selftests/bpf: Add CO-RE relos and SEC("?...") to linked_funcs selftests 2022-04-26 15:41:46 -07:00
linked_maps.c
linked_vars.c
load_bytes_relative.c selftests/bpf: Use explicit bpf_prog_test_load() calls everywhere 2021-11-07 08:34:23 -08:00
log_buf.c bpf: Small BPF verifier log improvements 2022-03-03 16:54:10 +01:00
log_fixup.c selftests/bpf: Test bpf_map__set_autocreate() and related log fixup logic 2022-04-28 20:03:29 -07:00
lookup_and_delete.c selftests/bpf: Convert some selftests to high-level BPF map APIs 2022-05-13 15:15:21 +02:00
map_init.c
map_kptr.c selftests/bpf: Convert some selftests to high-level BPF map APIs 2022-05-13 15:15:21 +02:00
map_lock.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
map_lookup_percpu_elem.c selftests/bpf: Fix some bugs in map_lookup_percpu_elem testcase 2022-05-20 15:07:41 -07:00
map_ptr.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
metadata.c
migrate_reuseport.c selftests/bpf: Destroy XDP link correctly 2021-11-07 09:14:15 -08:00
mmap.c
modify_return.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
module_attach.c bpf/selftests: Add test for writable bare tracepoint 2021-10-08 13:22:57 -07:00
mptcp.c selftests/bpf: Verify first of struct mptcp_sock 2022-05-20 15:36:48 -07:00
netcnt.c selftests/bpf: Use bpf_num_possible_cpus() in per-cpu map allocations 2022-04-06 10:15:53 -07:00
netns_cookie.c
ns_current_pid_tgid.c selfetest/bpf: Make some tests serial 2021-10-08 15:17:00 -07:00
obj_name.c selftests/bpf: Clean up array_size.cocci warnings 2022-03-15 17:03:10 +01:00
pe_preserve_elems.c
perf_branches.c Improve perf related BPF tests (sample_freq issue) 2022-03-08 17:39:28 -08:00
perf_buffer.c selftests/bpf: Migrate all deprecated perf_buffer uses 2021-11-11 16:54:05 -08:00
perf_event_stackmap.c
perf_link.c Improve perf related BPF tests (sample_freq issue) 2022-03-08 17:39:28 -08:00
pinning.c selftests/bpf: Migrate selftests to bpf_map_create() 2021-11-25 23:37:38 +01:00
pkt_access.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
pkt_md_access.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
probe_read_user_str.c
probe_user.c selfetest/bpf: Make some tests serial 2021-10-08 15:17:00 -07:00
prog_array_init.c selftests/bpf: Test BPF_MAP_TYPE_PROG_ARRAY static initialization 2021-11-28 22:24:57 -08:00
prog_run_opts.c selftests/bpf: Migrate from bpf_prog_test_run_xattr 2022-02-02 22:31:18 -08:00
prog_tests_framework.c selftests/bpf: Refactor prog_tests logging and test execution 2022-04-18 21:22:13 -07:00
queue_stack_map.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
raw_tp_test_run.c selftests/bpf: Migrate from bpf_prog_test_run_xattr 2022-02-02 22:31:18 -08:00
raw_tp_writable_reject_nbd_invalid.c selftests/bpf: Convert legacy prog load APIs to bpf_prog_load() 2021-11-07 08:34:23 -08:00
raw_tp_writable_test_run.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
rdonly_maps.c selftests/bpf: Switch to ".bss"/".rodata"/".data" lookups for internal maps 2021-10-21 17:10:11 -07:00
recursion.c selftest/bpf: Switch recursion test to use htab_map_delete_elem 2021-10-06 12:34:02 -07:00
reference_tracking.c selftests/bpf: Use non-autoloaded programs in few tests 2022-04-19 13:48:20 -07:00
resolve_btfids.c selftests/bpf: Normalize selftest entry points 2021-10-25 14:45:45 -07:00
ringbuf.c selftests/bpf: Add weak/typeless ksym test for light skeleton 2021-10-28 16:30:07 -07:00
ringbuf_multi.c selftests/bpf: Test libbpf's ringbuf size fix up logic 2022-05-09 17:15:32 +02:00
section_names.c
select_reuseport.c selftests/bpf: Remove explicit setrlimit(RLIMIT_MEMLOCK) in main selftests 2021-12-14 22:16:54 +01:00
send_signal.c selftests/bpf: Fix a clang compilation error for send_signal.c 2022-03-11 22:18:13 +01:00
send_signal_sched_switch.c selfetest/bpf: Make some tests serial 2021-10-08 15:17:00 -07:00
signal_pending.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
sk_assign.c selftests/bpf: Switch SEC("classifier*") usage to a strict SEC("tc") 2021-09-28 13:51:19 -07:00
sk_lookup.c selftests/bpf: Remove explicit setrlimit(RLIMIT_MEMLOCK) in main selftests 2021-12-14 22:16:54 +01:00
sk_storage_tracing.c selfetest/bpf: Make some tests serial 2021-10-08 15:17:00 -07:00
skb_ctx.c selftests/bpf: Migrate from bpf_prog_test_run_xattr 2022-02-02 22:31:18 -08:00
skb_helpers.c selftests/bpf: Migrate from bpf_prog_test_run_xattr 2022-02-02 22:31:18 -08:00
skb_load_bytes.c selftests/bpf: Add test for skb_load_bytes 2022-04-20 23:48:34 +02:00
skc_to_unix_sock.c selftests/bpf: Test bpf_skc_to_unix_sock() helper 2021-10-21 15:11:06 -07:00
skeleton.c selftests/bpf: Demonstrate use of custom .rodata/.data sections 2021-10-21 17:10:10 -07:00
snprintf.c selftests/bpf: Drop duplicate max/min definitions 2022-04-11 17:18:09 +02:00
snprintf_btf.c selfetest/bpf: Make some tests serial 2021-10-08 15:17:00 -07:00
sock_fields.c selftests/bpf: Extend verifier and bpf_sock tests for dst_port loads 2022-01-31 12:39:12 -08:00
socket_cookie.c
sockmap_basic.c selftests/bpf: Migrate from bpf_prog_test_run_xattr 2022-02-02 22:31:18 -08:00
sockmap_ktls.c selftests/bpf: Migrate selftests to bpf_map_create() 2021-11-25 23:37:38 +01:00
sockmap_listen.c selftests/bpf: Stop using bpf_map__def() API 2022-01-12 17:01:38 -08:00
sockopt.c selftests/bpf: Convert legacy prog load APIs to bpf_prog_load() 2021-11-07 08:34:23 -08:00
sockopt_inherit.c selftests/bpf: Stop using bpf_object__find_program_by_title API. 2021-12-14 14:38:05 -08:00
sockopt_multi.c selftests/bpf: Remove all the uses of deprecated bpf_prog_load_xattr() 2021-12-02 15:23:40 -08:00
sockopt_qos_to_cc.c
sockopt_sk.c selftests/bpf: Update sockopt_sk test to the use bpf_set_retval 2022-01-19 13:05:13 -08:00
spinlock.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
stack_var_off.c
stacktrace_build_id.c selftests/bpf: Convert some selftests to high-level BPF map APIs 2022-05-13 15:15:21 +02:00
stacktrace_build_id_nmi.c selftests/bpf: Convert some selftests to high-level BPF map APIs 2022-05-13 15:15:21 +02:00
stacktrace_map.c selftests/bpf: Stop using bpf_object__find_program_by_title API. 2021-12-14 14:38:05 -08:00
stacktrace_map_raw_tp.c selftests/bpf: Stop using bpf_object__find_program_by_title API. 2021-12-14 14:38:05 -08:00
stacktrace_map_skip.c selftests/bpf: Test skipping stacktrace 2022-03-20 19:16:50 -07:00
static_linked.c
subprogs.c selftests/bpf: Test subprog jit when toggle bpf_jit_harden repeatedly 2022-03-16 15:13:36 -07:00
subskeleton.c selftests/bpf: Test subskeleton functionality 2022-03-17 23:12:48 -07:00
syscall.c selftests/bpf: Migrate from bpf_prog_test_run_xattr 2022-02-02 22:31:18 -08:00
tailcalls.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
task_fd_query_rawtp.c selftests/bpf: Use explicit bpf_prog_test_load() calls everywhere 2021-11-07 08:34:23 -08:00
task_fd_query_tp.c selftests/bpf: Use explicit bpf_prog_test_load() calls everywhere 2021-11-07 08:34:23 -08:00
task_local_storage.c
task_pt_regs.c selftests/bpf: fix uprobe offset calculation in selftests 2022-01-26 20:04:01 -08:00
tc_bpf.c
tc_redirect.c selftests/bpf: Fix tc_redirect_dtime 2022-06-03 14:53:33 -07:00
tcp_estats.c selftests/bpf: Use explicit bpf_prog_test_load() calls everywhere 2021-11-07 08:34:23 -08:00
tcp_hdr_options.c
tcp_rtt.c selftests/bpf: Remove all the uses of deprecated bpf_prog_load_xattr() 2021-12-02 15:23:40 -08:00
tcpbpf_user.c
test_bpf_syscall_macro.c selftests/bpf: Test BPF_KPROBE_SYSCALL macro 2022-02-08 21:45:06 -08:00
test_bpffs.c selftests/bpf: Prevent out-of-bounds stack access in test_bpffs 2021-11-26 00:15:03 +01:00
test_bprm_opts.c
test_global_funcs.c selftests/bpf: Test passing rdonly mem to global func 2022-04-06 10:32:12 -07:00
test_ima.c selftests/bpf: Check that bpf_kernel_read_file() denies reading IMA policy 2022-03-10 18:57:55 -08:00
test_local_storage.c bpf/selftests: Update local storage selftest for sleepable programs 2021-12-29 17:54:40 -08:00
test_lsm.c
test_overhead.c selftests/bpf: Stop using bpf_object__find_program_by_title API. 2021-12-14 14:38:05 -08:00
test_profiler.c selftests/bpf: Migrate from bpf_prog_test_run_xattr 2022-02-02 22:31:18 -08:00
test_skb_pkt_end.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
test_strncmp.c selftests/bpf: Use non-autoloaded programs in few tests 2022-04-19 13:48:20 -07:00
test_tunnel.c selftests/bpf: fix a few clang compilation errors 2022-05-11 12:58:12 -07:00
timer.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
timer_crash.c selftests/bpf: Add test for bpf_timer overwriting crash 2022-02-11 13:13:04 -08:00
timer_mim.c selftests/bpf: Convert some selftests to high-level BPF map APIs 2022-05-13 15:15:21 +02:00
tp_attach_query.c selftests/bpf: Use explicit bpf_prog_test_load() calls everywhere 2021-11-07 08:34:23 -08:00
trace_ext.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
trace_printk.c selftests/bpf: Add weak/typeless ksym test for light skeleton 2021-10-28 16:30:07 -07:00
trace_vprintk.c selftests/bpf: Add weak/typeless ksym test for light skeleton 2021-10-28 16:30:07 -07:00
trampoline_count.c selftests/bpf: Add missing trampoline program type to trampoline_count test 2022-05-20 16:12:14 -07:00
udp_limit.c
unpriv_bpf_disabled.c selftests/bpf: Fix spelling mistake: "unpriviliged" -> "unprivileged" 2022-05-23 21:59:57 +02:00
uprobe_autoattach.c selftests/bpf: Fix prog_tests uprobe_autoattach compilation error 2022-04-21 18:48:04 +02:00
usdt.c selftests/bpf: Fix usdt_400 test case 2022-05-13 22:07:48 +02:00
varlen.c
verif_stats.c selftests/bpf: Add weak/typeless ksym test for light skeleton 2021-10-28 16:30:07 -07:00
vmlinux.c
xdp.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
xdp_adjust_frags.c selftest/bpf: Check invalid length in test_xdp_update_frags 2022-02-10 17:48:30 -08:00
xdp_adjust_tail.c selftests/bpf: Do not export subtest as standalone test 2022-02-08 21:17:34 +01:00
xdp_attach.c selftests/bpf: Redo the switch to new libbpf XDP APIs 2022-02-03 16:32:25 +01:00
xdp_bonding.c selftests/bpf: Fix misaligned memory accesses in xdp_bonding test 2021-11-26 00:15:03 +01:00
xdp_bpf2bpf.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
xdp_context_test_run.c
xdp_cpumap_attach.c selftests/bpf: Do not export subtest as standalone test 2022-02-08 21:17:34 +01:00
xdp_devmap_attach.c selftests/bpf: Do not export subtest as standalone test 2022-02-08 21:17:34 +01:00
xdp_do_redirect.c selftests/bpf: Add a test for maximum packet size in xdp_do_redirect 2022-03-11 22:01:26 +01:00
xdp_info.c selftests/bpf: Redo the switch to new libbpf XDP APIs 2022-02-03 16:32:25 +01:00
xdp_link.c selftests/bpf: Redo the switch to new libbpf XDP APIs 2022-02-03 16:32:25 +01:00
xdp_noinline.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
xdp_perf.c selftests/bpf: Migrate from bpf_prog_test_run 2022-02-02 22:31:18 -08:00
xdpwall.c bpf: selftest: A bpf prog that has a 32bit scalar spill 2021-09-26 13:07:28 -07:00