├── .github ├── pull_request_template.md ├── scripts │ ├── clear-dump.sh │ ├── download-dump-from-s3.sh │ ├── install-drgn.sh │ └── install-libkdumpfile.sh └── workflows │ └── main.yml ├── .gitignore ├── .whitesource ├── LICENSE ├── README.md ├── debian ├── compat ├── control ├── copyright └── rules ├── sdb ├── __init__.py ├── command.py ├── commands │ ├── __init__.py │ ├── array.py │ ├── container_of.py │ ├── count.py │ ├── echo.py │ ├── exit.py │ ├── filter.py │ ├── head.py │ ├── help.py │ ├── history.py │ ├── internal │ │ ├── __init__.py │ │ ├── fmt.py │ │ ├── p2.py │ │ ├── table.py │ │ └── util.py │ ├── linux │ │ ├── __init__.py │ │ ├── dmesg.py │ │ ├── internal │ │ │ ├── __init__.py │ │ │ └── slub_helpers.py │ │ ├── linked_lists.py │ │ ├── per_cpu.py │ │ ├── process.py │ │ ├── slabs.py │ │ ├── stacks.py │ │ ├── threads.py │ │ ├── tree.py │ │ ├── vfs.py │ │ └── whatis.py │ ├── member.py │ ├── pretty_print.py │ ├── print.py │ ├── ptype.py │ ├── pyfilter.py │ ├── sizeof.py │ ├── spl │ │ ├── __init__.py │ │ ├── avl.py │ │ ├── internal │ │ │ ├── __init__.py │ │ │ └── kmem_helpers.py │ │ ├── multilist.py │ │ ├── spl_kmem_caches.py │ │ └── spl_list.py │ ├── sum.py │ ├── tail.py │ ├── type.py │ ├── ustacks.py │ ├── uthreads.py │ └── zfs │ │ ├── __init__.py │ │ ├── arc.py │ │ ├── blkptr.py │ │ ├── btree.py │ │ ├── dbuf.py │ │ ├── histograms.py │ │ ├── internal │ │ └── __init__.py │ │ ├── metaslab.py │ │ ├── range_tree.py │ │ ├── spa.py │ │ ├── vdev.py │ │ ├── zfs_dbgmsg.py │ │ └── zio.py ├── error.py ├── internal │ ├── __init__.py │ ├── cli.py │ └── repl.py ├── parser.py ├── pipeline.py └── target.py ├── setup.py └── tests ├── __init__.py ├── integration ├── __init__.py ├── data │ └── regression_output │ │ ├── dump.201912060006 │ │ ├── core │ │ │ ├── addr bogus │ │ │ ├── addr fget | deref │ │ │ ├── addr jiffies | deref │ │ │ ├── addr jiffies | deref | deref │ │ │ ├── addr spa_namespace_avl │ │ │ ├── addr spa_namespace_avl zfs_dbgmsgs | print -d │ │ │ ├── addr spa_namespace_avl | deref │ │ │ ├── addr spa_namespace_avl | deref | addr │ │ │ ├── addr spa_namespace_avl | deref | print │ │ │ ├── addr spa_namespace_avl | member avl_root->avl_child[0]->avl_child │ │ │ ├── addr spa_namespace_avl | member avl_root->avl_child[1 │ │ │ ├── addr spa_namespace_avl | member avl_root->avl_child[3] │ │ │ ├── addr spa_namespace_avl | member avl_root->avl_child[a] │ │ │ ├── addr spa_namespace_avl | member avl_root.avl_child[0].avl_child │ │ │ ├── addr spa_namespace_avl | member avl_root.avl_pcb avl_size │ │ │ ├── addr spa_namespace_avl | print │ │ │ ├── addr spa_namespace_avl | print --RAW │ │ │ ├── addr spa_namespace_avl | print -d │ │ │ ├── addr spa_namespace_avl | print -n │ │ │ ├── addr spa_namespace_avl | print -nr │ │ │ ├── addr spa_namespace_avl | print -r │ │ │ ├── echo 0x0 0x1 0x2 | filter 'obj < 1' │ │ │ ├── echo 0x0 0x1 0x2 | filter 'obj <= 1' │ │ │ ├── echo 0x0 0x1 0x2 | filter 'obj == 1' │ │ │ ├── echo 0x0 0x1 0x2 | filter 'obj > 1' │ │ │ ├── echo 0x0 0x1 0x2 | filter 'obj >= 1' │ │ │ ├── echo 0x0 | addr spa_namespace_avl | echo 0x1 | cast avl_tree_t * | member avl_root │ │ │ ├── echo 0x0 | cast int * | array 1 │ │ │ ├── echo 0x0 | cast int * | deref │ │ │ ├── echo 0x0 | cast spa_t * | member spa_name │ │ │ ├── echo 0x0 | cast void * | array 1 │ │ │ ├── echo 0x0 | filter 'obj == 0' │ │ │ ├── echo 0x0 | filter 'obj == 1' │ │ │ ├── echo 0x1 | filter 'obj == obj' │ │ │ ├── echo 0x10 | cast int * | deref │ │ │ ├── echo 0x1234 | cast dmu_recv_cookie_t * | member drc_os │ │ │ ├── echo 0xffff90cc11b28000 | deref │ │ │ ├── echo 1 | echo 2 | sum │ │ │ ├── echo 1234 | cast int | array │ │ │ ├── filter 'obj == 1' │ │ │ ├── member no_object │ │ │ ├── ptype $abc │ │ │ ├── ptype 'a b c' │ │ │ ├── ptype 'bogus union' │ │ │ ├── ptype 'struct bogus' │ │ │ ├── ptype 'struct spa' │ │ │ ├── ptype 'struct union' │ │ │ ├── ptype 'struct' │ │ │ ├── ptype 'union struct struct' │ │ │ ├── ptype 2abc │ │ │ ├── ptype @ │ │ │ ├── ptype bogus_t │ │ │ ├── ptype spa vdev │ │ │ ├── ptype spa_t │ │ │ ├── ptype struct spa │ │ │ ├── ptype thread_union │ │ │ ├── ptype zfs_case │ │ │ ├── sizeof bogus │ │ │ ├── sizeof size_t │ │ │ ├── sizeof spa vdev │ │ │ ├── sizeof struct spa │ │ │ ├── sizeof task_struct │ │ │ ├── spa rpool | filter 'obj.bogus == 1624' │ │ │ ├── spa rpool | filter 'obj.spa_syncing_txg < 1624' | member spa_name │ │ │ ├── spa rpool | filter 'obj.spa_syncing_txg <= 1624' | member spa_name │ │ │ ├── spa rpool | filter 'obj.spa_syncing_txg == 1624' | member spa_name │ │ │ ├── spa rpool | filter 'obj.spa_syncing_txg > 1624' | member spa_name │ │ │ ├── spa rpool | filter 'obj.spa_syncing_txg >= 1624' | member spa_name │ │ │ ├── spa rpool | filter 'obj.spa_syncing_txg bogus_op 1624' │ │ │ ├── spa | deref | sum │ │ │ ├── spa | head 1 | deref | print --RAW -s │ │ │ ├── spa | head 1 | deref | print -rs │ │ │ ├── spa | head 1 | member spa_name[1] | print │ │ │ ├── spa | head 1 | member spa_name[1] | print -c │ │ │ ├── spa | head 1 | member spa_name[1] | print -cr │ │ │ ├── spa | head 1 | member spa_zio_taskq[0][0].stqs_taskq │ │ │ ├── spa | head 1 | member spa_zio_taskq[0][0].stqs_taskq[0] │ │ │ ├── spa | member spa_ubsync->ub_rootbp │ │ │ ├── spa | member spa_ubsync.bogus │ │ │ ├── spa | member spa_ubsync.ub_rootbp.blk_dva[0].dva_word │ │ │ ├── spa | member spa_zio_taskq[0][0].stqs_taskq | array │ │ │ ├── spa | member spa_zio_taskq[0][0].stqs_taskq | array 2 │ │ │ ├── spa | member spa_zio_taskq[0][0].stqs_taskq-> │ │ │ ├── spa | member spa_zio_taskq[0][0].stqs_taskq. │ │ │ ├── spa | range_tree │ │ │ ├── spa | vdev | metaslab | deref | sizeof | sum │ │ │ ├── sum │ │ │ ├── thread | filter "obj.comm == \"bogus\"" | thread │ │ │ ├── threads | deref | sizeof | sum │ │ │ ├── threads | sizeof | sum │ │ │ ├── zfs_dbgmsg | filter '== obj' │ │ │ ├── zfs_dbgmsg | filter 'obj ==' │ │ │ ├── zfs_dbgmsg | filter 'obj' │ │ │ ├── zfs_dbgmsg | head 1 | member zdm_msg | array │ │ │ ├── zfs_dbgmsg | head 1 | member zdm_msg | array -1 │ │ │ ├── zfs_dbgmsg | head 1 | member zdm_msg | array 0 │ │ │ ├── zfs_dbgmsg | head 1 | member zdm_msg | array 2 │ │ │ └── zfs_dbgmsg | head 1 | member zdm_msg[2] │ │ ├── linux │ │ │ ├── addr init_task | member comm | addr | container_of bogus_type comm | cast void * │ │ │ ├── addr init_task | member comm | addr | container_of int comm | cast void * │ │ │ ├── addr init_task | member comm | addr | container_of pid comm | cast void * │ │ │ ├── addr init_task | member comm | addr | container_of task_struct bogus_member | cast void * │ │ │ ├── addr init_task | member comm | addr | container_of task_struct comm | cast void * │ │ │ ├── addr init_task | member comm | container_of task_struct comm | cast void * │ │ │ ├── addr init_task | member thread_pid.tasks[3] | lxhlist bogus_type pid_links[3] | member comm │ │ │ ├── addr init_task | member thread_pid.tasks[3] | lxhlist task_struct bogus_member | member comm │ │ │ ├── addr init_task | member thread_pid.tasks[3] | lxhlist task_struct pid_links[3] | member comm │ │ │ ├── addr modules | lxlist bogus_type list | member name │ │ │ ├── addr modules | lxlist module bogus_member | member name │ │ │ ├── addr modules | lxlist module list | member name │ │ │ ├── addr spa_namespace_avl | cpu_counter_sum │ │ │ ├── addr tcp_orphan_count | cpu_counter_sum │ │ │ ├── addr tcp_sockets_allocated | cpu_counter_sum │ │ │ ├── addr vm_committed_as | cpu_counter_sum │ │ │ ├── addr vmap_area_root | rbtree bogus_type rb_node │ │ │ ├── addr vmap_area_root | rbtree vmap_area bogus_member │ │ │ ├── addr vmap_area_root | rbtree vmap_area rb_node │ │ │ ├── crashed_thread │ │ │ ├── crashed_thread | stacks │ │ │ ├── dbuf |head 1 |deref |member db_buf |whatis │ │ │ ├── dmesg │ │ │ ├── dmesg -l 3 │ │ │ ├── echo 0x0 | cpu_counter_sum │ │ │ ├── echo 0xffffa089669edc00 | stack │ │ │ ├── find_task 1 │ │ │ ├── find_task 1 2 │ │ │ ├── find_task 1 2 | member comm │ │ │ ├── find_task 1 | fget 1 4 │ │ │ ├── find_task 1 | fget 1 4 123123 │ │ │ ├── pid 1 │ │ │ ├── pid 1 10 12437 │ │ │ ├── slabs │ │ │ ├── slabs -o bogus │ │ │ ├── slabs -s active_objs -o active_objs,util,name │ │ │ ├── slabs -s active_objs -o util │ │ │ ├── slabs -s bogus │ │ │ ├── slabs -s util │ │ │ ├── slabs -s util | slabs │ │ │ ├── slabs -v │ │ │ ├── slabs | filter 'obj.name == "UNIX"' | slub_cache | count │ │ │ ├── slabs | filter 'obj.name == "dnode_t"' |walk | head 6056 | tail 1| cast dnode_t * | deref |member dn_phys |member dn_blkptr[0] |blkptr │ │ │ ├── slabs | filter 'obj.name == "dnode_t"' |walk | tail 8 | head 1 | cast dnode_t * | deref |member dn_phys |member dn_blkptr[0] |blkptr │ │ │ ├── slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu │ │ │ ├── slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 0 │ │ │ ├── slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 0 1 │ │ │ ├── slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 0 2 1 │ │ │ ├── slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 1 │ │ │ ├── slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 100 │ │ │ ├── slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 2 │ │ │ ├── slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 3 │ │ │ ├── slabs | filter 'obj.name == "zio_cache"' | slub_cache │ │ │ ├── slabs | filter 'obj.name == "zio_cache"' | slub_cache | cast zio_t * | member io_spa.spa_name │ │ │ ├── slabs | filter 'obj.name == "zio_cache"' | slub_cache | count │ │ │ ├── slabs | filter 'obj.name == "zio_cache"' | walk │ │ │ ├── slabs | head 2 | slabs │ │ │ ├── slabs | pp │ │ │ ├── stacks │ │ │ ├── stacks -a │ │ │ ├── stacks -c bogus │ │ │ ├── stacks -c spa_sync │ │ │ ├── stacks -m bogus │ │ │ ├── stacks -m bogus | count │ │ │ ├── stacks -m zfs │ │ │ ├── stacks -m zfs -c spa_sync │ │ │ ├── stacks -m zfs -c zthr_procedure │ │ │ ├── stacks -m zfs | count │ │ │ ├── stacks -t bogus │ │ │ ├── thread │ │ │ ├── threads │ │ │ ├── threads | count │ │ │ ├── threads | filter 'obj.comm == "java"' | stack │ │ │ ├── threads | filter 'obj.comm == "java"' | threads │ │ │ ├── whatis 0xf987kkbbh │ │ │ ├── whatis 0xffff │ │ │ ├── whatis 0xffffa0888c766000 0xffffa089407ca870 │ │ │ └── whatis 0xffffa089407ca870 │ │ ├── spl │ │ │ ├── addr arc_mru | member [0].arcs_list[1] | multilist | head │ │ │ ├── addr arc_mru | member [0].arcs_list[1] | walk | head │ │ │ ├── addr spa_namespace_avl | avl │ │ │ ├── addr spa_namespace_avl | walk │ │ │ ├── spa | member spa_config_list | spl_list │ │ │ ├── spa | member spa_config_list | walk │ │ │ ├── spa | member spa_evicting_os_list | spl_list │ │ │ ├── spa | member spa_evicting_os_list | walk │ │ │ ├── spa | member spa_normal_class.mc_metaslab_txg_list | multilist │ │ │ ├── spa | member spa_normal_class.mc_metaslab_txg_list | walk │ │ │ ├── spl_kmem_caches │ │ │ ├── spl_kmem_caches -o name,entry_size -s entry_size │ │ │ ├── spl_kmem_caches -o name,source │ │ │ ├── spl_kmem_caches -s entry_size │ │ │ ├── spl_kmem_caches -s entry_size | head 4 | spl_kmem_caches │ │ │ ├── spl_kmem_caches -v │ │ │ ├── spl_kmem_caches | filter 'obj.skc_linux_cache == 0' | spl_cache │ │ │ ├── spl_kmem_caches | filter 'obj.skc_linux_cache == 0' | spl_cache | cnt │ │ │ ├── spl_kmem_caches | filter 'obj.skc_linux_cache > 0' | filter 'obj.skc_obj_alloc > 0' | head 1 | spl_cache │ │ │ ├── spl_kmem_caches | filter 'obj.skc_name == "ddt_cache"' | walk │ │ │ └── spl_kmem_caches | pp │ │ └── zfs │ │ │ ├── arc │ │ │ ├── dbuf │ │ │ ├── dbuf -l 1 │ │ │ ├── dbuf | dbuf -l 1 │ │ │ ├── dbuf | dbuf -l 1 | head | dbuf │ │ │ ├── dbuf | head 1 | member db_blkptr | blkptr │ │ │ ├── spa │ │ │ ├── spa -H │ │ │ ├── spa -mH │ │ │ ├── spa -v │ │ │ ├── spa -vH │ │ │ ├── spa -vm │ │ │ ├── spa -vmH │ │ │ ├── spa data | member spa_normal_class.mc_histogram | zfs_histogram │ │ │ ├── spa data | vdev | metaslab | filter 'obj.ms_loaded == 1' | head 1 | member ms_allocatable.rt_histogram | zhist │ │ │ ├── spa data | vdev | metaslab | filter 'obj.ms_loaded == 1' | head 1 | member ms_sm.sm_phys.smp_histogram | zhist │ │ │ ├── spa data | vdev | metaslab | filter 'obj.ms_loaded == 1' | head 1 | member ms_sm.sm_phys.smp_histogram | zhist 9 │ │ │ ├── spa rpool │ │ │ ├── spa | head 1 | deref |member spa_uberblock | member ub_rootbp | blkptr │ │ │ ├── spa | head 1 | spa │ │ │ ├── spa | pp │ │ │ ├── spa | vdev │ │ │ ├── spa | vdev | metaslab │ │ │ ├── spa | vdev | metaslab -w │ │ │ ├── spa | vdev | metaslab | member ms_allocatable | range_tree │ │ │ ├── spa | vdev | metaslab | member ms_allocatable.rt_root | zfs_btree │ │ │ ├── spa | vdev | pp │ │ │ ├── zfs_dbgmsg │ │ │ ├── zfs_dbgmsg | tail 5 | zfs_dbgmsg │ │ │ ├── zio │ │ │ └── zio -r │ │ └── dump.202303131823 │ │ ├── core │ │ ├── addr bogus │ │ ├── addr fget | deref │ │ ├── addr jiffies | deref │ │ ├── addr jiffies | deref | deref │ │ ├── addr spa_namespace_avl │ │ ├── addr spa_namespace_avl zfs_dbgmsgs | print -d │ │ ├── addr spa_namespace_avl | deref │ │ ├── addr spa_namespace_avl | deref | addr │ │ ├── addr spa_namespace_avl | deref | print │ │ ├── addr spa_namespace_avl | member avl_root->avl_child[0]->avl_child │ │ ├── addr spa_namespace_avl | member avl_root->avl_child[1 │ │ ├── addr spa_namespace_avl | member avl_root->avl_child[3] │ │ ├── addr spa_namespace_avl | member avl_root->avl_child[a] │ │ ├── addr spa_namespace_avl | member avl_root.avl_child[0].avl_child │ │ ├── addr spa_namespace_avl | member avl_root.avl_pcb avl_size │ │ ├── addr spa_namespace_avl | print │ │ ├── addr spa_namespace_avl | print --RAW │ │ ├── addr spa_namespace_avl | print -d │ │ ├── addr spa_namespace_avl | print -n │ │ ├── addr spa_namespace_avl | print -nr │ │ ├── addr spa_namespace_avl | print -r │ │ ├── echo 0x0 0x1 0x2 | filter 'obj < 1' │ │ ├── echo 0x0 0x1 0x2 | filter 'obj <= 1' │ │ ├── echo 0x0 0x1 0x2 | filter 'obj == 1' │ │ ├── echo 0x0 0x1 0x2 | filter 'obj > 1' │ │ ├── echo 0x0 0x1 0x2 | filter 'obj >= 1' │ │ ├── echo 0x0 | addr spa_namespace_avl | echo 0x1 | cast avl_tree_t * | member avl_root │ │ ├── echo 0x0 | cast int * | array 1 │ │ ├── echo 0x0 | cast int * | deref │ │ ├── echo 0x0 | cast spa_t * | member spa_name │ │ ├── echo 0x0 | cast void * | array 1 │ │ ├── echo 0x0 | filter 'obj == 0' │ │ ├── echo 0x0 | filter 'obj == 1' │ │ ├── echo 0x1 | filter 'obj == obj' │ │ ├── echo 0x10 | cast int * | deref │ │ ├── echo 0x1234 | cast dmu_recv_cookie_t * | member drc_os │ │ ├── echo 0xffff90cc11b28000 | deref │ │ ├── echo 1 | echo 2 | sum │ │ ├── echo 1234 | cast int | array │ │ ├── filter 'obj == 1' │ │ ├── member no_object │ │ ├── ptype $abc │ │ ├── ptype 'a b c' │ │ ├── ptype 'bogus union' │ │ ├── ptype 'struct bogus' │ │ ├── ptype 'struct spa' │ │ ├── ptype 'struct union' │ │ ├── ptype 'struct' │ │ ├── ptype 'union struct struct' │ │ ├── ptype 2abc │ │ ├── ptype @ │ │ ├── ptype bogus_t │ │ ├── ptype spa vdev │ │ ├── ptype spa_t │ │ ├── ptype struct spa │ │ ├── ptype thread_union │ │ ├── ptype zfs_case │ │ ├── sizeof bogus │ │ ├── sizeof size_t │ │ ├── sizeof spa vdev │ │ ├── sizeof struct spa │ │ ├── sizeof task_struct │ │ ├── spa rpool | filter 'obj.bogus == 1624' │ │ ├── spa rpool | filter 'obj.spa_syncing_txg < 1624' | member spa_name │ │ ├── spa rpool | filter 'obj.spa_syncing_txg <= 1624' | member spa_name │ │ ├── spa rpool | filter 'obj.spa_syncing_txg == 1624' | member spa_name │ │ ├── spa rpool | filter 'obj.spa_syncing_txg > 1624' | member spa_name │ │ ├── spa rpool | filter 'obj.spa_syncing_txg >= 1624' | member spa_name │ │ ├── spa rpool | filter 'obj.spa_syncing_txg bogus_op 1624' │ │ ├── spa | deref | sum │ │ ├── spa | head 1 | deref | print --RAW -s │ │ ├── spa | head 1 | deref | print -rs │ │ ├── spa | head 1 | member spa_name[1] | print │ │ ├── spa | head 1 | member spa_name[1] | print -c │ │ ├── spa | head 1 | member spa_name[1] | print -cr │ │ ├── spa | head 1 | member spa_zio_taskq[0][0].stqs_taskq │ │ ├── spa | head 1 | member spa_zio_taskq[0][0].stqs_taskq[0] │ │ ├── spa | member spa_ubsync->ub_rootbp │ │ ├── spa | member spa_ubsync.bogus │ │ ├── spa | member spa_ubsync.ub_rootbp.blk_dva[0].dva_word │ │ ├── spa | member spa_zio_taskq[0][0].stqs_taskq | array │ │ ├── spa | member spa_zio_taskq[0][0].stqs_taskq | array 2 │ │ ├── spa | member spa_zio_taskq[0][0].stqs_taskq-> │ │ ├── spa | member spa_zio_taskq[0][0].stqs_taskq. │ │ ├── spa | range_tree │ │ ├── spa | vdev | metaslab | deref | sizeof | sum │ │ ├── sum │ │ ├── thread | filter "obj.comm == \"bogus\"" | thread │ │ ├── threads | deref | sizeof | sum │ │ ├── threads | sizeof | sum │ │ ├── zfs_dbgmsg | filter '== obj' │ │ ├── zfs_dbgmsg | filter 'obj ==' │ │ ├── zfs_dbgmsg | filter 'obj' │ │ ├── zfs_dbgmsg | head 1 | member zdm_msg | array │ │ ├── zfs_dbgmsg | head 1 | member zdm_msg | array -1 │ │ ├── zfs_dbgmsg | head 1 | member zdm_msg | array 0 │ │ ├── zfs_dbgmsg | head 1 | member zdm_msg | array 2 │ │ └── zfs_dbgmsg | head 1 | member zdm_msg[2] │ │ ├── linux │ │ ├── addr init_task | member comm | addr | container_of bogus_type comm | cast void * │ │ ├── addr init_task | member comm | addr | container_of int comm | cast void * │ │ ├── addr init_task | member comm | addr | container_of pid comm | cast void * │ │ ├── addr init_task | member comm | addr | container_of task_struct bogus_member | cast void * │ │ ├── addr init_task | member comm | addr | container_of task_struct comm | cast void * │ │ ├── addr init_task | member comm | container_of task_struct comm | cast void * │ │ ├── addr init_task | member thread_pid.tasks[3] | lxhlist bogus_type pid_links[3] | member comm │ │ ├── addr init_task | member thread_pid.tasks[3] | lxhlist task_struct bogus_member | member comm │ │ ├── addr init_task | member thread_pid.tasks[3] | lxhlist task_struct pid_links[3] | member comm │ │ ├── addr modules | lxlist bogus_type list | member name │ │ ├── addr modules | lxlist module bogus_member | member name │ │ ├── addr modules | lxlist module list | member name │ │ ├── addr spa_namespace_avl | cpu_counter_sum │ │ ├── addr tcp_orphan_count | cpu_counter_sum │ │ ├── addr tcp_sockets_allocated | cpu_counter_sum │ │ ├── addr vm_committed_as | cpu_counter_sum │ │ ├── addr vmap_area_root | rbtree bogus_type rb_node │ │ ├── addr vmap_area_root | rbtree vmap_area bogus_member │ │ ├── addr vmap_area_root | rbtree vmap_area rb_node │ │ ├── crashed_thread │ │ ├── crashed_thread | stacks │ │ ├── dbuf |head 1 |deref |member db_buf |whatis │ │ ├── dmesg │ │ ├── dmesg -l 3 │ │ ├── echo 0x0 | cpu_counter_sum │ │ ├── echo 0xffffa089669edc00 | stack │ │ ├── find_task 1 │ │ ├── find_task 1 2 │ │ ├── find_task 1 2 | member comm │ │ ├── find_task 1 | fget 1 4 │ │ ├── find_task 1 | fget 1 4 123123 │ │ ├── pid 1 │ │ ├── pid 1 10 12437 │ │ ├── slabs │ │ ├── slabs -o bogus │ │ ├── slabs -s active_objs -o active_objs,util,name │ │ ├── slabs -s active_objs -o util │ │ ├── slabs -s bogus │ │ ├── slabs -s util │ │ ├── slabs -s util | slabs │ │ ├── slabs -v │ │ ├── slabs | filter 'obj.name == "UNIX"' | slub_cache | count │ │ ├── slabs | filter 'obj.name == "dnode_t"' |walk | head 6056 | tail 1| cast dnode_t * | deref |member dn_phys |member dn_blkptr[0] |blkptr │ │ ├── slabs | filter 'obj.name == "dnode_t"' |walk | tail 8 | head 1 | cast dnode_t * | deref |member dn_phys |member dn_blkptr[0] |blkptr │ │ ├── slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu │ │ ├── slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 0 │ │ ├── slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 0 1 │ │ ├── slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 0 2 1 │ │ ├── slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 1 │ │ ├── slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 100 │ │ ├── slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 2 │ │ ├── slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 3 │ │ ├── slabs | filter 'obj.name == "zio_cache"' | slub_cache │ │ ├── slabs | filter 'obj.name == "zio_cache"' | slub_cache | cast zio_t * | member io_spa.spa_name │ │ ├── slabs | filter 'obj.name == "zio_cache"' | slub_cache | count │ │ ├── slabs | filter 'obj.name == "zio_cache"' | walk │ │ ├── slabs | head 2 | slabs │ │ ├── slabs | pp │ │ ├── stacks │ │ ├── stacks -a │ │ ├── stacks -c bogus │ │ ├── stacks -c spa_sync │ │ ├── stacks -m bogus │ │ ├── stacks -m bogus | count │ │ ├── stacks -m zfs │ │ ├── stacks -m zfs -c spa_sync │ │ ├── stacks -m zfs -c zthr_procedure │ │ ├── stacks -m zfs | count │ │ ├── stacks -t bogus │ │ ├── thread │ │ ├── threads │ │ ├── threads | count │ │ ├── threads | filter 'obj.comm == "java"' | stack │ │ ├── threads | filter 'obj.comm == "java"' | threads │ │ ├── whatis 0xf987kkbbh │ │ ├── whatis 0xffff │ │ ├── whatis 0xffffa0888c766000 0xffffa089407ca870 │ │ └── whatis 0xffffa089407ca870 │ │ ├── spl │ │ ├── addr arc_mru | member [0].arcs_list[1] | multilist | head │ │ ├── addr arc_mru | member [0].arcs_list[1] | walk | head │ │ ├── addr spa_namespace_avl | avl │ │ ├── addr spa_namespace_avl | walk │ │ ├── spa | member spa_config_list | spl_list │ │ ├── spa | member spa_config_list | walk │ │ ├── spa | member spa_evicting_os_list | spl_list │ │ ├── spa | member spa_evicting_os_list | walk │ │ ├── spa | member spa_normal_class.mc_metaslab_txg_list | multilist │ │ ├── spa | member spa_normal_class.mc_metaslab_txg_list | walk │ │ ├── spl_kmem_caches │ │ ├── spl_kmem_caches -o name,entry_size -s entry_size │ │ ├── spl_kmem_caches -o name,source │ │ ├── spl_kmem_caches -s entry_size │ │ ├── spl_kmem_caches -s entry_size | head 4 | spl_kmem_caches │ │ ├── spl_kmem_caches -v │ │ ├── spl_kmem_caches | filter 'obj.skc_linux_cache == 0' | spl_cache │ │ ├── spl_kmem_caches | filter 'obj.skc_linux_cache == 0' | spl_cache | cnt │ │ ├── spl_kmem_caches | filter 'obj.skc_linux_cache > 0' | filter 'obj.skc_obj_alloc > 0' | head 1 | spl_cache │ │ ├── spl_kmem_caches | filter 'obj.skc_name == "ddt_cache"' | walk │ │ └── spl_kmem_caches | pp │ │ └── zfs │ │ ├── arc │ │ ├── dbuf │ │ ├── dbuf -l 1 │ │ ├── dbuf | dbuf -l 1 │ │ ├── dbuf | dbuf -l 1 | head | dbuf │ │ ├── dbuf | head 1 | member db_blkptr | blkptr │ │ ├── spa │ │ ├── spa -H │ │ ├── spa -mH │ │ ├── spa -v │ │ ├── spa -vH │ │ ├── spa -vm │ │ ├── spa -vmH │ │ ├── spa data | member spa_normal_class.mc_histogram | zfs_histogram │ │ ├── spa data | vdev | metaslab | filter 'obj.ms_loaded == 1' | head 1 | member ms_allocatable.rt_histogram | zhist │ │ ├── spa data | vdev | metaslab | filter 'obj.ms_loaded == 1' | head 1 | member ms_sm.sm_phys.smp_histogram | zhist │ │ ├── spa data | vdev | metaslab | filter 'obj.ms_loaded == 1' | head 1 | member ms_sm.sm_phys.smp_histogram | zhist 9 │ │ ├── spa rpool │ │ ├── spa | head 1 | deref |member spa_uberblock | member ub_rootbp | blkptr │ │ ├── spa | head 1 | spa │ │ ├── spa | pp │ │ ├── spa | vdev │ │ ├── spa | vdev | metaslab │ │ ├── spa | vdev | metaslab -w │ │ ├── spa | vdev | metaslab | member ms_allocatable | range_tree │ │ ├── spa | vdev | metaslab | member ms_allocatable.rt_root | zfs_btree │ │ ├── spa | vdev | pp │ │ ├── zfs_dbgmsg │ │ ├── zfs_dbgmsg | tail 5 | zfs_dbgmsg │ │ ├── zio │ │ └── zio -r ├── gen_regression_output.py ├── infra.py ├── test_core_generic.py ├── test_linux_generic.py ├── test_spl_generic.py └── test_zfs_generic.py └── unit ├── __init__.py ├── commands ├── __init__.py ├── test_address.py ├── test_cast.py ├── test_count.py ├── test_echo.py ├── test_filter.py └── test_member.py └── test_parser.py /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | [//]: # (This PR template outlines different sections that you can fill so reviewers have an easier time understanding your review.) 2 | [//]: # (Using this template is strongly encouraged but not a hard requirement for getting your PR merged.) 3 | [//]: # (Using this template in your commit description is also encouraged.) 4 | 5 | = Problem 6 | 7 | [//]: # (A clear description of the problem. The problem statement should be written in terms of a specific symptom that affects users or the codebase.) 8 | [//]: # (The problem statement should not be written in terms of the solution.) 9 | 10 | = Solution 11 | 12 | [//]: # (A clear description of the high-level solution you have chosen and the reasons behind it.) 13 | [//]: # (Describing why you chose the specific solution here is just as important as the actual high-level description of the solution.) 14 | [//]: # (If there were other possible solutions that you considered and rejected, please mention those as well and the reasons you rejected them.) 15 | 16 | 17 | [//]: # (Extra Possible Sections:) 18 | 19 | [//]: # (= Notes To Reviewers) 20 | 21 | [//]: # (Any extra information a reviewer may need to know before reviewing your change.) 22 | [//]: # (For example here you might want to describe which files should be looked at first or which files.) 23 | 24 | [//]: # (= Future work) 25 | 26 | [//]: # (A description of what follow up work is explicitly not being done in this change.) 27 | [//]: # (Creating new issues for that future work in the repo tracker and mentioning them here may work as well.) 28 | 29 | [//]: # (= Testing) 30 | 31 | [//]: # (If your patch introduces changes that are not covered by our CI/CD checks, please describe how you did your testing.) 32 | 33 | [//]: # (= Github Issue Tracker Automation) 34 | 35 | [//]: # (If your patch is fixing an issue filled in the repo's issue tracker mention this here. Example: "Closes #56") 36 | -------------------------------------------------------------------------------- /.github/scripts/clear-dump.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -eu 2 | 3 | DATA_DIR="tests/integration/data" 4 | 5 | echo "checking folder structure ..." 6 | if [ ! -d $DATA_DIR ]; then 7 | exit 1 8 | fi 9 | 10 | echo "removing all crash/core dumps ..." 11 | rm -rf $DATA_DIR/dumps 12 | 13 | echo "Done" 14 | -------------------------------------------------------------------------------- /.github/scripts/download-dump-from-s3.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -eu 2 | 3 | # 4 | # Assumptions for this to work: 5 | # [1] This script is executed from the root of the SDB repo 6 | # [2] The archive downloaded from S3 has one of the following profiles: 7 | # Profile A - It is lzma-compressed and has the following file structure: 8 | # dump-data 9 | # ├── dump.201912060006 10 | # ├── mods 11 | # │   ├── avl 12 | # │   │   └── zavl.ko 13 | # ..... 14 | # │   └── zfs 15 | # │   └── zfs.ko 16 | # └── vmlinux-5.0.0-36-generic 17 | # Profile B - It is gzip-compressed and generated by the savedump utility. 18 | # 19 | # Note: Profile A is deprecated. It was format used for dump archives created 20 | # manually. 21 | # 22 | 23 | DATA_DIR="tests/integration/data" 24 | 25 | if [ $# -eq 0 ]; then 26 | echo "error: no crash dump archive argument supplied" 27 | exit 1 28 | fi 29 | 30 | echo "checking folder structure ..." 31 | if [ ! -d $DATA_DIR ]; then 32 | echo "error: please cd to the root of the git repo" 33 | exit 1 34 | fi 35 | 36 | if [ -f "$1" ]; then 37 | echo "Found $1 locally, skip download ..." 38 | else 39 | echo "downloading of $1 from S3 ..." 40 | wget https://sdb-testing-bucket.s3.us-west-2.amazonaws.com/$1 41 | [ $? -eq 0 ] || exit 1 42 | fi 43 | 44 | if [[ $1 == *.tar.lzma ]]; then 45 | # Profile A 46 | dump_name=${1%.tar.lzma} 47 | 48 | echo "decompressing dump ..." 49 | tar -x --lzma -f $1 50 | 51 | echo "moving contents to tests/integration/data/dumps/${dump_name} ..." 52 | mkdir -p $DATA_DIR/dumps/${dump_name} 53 | mv dump-data/* $DATA_DIR/dumps/${dump_name} 54 | [ $? -eq 0 ] || exit 1 55 | 56 | rmdir dump-data 57 | [ $? -eq 0 ] || exit 1 58 | elif [[ $1 == *.tar.gz ]]; then 59 | # Profile B 60 | dump_name=${1%.tar.gz} 61 | 62 | echo "decompressing dump ..." 63 | tar xzf $1 64 | 65 | echo "moving contents to tests/integration/data/dumps/${dump_name} ..." 66 | mkdir -p $DATA_DIR/dumps/${dump_name} 67 | mv *${dump_name}/* $DATA_DIR/dumps/${dump_name} 68 | [ $? -eq 0 ] || exit 1 69 | 70 | rmdir *${dump_name} 71 | [ $? -eq 0 ] || exit 1 72 | else 73 | echo "unknown dump profile" 74 | exit 1 75 | fi 76 | 77 | echo "Done" 78 | -------------------------------------------------------------------------------- /.github/scripts/install-drgn.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -eux 2 | 3 | # 4 | # These are build requirements of "drgn"; if we don't install these, the 5 | # build/install of "drgn" will fail below. 6 | # 7 | sudo apt update 8 | sudo apt install bison flex libelf-dev libdw-dev libomp5 libomp-dev 9 | 10 | git clone https://github.com/osandov/drgn.git 11 | 12 | cd drgn 13 | python3 setup.py install 14 | cd - 15 | -------------------------------------------------------------------------------- /.github/scripts/install-libkdumpfile.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -eux 2 | 3 | # 4 | # These are build requirements of "libkdumpfile"; if we don't install these, 5 | # the build/install of "libkdumpfile" will fail below. Note that we install 6 | # all version of python3.X-dev so the Github actions jobs can install 7 | # libkdumpfile with the right version. 8 | # 9 | sudo apt update 10 | sudo apt install autoconf automake liblzo2-dev libsnappy1v5 libtool pkg-config zlib1g-dev 11 | sudo apt install python3.8-dev python3.9-dev 12 | 13 | git clone https://github.com/ptesarik/libkdumpfile.git 14 | 15 | cd libkdumpfile 16 | autoreconf -fi 17 | ./configure --with-python=$(which python3) 18 | make 19 | sudo make install 20 | cd - 21 | 22 | # 23 | # Debug statements 24 | # 25 | echo $(which python3) 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | MANIFEST 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *.cover 47 | .hypothesis/ 48 | .pytest_cache/ 49 | 50 | # Translations 51 | *.mo 52 | *.pot 53 | 54 | # Django stuff: 55 | *.log 56 | local_settings.py 57 | db.sqlite3 58 | 59 | # Flask stuff: 60 | instance/ 61 | .webassets-cache 62 | 63 | # Scrapy stuff: 64 | .scrapy 65 | 66 | # Sphinx documentation 67 | docs/_build/ 68 | 69 | # PyBuilder 70 | target/ 71 | 72 | # Jupyter Notebook 73 | .ipynb_checkpoints 74 | 75 | # pyenv 76 | .python-version 77 | 78 | # celery beat schedule file 79 | celerybeat-schedule 80 | 81 | # SageMath parsed files 82 | *.sage.py 83 | 84 | # Environments 85 | .env 86 | .venv 87 | env/ 88 | venv/ 89 | ENV/ 90 | env.bak/ 91 | venv.bak/ 92 | 93 | # Spyder project settings 94 | .spyderproject 95 | .spyproject 96 | 97 | # Rope project settings 98 | .ropeproject 99 | 100 | # mkdocs documentation 101 | /site 102 | 103 | # mypy 104 | .mypy_cache/ 105 | 106 | # crash-dump related files 107 | tests/integration/data/dump.* 108 | tests/integration/data/vmlinux-* 109 | tests/integration/data/mods/ 110 | 111 | # vim 112 | *.swp 113 | 114 | # zipped folders - usually crash dumps 115 | *.lzma 116 | *.tar.gz 117 | 118 | # crash dump directory 119 | tests/integration/data/dumps/ 120 | -------------------------------------------------------------------------------- /.whitesource: -------------------------------------------------------------------------------- 1 | { 2 | "scanSettings": { 3 | "configMode": "AUTO", 4 | "configExternalURL": "", 5 | "projectToken": "", 6 | "enableLicenseViolations": "true", 7 | "displayLicenseViolations": "true", 8 | "enableIaC": "true", 9 | "baseBranches": [] 10 | }, 11 | "scanSettingsSAST": { 12 | "enableScan": true, 13 | "scanPullRequests": true, 14 | "incrementalScan": true, 15 | "baseBranches": [], 16 | "snippetSize": 10 17 | }, 18 | "checkRunSettings": { 19 | "vulnerableCheckRunConclusionLevel": "failure", 20 | "displayMode": "diff", 21 | "useMendCheckNames": true 22 | }, 23 | "checkRunSettingsSAST": { 24 | "checkRunConclusionLevel": "failure", 25 | "severityThreshold": "high" 26 | }, 27 | "issueSettings": { 28 | "minSeverityLevel": "LOW", 29 | "issueType": "DEPENDENCY" 30 | }, 31 | "issueSettingsSAST": { 32 | "minSeverityLevel": "high", 33 | "issueType": "repo" 34 | }, 35 | "remediateSettings": { 36 | "workflowRules": { 37 | "enabled": true 38 | } 39 | }, 40 | "imageSettings":{ 41 | "imageTracing":{ 42 | "enableImageTracingPR": false, 43 | "addRepositoryCoordinate": false, 44 | "addDockerfilePath": false, 45 | "addMendIdentifier": false 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /debian/compat: -------------------------------------------------------------------------------- 1 | 10 2 | -------------------------------------------------------------------------------- /debian/control: -------------------------------------------------------------------------------- 1 | Source: sdb 2 | Section: misc 3 | Priority: optional 4 | Maintainer: Delphix Engineering 5 | Standards-Version: 4.1.2 6 | Build-Depends: debhelper (>= 9), dh-python, python3 7 | 8 | Package: sdb 9 | Architecture: any 10 | Depends: drgn, ${shlibs:Depends}, ${python3:Depends} 11 | Description: The Slick/Simple Debugger 12 | -------------------------------------------------------------------------------- /debian/copyright: -------------------------------------------------------------------------------- 1 | Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ 2 | Upstream-Name: sdb 3 | Source: https://github.com/delphix/sdb 4 | 5 | Files: * 6 | Copyright: Delphix Corp. 7 | License: Apache-2.0 8 | 9 | License: Apache-2.0 10 | Licensed under the Apache License, Version 2.0 (the "License"); 11 | you may not use this file except in compliance with the License. 12 | You may obtain a copy of the License at 13 | . 14 | http://www.apache.org/licenses/LICENSE-2.0 15 | . 16 | Unless required by applicable law or agreed to in writing, software 17 | distributed under the License is distributed on an "AS IS" BASIS, 18 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 | See the License for the specific language governing permissions and 20 | limitations under the License. 21 | . 22 | On Debian systems, the complete text of the Apache License can be found in 23 | the file `/usr/share/common-licenses/Apache-2.0'. 24 | -------------------------------------------------------------------------------- /debian/rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | 3 | %: 4 | dh $@ --with python3 --buildsystem=pybuild 5 | 6 | override_dh_auto_test: 7 | # 8 | # Don't run the tests when building the package. We'll enforce 9 | # testing via another mechanism, so running it during package 10 | # builds is unnecessary. 11 | # 12 | -------------------------------------------------------------------------------- /sdb/commands/__init__.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | import glob 20 | import importlib 21 | import os 22 | 23 | for path in glob.glob(f"{os.path.dirname(__file__)}/*.py"): 24 | if path != __file__: 25 | module = os.path.splitext(os.path.basename(path))[0] 26 | importlib.import_module(f"sdb.commands.{module}") 27 | 28 | for path in glob.glob(f"{os.path.dirname(__file__)}/*/__init__.py"): 29 | module = os.path.basename(os.path.dirname(path)) 30 | importlib.import_module(f"sdb.commands.{module}") 31 | -------------------------------------------------------------------------------- /sdb/commands/container_of.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2020 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | # 20 | # The pylint workaround below is for the example 21 | # sections of the help messages. 22 | # 23 | # pylint: disable=line-too-long 24 | 25 | import argparse 26 | from typing import Iterable 27 | 28 | import drgn 29 | import sdb 30 | from sdb.commands.internal.util import get_valid_struct_name 31 | 32 | 33 | class ContainerOf(sdb.Command): 34 | """ 35 | Get the containing object of a pointer object. 36 | 37 | EXAMPLES 38 | Trivial example of getting a structure's address 39 | out of the address of one of its members: 40 | 41 | sdb> addr init_task | cast void * 42 | (void *)0xffffffffa8217740 43 | sdb> addr init_task | member comm | addr | container_of task_struct comm | cast void * 44 | (void *)0xffffffffa8217740 45 | 46 | """ 47 | 48 | names = ["container_of"] 49 | load_on = [sdb.All()] 50 | 51 | @classmethod 52 | def _init_parser(cls, name: str) -> argparse.ArgumentParser: 53 | parser = super()._init_parser(name) 54 | parser.add_argument("struct_name", 55 | help="name of struct type to be used") 56 | parser.add_argument("member", help="name of member within the struct") 57 | return parser 58 | 59 | def _call(self, objs: Iterable[drgn.Object]) -> Iterable[drgn.Object]: 60 | sname = get_valid_struct_name(self, self.args.struct_name) 61 | for obj in objs: 62 | try: 63 | container_obj = drgn.container_of(obj, sname, self.args.member) 64 | except (TypeError, LookupError) as err: 65 | raise sdb.CommandError(self.name, str(err)) 66 | yield container_obj 67 | -------------------------------------------------------------------------------- /sdb/commands/count.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | from typing import Iterable 20 | 21 | import drgn 22 | import sdb 23 | 24 | 25 | class Count(sdb.Command): 26 | """ 27 | Return a count of the number of objects in the pipeline 28 | 29 | EXAMPLES 30 | Print the number of addresses given 31 | 32 | sdb> addr 0 | count 33 | (unsigned long long)1 34 | sdb> addr 0 | addr 1 | count 35 | (unsigned long long)2 36 | 37 | Print the number of ZFS dbufs 38 | 39 | sdb> dbuf | count 40 | (unsigned long long)19 41 | 42 | Print the number of root slab caches in the system 43 | 44 | sdb> slabs | count 45 | (unsigned long long)136 46 | 47 | Print the number of level 3 log statements in the kernel log buffer 48 | 49 | sdb> dmesg | filter obj.level == 3 | count 50 | (unsigned long long)24 51 | """ 52 | 53 | names = ["count", "cnt", "wc"] 54 | load_on = [sdb.All()] 55 | 56 | def _call(self, objs: Iterable[drgn.Object]) -> Iterable[drgn.Object]: 57 | yield sdb.create_object('unsigned long long', sum(1 for _ in objs)) 58 | -------------------------------------------------------------------------------- /sdb/commands/echo.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | import argparse 20 | from typing import Iterable 21 | 22 | import drgn 23 | import sdb 24 | 25 | 26 | class Echo(sdb.Command): 27 | """ 28 | Creates an object of type (void *) from the given address or addresses 29 | """ 30 | 31 | names = ["echo", "cc"] 32 | load_on = [sdb.All()] 33 | 34 | @classmethod 35 | def _init_parser(cls, name: str) -> argparse.ArgumentParser: 36 | parser = super()._init_parser(name) 37 | parser.add_argument("addrs", nargs="*", metavar="
") 38 | return parser 39 | 40 | def _call(self, objs: Iterable[drgn.Object]) -> Iterable[drgn.Object]: 41 | yield from objs 42 | 43 | for addr in self.args.addrs: 44 | try: 45 | value_ = int(addr, 0) 46 | except ValueError as err: 47 | raise sdb.CommandInvalidInputError(self.name, addr) from err 48 | yield sdb.create_object("void *", value_) 49 | -------------------------------------------------------------------------------- /sdb/commands/exit.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Chuck Tuffli 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | from typing import Iterable 20 | 21 | import drgn 22 | import sdb 23 | 24 | 25 | class Exit(sdb.Command): 26 | "Exit the application" 27 | 28 | names = ["exit", "quit"] 29 | load_on = [sdb.All()] 30 | 31 | def _call(self, objs: Iterable[drgn.Object]) -> Iterable[drgn.Object]: 32 | raise SystemExit 33 | -------------------------------------------------------------------------------- /sdb/commands/head.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | import argparse 20 | from typing import Iterable 21 | 22 | import drgn 23 | import sdb 24 | 25 | 26 | class Head(sdb.Command): 27 | """ 28 | Return the first COUNT objects passed in the pipeline 29 | 30 | EXAMPLES 31 | Print the name of the first pool 32 | 33 | sdb> spa | head 1 | member spa_name 34 | (char [256])"domain0" 35 | """ 36 | 37 | names = ["head"] 38 | load_on = [sdb.All()] 39 | 40 | @classmethod 41 | def _init_parser(cls, name: str) -> argparse.ArgumentParser: 42 | parser = super()._init_parser(name) 43 | parser.add_argument("count", nargs="?", default=10, type=int) 44 | return parser 45 | 46 | def _call(self, objs: Iterable[drgn.Object]) -> Iterable[drgn.Object]: 47 | for obj in objs: 48 | if self.args.count == 0: 49 | break 50 | 51 | self.args.count -= 1 52 | yield obj 53 | -------------------------------------------------------------------------------- /sdb/commands/help.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Chuck Tuffli 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | import argparse 20 | from typing import Iterable, Dict, Type 21 | 22 | import drgn 23 | import sdb 24 | 25 | 26 | class Help(sdb.Command): 27 | """ Displays help for the specified command for ex: help addr """ 28 | 29 | names = ["help", "man"] 30 | load_on = [sdb.All()] 31 | 32 | @classmethod 33 | def _init_parser(cls, name: str) -> argparse.ArgumentParser: 34 | parser = super()._init_parser(name) 35 | parser.add_argument("cmd", nargs="?", type=str) 36 | return parser 37 | 38 | def _call(self, objs: Iterable[drgn.Object]) -> None: 39 | all_cmds = sdb.get_registered_commands() 40 | if self.args.cmd is not None: 41 | try: 42 | all_cmds[self.args.cmd].help(self.args.cmd) 43 | except KeyError as err: 44 | raise sdb.error.CommandNotFoundError(self.args.cmd) from err 45 | else: 46 | cmds: Dict[str, Type[sdb.Command]] = {} 47 | for k, v in all_cmds.items(): 48 | if v not in cmds.values(): 49 | cmds[k] = v 50 | for k in sorted(cmds): 51 | names = cmds[k].names 52 | hs = cmds[k].__doc__ 53 | if hs is not None: 54 | h = hs.split('\n', 2) 55 | hlp = h[0] if h[0] else h[1] 56 | if h: 57 | print(f"{','.join(names) :32} - {hlp.lstrip()}") 58 | else: 59 | print(f"{','.join(names) :32}") 60 | else: 61 | print(f"{','.join(names) :32}") 62 | -------------------------------------------------------------------------------- /sdb/commands/history.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | import readline 20 | import argparse 21 | from typing import Iterable 22 | 23 | import drgn 24 | import sdb 25 | 26 | 27 | class History(sdb.Command): 28 | """ 29 | Display command history. 30 | """ 31 | # pylint: disable=too-few-public-methods 32 | 33 | names = ["history"] 34 | load_on = [sdb.All()] 35 | 36 | @classmethod 37 | def _init_parser(cls, name: str) -> argparse.ArgumentParser: 38 | parser = super()._init_parser(name) 39 | parser.add_argument("count", nargs="?", type=int) 40 | return parser 41 | 42 | def _call(self, objs: Iterable[drgn.Object]) -> None: 43 | stop = readline.get_current_history_length() + 1 44 | if self.args.count is not None: 45 | start = stop - self.args.count 46 | else: 47 | start = 1 48 | for i in range(start, stop): 49 | print(f"{i:5} {readline.get_history_item(i)}") 50 | -------------------------------------------------------------------------------- /sdb/commands/internal/__init__.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | import glob 20 | import importlib 21 | import os 22 | 23 | for path in glob.glob(f"{os.path.dirname(__file__)}/*.py"): 24 | if path != __file__: 25 | module = os.path.splitext(os.path.basename(path))[0] 26 | importlib.import_module(f"sdb.commands.internal.{module}") 27 | -------------------------------------------------------------------------------- /sdb/commands/internal/fmt.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | """ 17 | Common String and Number formatting functions. 18 | """ 19 | 20 | from typing import Union 21 | 22 | 23 | def size_nicenum(num: Union[int, float]) -> str: 24 | """ 25 | Return `num` bytes as a human-readable string. 26 | """ 27 | num = float(num) 28 | for unit in ['B', 'KB', 'MB', 'GB', 'TB']: 29 | if num < 1024.0: 30 | return f"{num:.1f}{unit}" 31 | num /= 1024.0 32 | return f"{num:.1f}YB" 33 | -------------------------------------------------------------------------------- /sdb/commands/internal/p2.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2020 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | """ 17 | Common C macros for bit-manipulation and alignment. 18 | """ 19 | 20 | 21 | def p2roundup(val: int, align: int) -> int: 22 | """ 23 | Round up `val` to the next `align` boundary. 24 | """ 25 | return ((val - 1) | (align - 1)) + 1 26 | -------------------------------------------------------------------------------- /sdb/commands/linux/__init__.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | import glob 20 | import importlib 21 | import os 22 | 23 | for path in glob.glob(f"{os.path.dirname(__file__)}/*.py"): 24 | if path != __file__: 25 | module = os.path.splitext(os.path.basename(path))[0] 26 | importlib.import_module(f"sdb.commands.linux.{module}") 27 | 28 | for path in glob.glob(f"{os.path.dirname(__file__)}/*/__init__.py"): 29 | module = os.path.basename(os.path.dirname(path)) 30 | importlib.import_module(f"sdb.commands.linux.{module}") 31 | -------------------------------------------------------------------------------- /sdb/commands/linux/internal/__init__.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | import glob 20 | import importlib 21 | import os 22 | 23 | for path in glob.glob(f"{os.path.dirname(__file__)}/*.py"): 24 | if path != __file__: 25 | module = os.path.splitext(os.path.basename(path))[0] 26 | importlib.import_module(f"sdb.commands.linux.internal.{module}") 27 | -------------------------------------------------------------------------------- /sdb/commands/linux/vfs.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2020 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | import argparse 20 | from typing import Iterable 21 | 22 | import drgn 23 | import drgn.helpers.linux.fs as drgn_fs 24 | import sdb 25 | 26 | 27 | class FGet(sdb.SingleInputCommand): 28 | """ 29 | Return "struct file *" given the FD number for each task_struct piped as input. 30 | 31 | EXAMPLES 32 | Print "struct file *" FDs 1 and 4 for the task struct with PID 1 33 | 34 | sdb> find_task 1 | fget 1 4 35 | (struct file *)0xffff944ede98ab00 36 | (struct file *)0xffff944ee5476f00 37 | """ 38 | 39 | names = ["fget"] 40 | input_type = "struct task_struct *" 41 | load_on = [sdb.Kernel()] 42 | 43 | @classmethod 44 | def _init_parser(cls, name: str) -> argparse.ArgumentParser: 45 | parser = super()._init_parser(name) 46 | parser.add_argument("fd", 47 | type=int, 48 | nargs="+", 49 | help="numeric FD(s) of task_struct") 50 | return parser 51 | 52 | def _call_one(self, obj: drgn.Object) -> Iterable[drgn.Object]: 53 | for fd in self.args.fd: 54 | yield drgn_fs.fget(obj, fd) 55 | -------------------------------------------------------------------------------- /sdb/commands/pretty_print.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | from typing import Iterable 20 | 21 | import drgn 22 | import sdb 23 | 24 | 25 | class PrettyPrint(sdb.Command): 26 | 27 | names = ["pretty_print", "pp"] 28 | load_on = [sdb.All()] 29 | 30 | def _call(self, objs: Iterable[drgn.Object]) -> None: 31 | baked = { 32 | sdb.type_canonicalize_name(type_): class_ 33 | for type_, class_ in sdb.PrettyPrinter.all_printers.items() 34 | } 35 | 36 | handling_class = None 37 | first_obj_type, objs = sdb.get_first_type(objs) 38 | if first_obj_type is not None: 39 | first_obj_type_name = sdb.type_canonical_name(first_obj_type) 40 | if first_obj_type_name in baked: 41 | handling_class = baked[first_obj_type_name] 42 | 43 | if handling_class is None: 44 | if first_obj_type is not None: 45 | msg = f'could not find pretty-printer for type {first_obj_type}\n' 46 | else: 47 | msg = 'could not find pretty-printer\n' 48 | msg += "The following types have pretty-printers:\n" 49 | msg += f"\t{'PRINTER':<20s} {'TYPE':<20s}\n" 50 | for type_name, class_ in sdb.PrettyPrinter.all_printers.items(): 51 | msg += f"\t{class_.names[0]:<20s} {type_name:<20s}\n" 52 | raise sdb.CommandError(self.name, msg) 53 | 54 | handling_class().pretty_print(objs) 55 | -------------------------------------------------------------------------------- /sdb/commands/pyfilter.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | import argparse 20 | from typing import Iterable, List, Optional 21 | 22 | import drgn 23 | import sdb 24 | 25 | 26 | class PyFilter(sdb.Command): 27 | 28 | names = ["pyfilter"] 29 | load_on = [sdb.All()] 30 | 31 | @classmethod 32 | def _init_parser(cls, name: str) -> argparse.ArgumentParser: 33 | parser = super()._init_parser(name) 34 | parser.add_argument("expr", nargs=argparse.REMAINDER) 35 | return parser 36 | 37 | def __init__(self, 38 | args: Optional[List[str]] = None, 39 | name: str = "_") -> None: 40 | super().__init__(args, name) 41 | if not self.args.expr: 42 | self.parser.error("the following arguments are required: expr") 43 | 44 | try: 45 | self.code = compile(" ".join(self.args.expr), "", "eval") 46 | except SyntaxError as err: 47 | raise sdb.CommandEvalSyntaxError(self.name, err) 48 | 49 | def _call(self, objs: Iterable[drgn.Object]) -> Iterable[drgn.Object]: 50 | 51 | def filter_cb(obj: drgn.Object) -> Optional[drgn.Object]: 52 | # pylint: disable=eval-used 53 | return eval(self.code, {'__builtins__': None}, {'obj': obj}) 54 | 55 | try: 56 | yield from filter(filter_cb, objs) 57 | except (TypeError, AttributeError) as err: 58 | raise sdb.CommandError(self.name, str(err)) 59 | -------------------------------------------------------------------------------- /sdb/commands/sizeof.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2020 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | import argparse 20 | from typing import Iterable 21 | 22 | import drgn 23 | import sdb 24 | from sdb.commands.internal import util 25 | 26 | 27 | class SizeOf(sdb.Command): 28 | """ 29 | Print the size of a type in bytes. 30 | 31 | DESCRIPTION 32 | The type can be specified by name as an argument, or 33 | by object through a pipe. 34 | 35 | EXAMPLES 36 | Print the size of struct task_struct and spa_t: 37 | 38 | sdb> sizeof task_struct spa_t 39 | (size_t)9152 40 | (size_t)9176 41 | 42 | Figuring out the size of objects passed through a 43 | pipe: 44 | 45 | sdb> addr spa_namespace_avl | deref | sizeof 46 | (size_t)40 47 | """ 48 | 49 | names = ["sizeof"] 50 | load_on = [sdb.All()] 51 | 52 | @classmethod 53 | def _init_parser(cls, name: str) -> argparse.ArgumentParser: 54 | parser = super()._init_parser(name) 55 | parser.add_argument("type", nargs="*", metavar="") 56 | return parser 57 | 58 | def _call(self, objs: Iterable[drgn.Object]) -> Iterable[drgn.Object]: 59 | for tname in self.args.type: 60 | type_ = util.get_valid_type_by_name(self, tname) 61 | yield sdb.create_object('size_t', sdb.type_canonicalize_size(type_)) 62 | for obj in objs: 63 | yield sdb.create_object('size_t', 64 | sdb.type_canonicalize_size(obj.type_)) 65 | -------------------------------------------------------------------------------- /sdb/commands/spl/__init__.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | import glob 20 | import importlib 21 | import os 22 | 23 | for path in glob.glob(f"{os.path.dirname(__file__)}/*.py"): 24 | if path != __file__: 25 | module = os.path.splitext(os.path.basename(path))[0] 26 | importlib.import_module(f"sdb.commands.spl.{module}") 27 | -------------------------------------------------------------------------------- /sdb/commands/spl/avl.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | from typing import Iterable 20 | 21 | import drgn 22 | import sdb 23 | 24 | 25 | class Avl(sdb.Walker): 26 | """ walk avl tree """ 27 | 28 | names = ["avl"] 29 | input_type = "avl_tree_t *" 30 | load_on = [sdb.Module("spl")] 31 | 32 | def _helper(self, node: drgn.Object, offset: int) -> Iterable[drgn.Object]: 33 | if sdb.is_null(node): 34 | return 35 | 36 | lchild = node.avl_child[0] 37 | yield from self._helper(lchild, offset) 38 | 39 | obj = sdb.create_object("void *", int(node) - offset) 40 | yield obj 41 | 42 | rchild = node.avl_child[1] 43 | yield from self._helper(rchild, offset) 44 | 45 | def walk(self, obj: drgn.Object) -> Iterable[drgn.Object]: 46 | offset = int(obj.avl_offset) 47 | root = obj.avl_root 48 | yield from self._helper(root, offset) 49 | -------------------------------------------------------------------------------- /sdb/commands/spl/internal/__init__.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | import glob 20 | import importlib 21 | import os 22 | 23 | for path in glob.glob(f"{os.path.dirname(__file__)}/*.py"): 24 | if path != __file__: 25 | module = os.path.splitext(os.path.basename(path))[0] 26 | importlib.import_module(f"sdb.commands.spl.internal.{module}") 27 | -------------------------------------------------------------------------------- /sdb/commands/spl/multilist.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | from typing import Iterable 20 | 21 | import drgn 22 | import sdb 23 | from sdb.commands.spl.spl_list import SPLList 24 | 25 | 26 | class MultiList(sdb.Walker): 27 | names = ["multilist"] 28 | input_type = "multilist_t *" 29 | load_on = [sdb.Module("spl")] 30 | 31 | def walk(self, obj: drgn.Object) -> Iterable[drgn.Object]: 32 | for i in range(obj.ml_num_sublists): 33 | sublist = obj.ml_sublists[i].mls_list.address_of_() 34 | yield from sdb.execute_pipeline([sublist], [SPLList()]) 35 | -------------------------------------------------------------------------------- /sdb/commands/spl/spl_list.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | from typing import Iterable 20 | 21 | import drgn 22 | import sdb 23 | 24 | 25 | class SPLList(sdb.Walker): 26 | names = ["spl_list"] 27 | input_type = "list_t *" 28 | load_on = [sdb.Module("spl")] 29 | 30 | def walk(self, obj: drgn.Object) -> Iterable[drgn.Object]: 31 | offset = int(obj.list_offset) 32 | first_node = obj.list_head.address_of_() 33 | node = first_node.next 34 | while node != first_node: 35 | yield sdb.create_object("void *", int(node) - offset) 36 | node = node.next 37 | -------------------------------------------------------------------------------- /sdb/commands/sum.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2020 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | from typing import Iterable 20 | 21 | import drgn 22 | import sdb 23 | 24 | 25 | class SdbSum(sdb.Command): 26 | """ 27 | Sum integers passed through the pipe. 28 | 29 | EXAMPLES 30 | Print the number of bytes used by all the metaslab_t 31 | structures: 32 | 33 | sdb> spa | vdev | metaslab | deref | sizeof | sum 34 | (uint64_t)284672 35 | 36 | Print the number of bytes used by all the task_structs 37 | in the system: 38 | 39 | sdb> threads | deref | sizeof | sum 40 | (uint64_t)4548544 41 | """ 42 | 43 | names = ["sum"] 44 | load_on = [sdb.All()] 45 | 46 | def _call(self, objs: Iterable[drgn.Object]) -> Iterable[drgn.Object]: 47 | result = 0 48 | for obj in objs: 49 | type_ = sdb.type_canonicalize(obj.type_) 50 | if type_.kind not in (drgn.TypeKind.INT, drgn.TypeKind.POINTER): 51 | raise sdb.CommandError( 52 | self.name, f"'{type_.type_name()}' is not an integer type") 53 | result += int(obj.value_()) 54 | yield sdb.create_object('uint64_t', result) 55 | -------------------------------------------------------------------------------- /sdb/commands/tail.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | import argparse 20 | from collections import deque 21 | from typing import Deque, Iterable 22 | 23 | import drgn 24 | import sdb 25 | 26 | 27 | class Tail(sdb.Command): 28 | """ 29 | Return the last COUNT objects passed in the pipeline 30 | 31 | EXAMPLES 32 | Print the name of the last pool 33 | 34 | sdb> spa | tail 1 | spa_name 35 | (char [256])"domain9" 36 | """ 37 | 38 | names = ["tail"] 39 | load_on = [sdb.All()] 40 | 41 | @classmethod 42 | def _init_parser(cls, name: str) -> argparse.ArgumentParser: 43 | parser = super()._init_parser(name) 44 | parser.add_argument("count", nargs="?", default=10, type=int) 45 | return parser 46 | 47 | def _call(self, objs: Iterable[drgn.Object]) -> Iterable[drgn.Object]: 48 | queue: Deque[drgn.Object] = deque(maxlen=self.args.count) 49 | for obj in objs: 50 | queue.append(obj) 51 | yield from queue 52 | -------------------------------------------------------------------------------- /sdb/commands/type.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | import drgn 20 | import sdb 21 | 22 | 23 | class Type(sdb.SingleInputCommand): 24 | """ 25 | Print the type of the objects passed in the pipeline 26 | 27 | EXAMPLES 28 | Print the object type returned by the spa command 29 | 30 | sdb> spa | type 31 | spa_t * 32 | """ 33 | 34 | names = ["type"] 35 | load_on = [sdb.All()] 36 | 37 | def _call_one(self, obj: drgn.Object) -> None: 38 | print(obj.type_) 39 | -------------------------------------------------------------------------------- /sdb/commands/uthreads.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2020 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | from typing import Iterable 20 | 21 | import drgn 22 | 23 | import sdb 24 | from sdb.commands.ustacks import gettid 25 | 26 | 27 | class UserThreads(sdb.Locator): 28 | """ 29 | Locate the list of threads in the process 30 | """ 31 | 32 | names = ["threads", "thread"] 33 | input_type = "int" 34 | output_type = "int" 35 | load_on = [sdb.Userland()] 36 | 37 | def no_input(self) -> Iterable[drgn.Object]: 38 | yield from map(gettid, sdb.get_prog().threads()) 39 | -------------------------------------------------------------------------------- /sdb/commands/zfs/__init__.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | import glob 20 | import importlib 21 | import os 22 | 23 | for path in glob.glob(f"{os.path.dirname(__file__)}/*.py"): 24 | if path != __file__: 25 | module = os.path.splitext(os.path.basename(path))[0] 26 | importlib.import_module(f"sdb.commands.zfs.{module}") 27 | -------------------------------------------------------------------------------- /sdb/commands/zfs/arc.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | from typing import Iterable 20 | 21 | import drgn 22 | import sdb 23 | 24 | 25 | class ARCStats(sdb.Locator, sdb.PrettyPrinter): 26 | names = ["arc"] 27 | input_type = "arc_stats_t *" 28 | output_type = "arc_stats_t *" 29 | load_on = [sdb.Module("zfs"), sdb.Library("libzpool")] 30 | 31 | @staticmethod 32 | def print_stats(obj: drgn.Object) -> None: 33 | names = [memb.name for memb in sdb.get_type('struct arc_stats').members] 34 | 35 | for name in names: 36 | print(f"{name:32} = {int(obj.member_(name).value.ui64)}") 37 | 38 | def pretty_print(self, objs: Iterable[drgn.Object]) -> None: 39 | for obj in objs: 40 | self.print_stats(obj) 41 | 42 | def no_input(self) -> Iterable[drgn.Object]: 43 | yield sdb.get_object("arc_stats").address_of_() 44 | -------------------------------------------------------------------------------- /sdb/commands/zfs/zfs_dbgmsg.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | import argparse 20 | import datetime 21 | from typing import Iterable 22 | 23 | import drgn 24 | import sdb 25 | from sdb.commands.spl.spl_list import SPLList 26 | 27 | 28 | class ZfsDbgmsg(sdb.Locator, sdb.PrettyPrinter): 29 | names = ["zfs_dbgmsg"] 30 | input_type = "zfs_dbgmsg_t *" 31 | output_type = "zfs_dbgmsg_t *" 32 | load_on = [sdb.Module("zfs"), sdb.Library("libzpool")] 33 | 34 | @classmethod 35 | def _init_parser(cls, name: str) -> argparse.ArgumentParser: 36 | parser = super()._init_parser(name) 37 | parser.add_argument('--verbose', '-v', action='count', default=0) 38 | return parser 39 | 40 | # obj is a zfs_dbgmsg_t* 41 | @staticmethod 42 | def print_msg(obj: drgn.Object, 43 | print_timestamp: bool = False, 44 | print_address: bool = False) -> None: 45 | if print_address: 46 | print(f"{hex(obj)} ", end="") 47 | if print_timestamp: 48 | timestamp = datetime.datetime.fromtimestamp(int(obj.zdm_timestamp)) 49 | print(f"{timestamp.strftime('%Y-%m-%dT%H:%M:%S')}: ", end="") 50 | 51 | print(drgn.cast("char *", obj.zdm_msg).string_().decode("utf-8")) 52 | 53 | def pretty_print(self, objs: Iterable[drgn.Object]) -> None: 54 | for obj in objs: 55 | ZfsDbgmsg.print_msg(obj, self.args.verbose >= 1, self.args.verbose 56 | >= 2) 57 | 58 | def no_input(self) -> Iterable[drgn.Object]: 59 | proc_list = sdb.get_object("zfs_dbgmsgs").pl_list 60 | list_addr = proc_list.address_of_() 61 | 62 | yield from sdb.execute_pipeline( 63 | [list_addr], [SPLList(), sdb.Cast(["zfs_dbgmsg_t *"])]) 64 | -------------------------------------------------------------------------------- /sdb/internal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/delphix/sdb/a3aefe71e88852462f8268ec2996e4659f471263/sdb/internal/__init__.py -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | from setuptools import setup 4 | 5 | setup( 6 | name='sdb', 7 | version="0.1.0", 8 | 9 | packages=[ 10 | "sdb", 11 | "sdb.commands", 12 | "sdb.commands.internal", 13 | "sdb.commands.linux", 14 | "sdb.commands.linux.internal", 15 | "sdb.commands.spl", 16 | "sdb.commands.spl.internal", 17 | "sdb.commands.zfs", 18 | "sdb.commands.zfs.internal", 19 | "sdb.internal", 20 | ], 21 | 22 | entry_points={ 23 | 'console_scripts': ['sdb=sdb.internal.cli:main'], 24 | }, 25 | 26 | author='Delphix Platform Team', 27 | author_email='serapheim@delphix.com', 28 | description='The Slick/Simple Debugger', 29 | license='Apache-2.0', 30 | url='https://github.com/delphix/sdb', 31 | ) 32 | -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/delphix/sdb/a3aefe71e88852462f8268ec2996e4659f471263/tests/__init__.py -------------------------------------------------------------------------------- /tests/integration/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/delphix/sdb/a3aefe71e88852462f8268ec2996e4659f471263/tests/integration/__init__.py -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/addr bogus: -------------------------------------------------------------------------------- 1 | sdb: addr: symbol not found: bogus 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/addr fget | deref: -------------------------------------------------------------------------------- 1 | sdb: deref: cannot dereference function pointer 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/addr jiffies | deref: -------------------------------------------------------------------------------- 1 | (volatile unsigned long)4294968498 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/addr jiffies | deref | deref: -------------------------------------------------------------------------------- 1 | sdb: deref: 'volatile unsigned long' is not a valid pointer type 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/addr spa_namespace_avl: -------------------------------------------------------------------------------- 1 | (avl_tree_t *)spa_namespace_avl+0x0 = 0xffffffffc07d0fe0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/addr spa_namespace_avl | deref: -------------------------------------------------------------------------------- 1 | (avl_tree_t){ 2 | .avl_root = (struct avl_node *)0xffffa089413b8108, 3 | .avl_compar = (int (*)(const void *, const void *))spa_name_compare+0x0 = 0xffffffffc0593520, 4 | .avl_offset = (size_t)264, 5 | .avl_numnodes = (ulong_t)3, 6 | .avl_size = (size_t)9176, 7 | } 8 | @#$ EXIT CODE $#@ 9 | 0 10 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/addr spa_namespace_avl | deref | addr: -------------------------------------------------------------------------------- 1 | (avl_tree_t *)spa_namespace_avl+0x0 = 0xffffffffc07d0fe0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/addr spa_namespace_avl | deref | print: -------------------------------------------------------------------------------- 1 | (avl_tree_t){ 2 | .avl_root = (struct avl_node *)0xffffa089413b8108, 3 | .avl_compar = (int (*)(const void *, const void *))spa_name_compare+0x0 = 0xffffffffc0593520, 4 | .avl_offset = (size_t)264, 5 | .avl_numnodes = (ulong_t)3, 6 | .avl_size = (size_t)9176, 7 | } 8 | @#$ EXIT CODE $#@ 9 | 0 10 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/addr spa_namespace_avl | member avl_root->avl_child[0]->avl_child: -------------------------------------------------------------------------------- 1 | (struct avl_node *[2]){} 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/addr spa_namespace_avl | member avl_root->avl_child[1: -------------------------------------------------------------------------------- 1 | sdb: member: incomplete array expression: please use something of the format 'array_name[index]' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/addr spa_namespace_avl | member avl_root->avl_child[3]: -------------------------------------------------------------------------------- 1 | warning: member: index out of bounds for array of type 'struct avl_node *[2]' (requested index: 3) 2 | (struct avl_node *)0xffffa08892703f60 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/addr spa_namespace_avl | member avl_root->avl_child[a]: -------------------------------------------------------------------------------- 1 | sdb: member: incorrect index: 'a' is not a number 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/addr spa_namespace_avl | member avl_root.avl_child[0].avl_child: -------------------------------------------------------------------------------- 1 | (struct avl_node *[2]){} 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/addr spa_namespace_avl | member avl_root.avl_pcb avl_size: -------------------------------------------------------------------------------- 1 | (uintptr_t)1 2 | (size_t)9176 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/addr spa_namespace_avl | print: -------------------------------------------------------------------------------- 1 | (avl_tree_t *)spa_namespace_avl+0x0 = 0xffffffffc07d0fe0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/addr spa_namespace_avl | print --RAW: -------------------------------------------------------------------------------- 1 | 0xffffffffc07d0fe0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/addr spa_namespace_avl | print -d: -------------------------------------------------------------------------------- 1 | *(avl_tree_t *)(spa_namespace_avl+0x0 = 0xffffffffc07d0fe0) = { 2 | .avl_root = (struct avl_node *)0xffffa089413b8108, 3 | .avl_compar = (int (*)(const void *, const void *))spa_name_compare+0x0 = 0xffffffffc0593520, 4 | .avl_offset = (size_t)264, 5 | .avl_numnodes = (ulong_t)3, 6 | .avl_size = (size_t)9176, 7 | } 8 | @#$ EXIT CODE $#@ 9 | 0 10 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/addr spa_namespace_avl | print -n: -------------------------------------------------------------------------------- 1 | (avl_tree_t *)0xffffffffc07d0fe0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/addr spa_namespace_avl | print -nr: -------------------------------------------------------------------------------- 1 | 0xffffffffc07d0fe0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/addr spa_namespace_avl | print -r: -------------------------------------------------------------------------------- 1 | spa_namespace_avl+0x0 = 0xffffffffc07d0fe0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/echo 0x0 0x1 0x2 | filter 'obj < 1': -------------------------------------------------------------------------------- 1 | (void *)0x0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/echo 0x0 0x1 0x2 | filter 'obj <= 1': -------------------------------------------------------------------------------- 1 | (void *)0x0 2 | (void *)0x1 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/echo 0x0 0x1 0x2 | filter 'obj == 1': -------------------------------------------------------------------------------- 1 | (void *)0x1 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/echo 0x0 0x1 0x2 | filter 'obj > 1': -------------------------------------------------------------------------------- 1 | (void *)0x2 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/echo 0x0 0x1 0x2 | filter 'obj >= 1': -------------------------------------------------------------------------------- 1 | (void *)0x1 2 | (void *)0x2 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/echo 0x0 | addr spa_namespace_avl | echo 0x1 | cast avl_tree_t * | member avl_root: -------------------------------------------------------------------------------- 1 | sdb: member: invalid memory access: addresss 0x0 2 | (struct avl_node *)0xffffa089413b8108 3 | sdb: member: invalid memory access: addresss 0x1 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/echo 0x0 | cast int * | array 1: -------------------------------------------------------------------------------- 1 | sdb: array: invalid memory access: addresss 0x0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/echo 0x0 | cast int * | deref: -------------------------------------------------------------------------------- 1 | sdb: deref: invalid memory access: addresss 0x0 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/echo 0x0 | cast spa_t * | member spa_name: -------------------------------------------------------------------------------- 1 | sdb: member: invalid memory access: addresss 0x0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/echo 0x0 | cast void * | array 1: -------------------------------------------------------------------------------- 1 | sdb: array: can't walk pointer array of incomplete type 'void' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/echo 0x0 | filter 'obj == 0': -------------------------------------------------------------------------------- 1 | (void *)0x0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/echo 0x0 | filter 'obj == 1': -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/echo 0x1 | filter 'obj == obj': -------------------------------------------------------------------------------- 1 | (void *)0x1 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/echo 0x10 | cast int * | deref: -------------------------------------------------------------------------------- 1 | sdb: deref: invalid memory access: addresss 0x10 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/echo 0x1234 | cast dmu_recv_cookie_t * | member drc_os: -------------------------------------------------------------------------------- 1 | sdb: member: invalid memory access: addresss 0x12c4 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/echo 0xffff90cc11b28000 | deref: -------------------------------------------------------------------------------- 1 | sdb: deref: cannot dereference a void pointer 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/echo 1 | echo 2 | sum: -------------------------------------------------------------------------------- 1 | (uint64_t)3 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/echo 1234 | cast int | array: -------------------------------------------------------------------------------- 1 | sdb: array: 'int' is not an array nor a pointer type 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/filter 'obj == 1': -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/member no_object: -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/ptype $abc: -------------------------------------------------------------------------------- 1 | sdb: ptype: input '$abc' is not a valid type name 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/ptype 'a b c': -------------------------------------------------------------------------------- 1 | sdb: ptype: input 'a b c' is not a valid type name 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/ptype 'bogus union': -------------------------------------------------------------------------------- 1 | sdb: ptype: input 'bogus union' is not a valid type name 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/ptype 'struct bogus': -------------------------------------------------------------------------------- 1 | sdb: ptype: couldn't find type 'struct bogus' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/ptype 'struct union': -------------------------------------------------------------------------------- 1 | sdb: ptype: input 'struct union' is not a valid type name 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/ptype 'struct': -------------------------------------------------------------------------------- 1 | sdb: ptype: skip keyword 'struct' or quote your type "struct " 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/ptype 'union struct struct': -------------------------------------------------------------------------------- 1 | sdb: ptype: input 'union struct struct' is not a valid type name 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/ptype 2abc: -------------------------------------------------------------------------------- 1 | sdb: ptype: input '2abc' is not a valid type name 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/ptype @: -------------------------------------------------------------------------------- 1 | sdb: ptype: input '@' is not a valid type name 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/ptype bogus_t: -------------------------------------------------------------------------------- 1 | sdb: ptype: couldn't find typedef, struct, enum, nor union named 'bogus_t' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/ptype spa_t: -------------------------------------------------------------------------------- 1 | typedef struct spa spa_t 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/ptype struct spa: -------------------------------------------------------------------------------- 1 | sdb: ptype: skip keyword 'struct' or quote your type "struct " 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/ptype thread_union: -------------------------------------------------------------------------------- 1 | union thread_union { 2 | struct task_struct task; 3 | unsigned long stack[2048]; 4 | } 5 | @#$ EXIT CODE $#@ 6 | 0 7 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/ptype zfs_case: -------------------------------------------------------------------------------- 1 | enum zfs_case { 2 | ZFS_CASE_SENSITIVE = 0, 3 | ZFS_CASE_INSENSITIVE = 1, 4 | ZFS_CASE_MIXED = 2, 5 | } 6 | @#$ EXIT CODE $#@ 7 | 0 8 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/sizeof bogus: -------------------------------------------------------------------------------- 1 | sdb: sizeof: couldn't find typedef, struct, enum, nor union named 'bogus' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/sizeof size_t: -------------------------------------------------------------------------------- 1 | (size_t)8 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/sizeof spa vdev: -------------------------------------------------------------------------------- 1 | (size_t)9176 2 | (size_t)14440 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/sizeof struct spa: -------------------------------------------------------------------------------- 1 | sdb: sizeof: skip keyword 'struct' or quote your type "struct " 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/sizeof task_struct: -------------------------------------------------------------------------------- 1 | (size_t)9152 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa rpool | filter 'obj.bogus == 1624': -------------------------------------------------------------------------------- 1 | sdb: filter: 'spa_t' has no member 'bogus' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa rpool | filter 'obj.spa_syncing_txg < 1624' | member spa_name: -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa rpool | filter 'obj.spa_syncing_txg <= 1624' | member spa_name: -------------------------------------------------------------------------------- 1 | (char [256])"rpool" 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa rpool | filter 'obj.spa_syncing_txg == 1624' | member spa_name: -------------------------------------------------------------------------------- 1 | (char [256])"rpool" 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa rpool | filter 'obj.spa_syncing_txg > 1624' | member spa_name: -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa rpool | filter 'obj.spa_syncing_txg >= 1624' | member spa_name: -------------------------------------------------------------------------------- 1 | (char [256])"rpool" 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa rpool | filter 'obj.spa_syncing_txg bogus_op 1624': -------------------------------------------------------------------------------- 1 | sdb: filter: invalid input: comparison operator is missing 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa | deref | sum: -------------------------------------------------------------------------------- 1 | sdb: sum: 'struct spa' is not an integer type 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa | head 1 | member spa_name[1] | print: -------------------------------------------------------------------------------- 1 | (char)97 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa | head 1 | member spa_name[1] | print -c: -------------------------------------------------------------------------------- 1 | (char)'a' 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa | head 1 | member spa_name[1] | print -cr: -------------------------------------------------------------------------------- 1 | 'a' 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa | head 1 | member spa_zio_taskq[0][0].stqs_taskq: -------------------------------------------------------------------------------- 1 | (taskq_t **)0xffffa089369e8de0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa | head 1 | member spa_zio_taskq[0][0].stqs_taskq[0]: -------------------------------------------------------------------------------- 1 | (taskq_t *)0xffffa0893876bf00 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa | member spa_ubsync->ub_rootbp: -------------------------------------------------------------------------------- 1 | sdb: member: 'typedef struct uberblock uberblock_t' is a struct - use the dot(.) notation for member access 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa | member spa_ubsync.bogus: -------------------------------------------------------------------------------- 1 | sdb: member: 'uberblock_t' has no member 'bogus' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa | member spa_ubsync.ub_rootbp.blk_dva[0].dva_word: -------------------------------------------------------------------------------- 1 | (uint64_t [2]){ 1, 4194319 } 2 | (uint64_t [2]){ 2, 2163730 } 3 | (uint64_t [2]){ 1, 15663270 } 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa | member spa_zio_taskq[0][0].stqs_taskq | array: -------------------------------------------------------------------------------- 1 | sdb: array: 'taskq_t **' is a pointer - please specify the number of elements 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa | member spa_zio_taskq[0][0].stqs_taskq | array 2: -------------------------------------------------------------------------------- 1 | (taskq_t *)0xffffa0893876bf00 2 | (taskq_t *)0x8710003233616d64 3 | (taskq_t *)0xffffa0894d9ebc00 4 | (taskq_t *)0x87100a2a7aab6d9b 5 | (taskq_t *)0xffffa0895334d200 6 | (taskq_t *)0x746c7561666564 7 | @#$ EXIT CODE $#@ 8 | 0 9 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa | member spa_zio_taskq[0][0].stqs_taskq->: -------------------------------------------------------------------------------- 1 | sdb: member: no identifier specified after -> 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa | member spa_zio_taskq[0][0].stqs_taskq.: -------------------------------------------------------------------------------- 1 | sdb: member: no identifier specified after . 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa | range_tree: -------------------------------------------------------------------------------- 1 | sdb: range_tree: expected input of type range_tree_t *, but received type spa_t * 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/spa | vdev | metaslab | deref | sizeof | sum: -------------------------------------------------------------------------------- 1 | (uint64_t)368640 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/sum: -------------------------------------------------------------------------------- 1 | (uint64_t)0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/thread | filter "obj.comm == \"bogus\"" | thread: -------------------------------------------------------------------------------- 1 | task state pid prio comm cmdline 2 | ---- ----- --- ---- ---- ------- 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/threads | deref | sizeof | sum: -------------------------------------------------------------------------------- 1 | (uint64_t)5244096 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/threads | sizeof | sum: -------------------------------------------------------------------------------- 1 | (uint64_t)4584 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/zfs_dbgmsg | filter '== obj': -------------------------------------------------------------------------------- 1 | sdb: filter: invalid input: left hand side of expression is missing 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/zfs_dbgmsg | filter 'obj ==': -------------------------------------------------------------------------------- 1 | sdb: filter: invalid input: right hand side of expression is missing 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/zfs_dbgmsg | filter 'obj': -------------------------------------------------------------------------------- 1 | sdb: filter: invalid input: comparison operator is missing 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/zfs_dbgmsg | head 1 | member zdm_msg | array: -------------------------------------------------------------------------------- 1 | (char)115 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/zfs_dbgmsg | head 1 | member zdm_msg | array -1: -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/zfs_dbgmsg | head 1 | member zdm_msg | array 0: -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/zfs_dbgmsg | head 1 | member zdm_msg | array 2: -------------------------------------------------------------------------------- 1 | warning: requested size 2 exceeds type size 1 2 | (char)115 3 | (char)112 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/core/zfs_dbgmsg | head 1 | member zdm_msg[2]: -------------------------------------------------------------------------------- 1 | warning: member: index out of bounds for array of type 'char [1]' (requested index: 2) 2 | (char)97 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/addr init_task | member comm | addr | container_of bogus_type comm | cast void *: -------------------------------------------------------------------------------- 1 | sdb: container_of: couldn't find typedef, struct, enum, nor union named 'bogus_type' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/addr init_task | member comm | addr | container_of int comm | cast void *: -------------------------------------------------------------------------------- 1 | sdb: container_of: int is not a struct nor a typedef to a struct 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/addr init_task | member comm | addr | container_of pid comm | cast void *: -------------------------------------------------------------------------------- 1 | sdb: container_of: 'struct pid' has no member 'comm' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/addr init_task | member comm | addr | container_of task_struct bogus_member | cast void *: -------------------------------------------------------------------------------- 1 | sdb: container_of: 'struct task_struct' has no member 'bogus_member' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/addr init_task | member comm | addr | container_of task_struct comm | cast void *: -------------------------------------------------------------------------------- 1 | (void *)init_task+0x0 = 0xffffffff8c817740 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/addr init_task | member comm | container_of task_struct comm | cast void *: -------------------------------------------------------------------------------- 1 | sdb: container_of: container_of() argument must be a pointer, not 'char [16]' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/addr init_task | member thread_pid.tasks[3] | lxhlist bogus_type pid_links[3] | member comm: -------------------------------------------------------------------------------- 1 | sdb: lxhlist: couldn't find typedef, struct, enum, nor union named 'bogus_type' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/addr init_task | member thread_pid.tasks[3] | lxhlist task_struct bogus_member | member comm: -------------------------------------------------------------------------------- 1 | sdb: lxhlist: 'struct task_struct' has no member 'bogus_member' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/addr modules | lxlist bogus_type list | member name: -------------------------------------------------------------------------------- 1 | sdb: lxlist: couldn't find typedef, struct, enum, nor union named 'bogus_type' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/addr modules | lxlist module bogus_member | member name: -------------------------------------------------------------------------------- 1 | sdb: lxlist: 'struct module' has no member 'bogus_member' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/addr modules | lxlist module list | member name: -------------------------------------------------------------------------------- 1 | (char [56])"connstat" 2 | (char [56])"iscsi_target_mod" 3 | (char [56])"target_core_mod" 4 | (char [56])"vmw_vsock_vmci_transport" 5 | (char [56])"vsock" 6 | (char [56])"sb_edac" 7 | (char [56])"coretemp" 8 | (char [56])"crct10dif_pclmul" 9 | (char [56])"crc32_pclmul" 10 | (char [56])"ghash_clmulni_intel" 11 | (char [56])"ppdev" 12 | (char [56])"aesni_intel" 13 | (char [56])"aes_x86_64" 14 | (char [56])"crypto_simd" 15 | (char [56])"cryptd" 16 | (char [56])"glue_helper" 17 | (char [56])"binfmt_misc" 18 | (char [56])"intel_rapl_perf" 19 | (char [56])"vmw_balloon" 20 | (char [56])"joydev" 21 | (char [56])"input_leds" 22 | (char [56])"serio_raw" 23 | (char [56])"vmwgfx" 24 | (char [56])"ttm" 25 | (char [56])"drm_kms_helper" 26 | (char [56])"drm" 27 | (char [56])"fb_sys_fops" 28 | (char [56])"syscopyarea" 29 | (char [56])"parport_pc" 30 | (char [56])"sysfillrect" 31 | (char [56])"sysimgblt" 32 | (char [56])"parport" 33 | (char [56])"vmw_vmci" 34 | (char [56])"mac_hid" 35 | (char [56])"sch_fq_codel" 36 | (char [56])"nfsd" 37 | (char [56])"auth_rpcgss" 38 | (char [56])"nfs_acl" 39 | (char [56])"lockd" 40 | (char [56])"grace" 41 | (char [56])"nf_tables" 42 | (char [56])"nfnetlink" 43 | (char [56])"sunrpc" 44 | (char [56])"ip_tables" 45 | (char [56])"x_tables" 46 | (char [56])"autofs4" 47 | (char [56])"zfs" 48 | (char [56])"zunicode" 49 | (char [56])"zlua" 50 | (char [56])"zavl" 51 | (char [56])"icp" 52 | (char [56])"zcommon" 53 | (char [56])"znvpair" 54 | (char [56])"spl" 55 | (char [56])"btrfs" 56 | (char [56])"zstd_compress" 57 | (char [56])"raid10" 58 | (char [56])"raid456" 59 | (char [56])"async_raid6_recov" 60 | (char [56])"async_memcpy" 61 | (char [56])"async_pq" 62 | (char [56])"async_xor" 63 | (char [56])"async_tx" 64 | (char [56])"xor" 65 | (char [56])"raid6_pq" 66 | (char [56])"libcrc32c" 67 | (char [56])"raid1" 68 | (char [56])"raid0" 69 | (char [56])"multipath" 70 | (char [56])"linear" 71 | (char [56])"psmouse" 72 | (char [56])"mptspi" 73 | (char [56])"mptscsih" 74 | (char [56])"mptbase" 75 | (char [56])"scsi_transport_spi" 76 | (char [56])"i2c_piix4" 77 | (char [56])"pata_acpi" 78 | (char [56])"vmxnet3" 79 | @#$ EXIT CODE $#@ 80 | 0 81 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/addr spa_namespace_avl | cpu_counter_sum: -------------------------------------------------------------------------------- 1 | sdb: cpu_counter_sum: input is not a percpu_counter 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/addr tcp_orphan_count | cpu_counter_sum: -------------------------------------------------------------------------------- 1 | (s64)0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/addr tcp_sockets_allocated | cpu_counter_sum: -------------------------------------------------------------------------------- 1 | (s64)59 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/addr vm_committed_as | cpu_counter_sum: -------------------------------------------------------------------------------- 1 | (s64)779864 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/addr vmap_area_root | rbtree bogus_type rb_node: -------------------------------------------------------------------------------- 1 | sdb: rbtree: couldn't find typedef, struct, enum, nor union named 'bogus_type' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/addr vmap_area_root | rbtree vmap_area bogus_member: -------------------------------------------------------------------------------- 1 | sdb: rbtree: 'struct vmap_area' has no member 'bogus_member' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/crashed_thread: -------------------------------------------------------------------------------- 1 | TASK_STRUCT STATE COUNT 2 | ========================================== 3 | 0xffffa08884831700 RUNNING 1 4 | __crash_kexec+0x9d 5 | __crash_kexec+0x9d 6 | panic+0x10e 7 | 0xffffffff8b849f25+0x0 8 | __handle_sysrq+0x9f 9 | write_sysrq_trigger+0x34 10 | proc_reg_write+0x3e 11 | __vfs_write+0x1b 12 | vfs_write+0xb1 13 | ksys_write+0x5c 14 | __x64_sys_write+0x1a 15 | __x64_sys_write+0x1a 16 | __x64_sys_write+0x1a 17 | do_syscall_64+0x5a 18 | entry_SYSCALL_64+0x7c 19 | 20 | @#$ EXIT CODE $#@ 21 | 0 22 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/crashed_thread | stacks: -------------------------------------------------------------------------------- 1 | TASK_STRUCT STATE COUNT 2 | ========================================== 3 | 0xffffa08884831700 RUNNING 1 4 | __crash_kexec+0x9d 5 | __crash_kexec+0x9d 6 | panic+0x10e 7 | 0xffffffff8b849f25+0x0 8 | __handle_sysrq+0x9f 9 | write_sysrq_trigger+0x34 10 | proc_reg_write+0x3e 11 | __vfs_write+0x1b 12 | vfs_write+0xb1 13 | ksys_write+0x5c 14 | __x64_sys_write+0x1a 15 | __x64_sys_write+0x1a 16 | __x64_sys_write+0x1a 17 | do_syscall_64+0x5a 18 | entry_SYSCALL_64+0x7c 19 | 20 | @#$ EXIT CODE $#@ 21 | 0 22 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/dbuf |head 1 |deref |member db_buf |whatis: -------------------------------------------------------------------------------- 1 | 0xffffa08943a90050 is allocated from arc_buf_t 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/dmesg -l 3: -------------------------------------------------------------------------------- 1 | [ 3.685278] piix4_smbus 0000:00:07.3: SMBus Host Controller not enabled! 2 | [ 4.346112] sd 2:0:0:0: [sda] Assuming drive cache: write through 3 | [ 4.356113] sd 2:0:1:0: [sdb] Assuming drive cache: write through 4 | [ 4.363435] sd 2:0:2:0: [sdc] Assuming drive cache: write through 5 | [ 4.366085] sd 2:0:3:0: [sdd] Assuming drive cache: write through 6 | [ 48.368009] db_root: cannot open: /etc/target 7 | [ 305.340853] Kernel panic - not syncing: sysrq triggered crash 8 | @#$ EXIT CODE $#@ 9 | 0 10 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/echo 0x0 | cpu_counter_sum: -------------------------------------------------------------------------------- 1 | sdb: cpu_counter_sum: invalid memory access: could not read memory from kdump: Cannot get page I/O address: PDPT table not present: p4d[0] = 0x0: 0x8 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/echo 0xffffa089669edc00 | stack: -------------------------------------------------------------------------------- 1 | TASK_STRUCT STATE COUNT 2 | ========================================== 3 | 0xffffa089669edc00 INTERRUPTIBLE 1 4 | __schedule+0x2c0 5 | __schedule+0x2c0 6 | schedule+0x2c 7 | schedule_hrtimeout_range_clock+0x181 8 | schedule_hrtimeout_range+0x13 9 | ep_poll+0x258 10 | do_epoll_wait+0xb0 11 | __x64_sys_epoll_wait+0x1e 12 | __x64_sys_epoll_wait+0x1e 13 | __x64_sys_epoll_wait+0x1e 14 | do_syscall_64+0x5a 15 | entry_SYSCALL_64+0x7c 16 | 17 | @#$ EXIT CODE $#@ 18 | 0 19 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/find_task 1: -------------------------------------------------------------------------------- 1 | (struct task_struct *)0xffffa089669edc00 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/find_task 1 2: -------------------------------------------------------------------------------- 1 | (struct task_struct *)0xffffa089669edc00 2 | (struct task_struct *)0xffffa089669ec500 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/find_task 1 2 | member comm: -------------------------------------------------------------------------------- 1 | (char [16])"systemd" 2 | (char [16])"kthreadd" 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/find_task 1 | fget 1 4: -------------------------------------------------------------------------------- 1 | (struct file *)0xffffa08956638e00 2 | (struct file *)0xffffa08965431c00 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/find_task 1 | fget 1 4 123123: -------------------------------------------------------------------------------- 1 | (struct file *)0xffffa08956638e00 2 | (struct file *)0xffffa08965431c00 3 | (struct file *)0xe901d3e0317c1084 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/pid 1: -------------------------------------------------------------------------------- 1 | (struct pid *)0xffffa089669b5180 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/pid 1 10 12437: -------------------------------------------------------------------------------- 1 | (struct pid *)0xffffa089669b5180 2 | (struct pid *)0xffffa089669b5080 3 | (struct pid *)0x0 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/slabs -o bogus: -------------------------------------------------------------------------------- 1 | sdb: slabs: 'bogus' is not a valid field 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/slabs -s active_objs -o util: -------------------------------------------------------------------------------- 1 | sdb: slabs: invalid input: 'active_objs' is not in field set (util) 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/slabs -s bogus: -------------------------------------------------------------------------------- 1 | sdb: slabs: invalid input: 'bogus' is not in field set (name, entry_size, active_objs, active_memory, 2 | total_memory, util) 3 | @#$ EXIT CODE $#@ 4 | 1 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/slabs | filter 'obj.name == "UNIX"' | slub_cache | count: -------------------------------------------------------------------------------- 1 | (unsigned long long)57 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/slabs | filter 'obj.name == "dnode_t"' |walk | head 6056 | tail 1| cast dnode_t * | deref |member dn_phys |member dn_blkptr[0] |blkptr: -------------------------------------------------------------------------------- 1 | DVA[0]=<0:0x42083400:0x800> 2 | DVA[1]=<0:0x20048000:0x800> 3 | DVA[2]=<0:0x50002c00:0x800> 4 | [L0 SPA space map] fletcher4 lz4 layer=0 unencrypted LE contiguous unique triple 5 | size=0x20000L/0x400P birth=10L/10P fill=1 6 | cksum=0x8c1caab0a6:0x45de629e8318:0x13bfbe391d06f8:0x41fc70c3e1d38f2 7 | @#$ EXIT CODE $#@ 8 | 0 9 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/slabs | filter 'obj.name == "dnode_t"' |walk | tail 8 | head 1 | cast dnode_t * | deref |member dn_phys |member dn_blkptr[0] |blkptr: -------------------------------------------------------------------------------- 1 | HOLE [L0 unallocated] size=0x200L birth=0x0L 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu: -------------------------------------------------------------------------------- 1 | (struct kmem_cache_cpu *)0xffffa0897fc27040 2 | (struct kmem_cache_cpu *)0xffffa0897fd27040 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 0: -------------------------------------------------------------------------------- 1 | (struct kmem_cache_cpu *)0xffffa0897fc27040 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 0 1: -------------------------------------------------------------------------------- 1 | (struct kmem_cache_cpu *)0xffffa0897fc27040 2 | (struct kmem_cache_cpu *)0xffffa0897fd27040 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 0 2 1: -------------------------------------------------------------------------------- 1 | (struct kmem_cache_cpu *)0xffffa0897fc27040 2 | sdb: percpu: available CPUs [0-1] - requested CPU 2 3 | @#$ EXIT CODE $#@ 4 | 1 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 1: -------------------------------------------------------------------------------- 1 | (struct kmem_cache_cpu *)0xffffa0897fd27040 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 100: -------------------------------------------------------------------------------- 1 | sdb: percpu: available CPUs [0-1] - requested CPU 100 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 2: -------------------------------------------------------------------------------- 1 | sdb: percpu: available CPUs [0-1] - requested CPU 2 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 3: -------------------------------------------------------------------------------- 1 | sdb: percpu: available CPUs [0-1] - requested CPU 3 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/slabs | filter 'obj.name == "zio_cache"' | slub_cache: -------------------------------------------------------------------------------- 1 | (void *)0xffffa0884093c9c0 2 | (void *)0xffffa08847e144e0 3 | (void *)0xffffa0888c750ea0 4 | (void *)0xffffa088c7b21d40 5 | (void *)0xffffa088cf951380 6 | (void *)0xffffa088cf9530c0 7 | (void *)0xffffa08920b584e0 8 | (void *)0xffffa08920b59380 9 | (void *)0xffffa08920b59860 10 | (void *)0xffffa08920b5ba80 11 | (void *)0xffffa0893677f5a0 12 | (void *)0xffffa089469184e0 13 | (void *)0xffffa0894af25860 14 | (void *)0xffffa0894af275a0 15 | (void *)0xffffa089533a2220 16 | (void *)0xffffa089533a2700 17 | (void *)0xffffa0895f2e9860 18 | (void *)0xffffa0895f2ec9c0 19 | @#$ EXIT CODE $#@ 20 | 0 21 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/slabs | filter 'obj.name == "zio_cache"' | slub_cache | cast zio_t * | member io_spa.spa_name: -------------------------------------------------------------------------------- 1 | (char [256])"data" 2 | (char [256])"rpool" 3 | (char [256])"meta-domain" 4 | (char [256])"meta-domain" 5 | (char [256])"rpool" 6 | (char [256])"meta-domain" 7 | (char [256])"rpool" 8 | (char [256])"meta-domain" 9 | (char [256])"meta-domain" 10 | (char [256])"meta-domain" 11 | (char [256])"rpool" 12 | (char [256])"data" 13 | (char [256])"data" 14 | (char [256])"data" 15 | (char [256])"rpool" 16 | (char [256])"rpool" 17 | (char [256])"data" 18 | (char [256])"data" 19 | @#$ EXIT CODE $#@ 20 | 0 21 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/slabs | filter 'obj.name == "zio_cache"' | slub_cache | count: -------------------------------------------------------------------------------- 1 | (unsigned long long)18 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/slabs | filter 'obj.name == "zio_cache"' | walk: -------------------------------------------------------------------------------- 1 | (void *)0xffffa0884093c9c0 2 | (void *)0xffffa08847e144e0 3 | (void *)0xffffa0888c750ea0 4 | (void *)0xffffa088c7b21d40 5 | (void *)0xffffa088cf951380 6 | (void *)0xffffa088cf9530c0 7 | (void *)0xffffa08920b584e0 8 | (void *)0xffffa08920b59380 9 | (void *)0xffffa08920b59860 10 | (void *)0xffffa08920b5ba80 11 | (void *)0xffffa0893677f5a0 12 | (void *)0xffffa089469184e0 13 | (void *)0xffffa0894af25860 14 | (void *)0xffffa0894af275a0 15 | (void *)0xffffa089533a2220 16 | (void *)0xffffa089533a2700 17 | (void *)0xffffa0895f2e9860 18 | (void *)0xffffa0895f2ec9c0 19 | @#$ EXIT CODE $#@ 20 | 0 21 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/slabs | head 2 | slabs: -------------------------------------------------------------------------------- 1 | name entry_size active_objs active_memory total_memory util 2 | ---------------- ---------- ----------- ------------- ------------ ---- 3 | AF_VSOCK 1216 26 30.9KB 30.9KB 100 4 | t10_pr_reg_cache 704 0 0.0B 0.0B 0 5 | @#$ EXIT CODE $#@ 6 | 0 7 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/stacks -c bogus: -------------------------------------------------------------------------------- 1 | sdb: stacks: symbol 'bogus' does not exist 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/stacks -c spa_sync: -------------------------------------------------------------------------------- 1 | TASK_STRUCT STATE COUNT 2 | ========================================== 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/stacks -m bogus: -------------------------------------------------------------------------------- 1 | sdb: stacks: module 'bogus' doesn't exist or isn't currently loaded 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/stacks -m bogus | count: -------------------------------------------------------------------------------- 1 | sdb: stacks: module 'bogus' doesn't exist or isn't currently loaded 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/stacks -m zfs -c spa_sync: -------------------------------------------------------------------------------- 1 | TASK_STRUCT STATE COUNT 2 | ========================================== 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/stacks -m zfs -c zthr_procedure: -------------------------------------------------------------------------------- 1 | TASK_STRUCT STATE COUNT 2 | ========================================== 3 | 0xffffa0895684c500 INTERRUPTIBLE 13 4 | __schedule+0x2c0 5 | __schedule+0x2c0 6 | schedule+0x2c 7 | cv_wait_common+0x11f 8 | __cv_wait_sig+0x15 9 | zthr_procedure+0x51 10 | thread_generic_wrapper+0x74 11 | kthread+0x121 12 | ret_from_fork+0x1f 13 | 14 | 0xffffa08956849700 INTERRUPTIBLE 1 15 | __schedule+0x2c0 16 | __schedule+0x2c0 17 | schedule+0x2c 18 | schedule_hrtimeout_range_clock+0xb9 19 | schedule_hrtimeout_range+0x13 20 | __cv_timedwait_hires+0x11b 21 | cv_timedwait_hires_common+0x4b 22 | cv_timedwait_sig_hires+0x14 23 | zthr_procedure+0xa4 24 | thread_generic_wrapper+0x74 25 | kthread+0x121 26 | ret_from_fork+0x1f 27 | 28 | @#$ EXIT CODE $#@ 29 | 0 30 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/stacks -m zfs | count: -------------------------------------------------------------------------------- 1 | (unsigned long long)27 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/stacks -t bogus: -------------------------------------------------------------------------------- 1 | sdb: stacks: 'bogus' is not a valid task state (acceptable states: RUNNING, INTERRUPTIBLE, UNINTERRUPTIBLE, STOPPED, TRACED, DEAD, ZOMBIE, PARKED, IDLE) 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/threads | count: -------------------------------------------------------------------------------- 1 | (unsigned long long)573 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/whatis 0xf987kkbbh: -------------------------------------------------------------------------------- 1 | 0xf987kkbbh is not a valid address 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/whatis 0xffff: -------------------------------------------------------------------------------- 1 | 0xffff does not map to a kmem_cache 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/whatis 0xffffa0888c766000 0xffffa089407ca870: -------------------------------------------------------------------------------- 1 | 0xffffa0888c766000 is allocated from arc_buf_hdr_t_full 2 | 0xffffa089407ca870 is allocated from dmu_buf_impl_t 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/linux/whatis 0xffffa089407ca870: -------------------------------------------------------------------------------- 1 | 0xffffa089407ca870 is allocated from dmu_buf_impl_t 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/spl/addr arc_mru | member [0].arcs_list[1] | multilist | head: -------------------------------------------------------------------------------- 1 | (void *)0xffffa0888c766000 2 | (void *)0xffffa08930c09520 3 | (void *)0xffffa0888c766668 4 | (void *)0xffffa08930c09000 5 | (void *)0xffffa0888c72d290 6 | (void *)0xffffa089331e1cd0 7 | (void *)0xffffa08946555148 8 | (void *)0xffffa089598b6148 9 | (void *)0xffffa08945de0a40 10 | (void *)0xffffa088d1cdc000 11 | @#$ EXIT CODE $#@ 12 | 0 13 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/spl/addr arc_mru | member [0].arcs_list[1] | walk | head: -------------------------------------------------------------------------------- 1 | (void *)0xffffa0888c766000 2 | (void *)0xffffa08930c09520 3 | (void *)0xffffa0888c766668 4 | (void *)0xffffa08930c09000 5 | (void *)0xffffa0888c72d290 6 | (void *)0xffffa089331e1cd0 7 | (void *)0xffffa08946555148 8 | (void *)0xffffa089598b6148 9 | (void *)0xffffa08945de0a40 10 | (void *)0xffffa088d1cdc000 11 | @#$ EXIT CODE $#@ 12 | 0 13 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/spl/addr spa_namespace_avl | avl: -------------------------------------------------------------------------------- 1 | (void *)0xffffa0894e720000 2 | (void *)0xffffa089413b8000 3 | (void *)0xffffa08955c44000 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/spl/addr spa_namespace_avl | walk: -------------------------------------------------------------------------------- 1 | (void *)0xffffa0894e720000 2 | (void *)0xffffa089413b8000 3 | (void *)0xffffa08955c44000 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/spl/spa | member spa_config_list | spl_list: -------------------------------------------------------------------------------- 1 | (void *)0xffffa08954d6a480 2 | (void *)0xffffa089481ade80 3 | (void *)0xffffa0895339bb20 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/spl/spa | member spa_config_list | walk: -------------------------------------------------------------------------------- 1 | (void *)0xffffa08954d6a480 2 | (void *)0xffffa089481ade80 3 | (void *)0xffffa0895339bb20 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/spl/spa | member spa_evicting_os_list | spl_list: -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/spl/spa | member spa_evicting_os_list | walk: -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/spl/spa | member spa_normal_class.mc_metaslab_txg_list | multilist: -------------------------------------------------------------------------------- 1 | (void *)0xffffa0894e637800 2 | (void *)0xffffa0894e632800 3 | (void *)0xffffa0894e6e1000 4 | (void *)0xffffa0894e6e3000 5 | (void *)0xffffa0894e6e4800 6 | (void *)0xffffa0894e6e4000 7 | (void *)0xffffa0894e634800 8 | (void *)0xffffa0894e634000 9 | (void *)0xffffa0894e6e7800 10 | (void *)0xffffa0894e633000 11 | (void *)0xffffa0894e631000 12 | (void *)0xffffa0894e6e2800 13 | (void *)0xffffa0894e6e2000 14 | (void *)0xffffa0894e6e3800 15 | (void *)0xffffa0894e633800 16 | (void *)0xffffa0894c705000 17 | (void *)0xffffa0894c707000 18 | (void *)0xffffa0894c706800 19 | (void *)0xffffa0894c702800 20 | (void *)0xffffa0894c705800 21 | (void *)0xffffa0894c703000 22 | (void *)0xffffa0894c702000 23 | (void *)0xffffa0894c700800 24 | (void *)0xffffa0894c703800 25 | (void *)0xffffa0894c706000 26 | (void *)0xffffa0895347b000 27 | (void *)0xffffa08953431800 28 | (void *)0xffffa08953507000 29 | (void *)0xffffa089533f4000 30 | (void *)0xffffa08953361800 31 | (void *)0xffffa08953501000 32 | (void *)0xffffa089535c2000 33 | (void *)0xffffa08953430000 34 | (void *)0xffffa08953583000 35 | (void *)0xffffa08953581000 36 | (void *)0xffffa0895347a000 37 | (void *)0xffffa08953360000 38 | (void *)0xffffa0895347a800 39 | (void *)0xffffa089534b8800 40 | (void *)0xffffa08953583800 41 | (void *)0xffffa089534bc800 42 | (void *)0xffffa089535c3000 43 | (void *)0xffffa08953585000 44 | (void *)0xffffa089533f2000 45 | (void *)0xffffa089534bf000 46 | (void *)0xffffa08953501800 47 | (void *)0xffffa08953436000 48 | (void *)0xffffa08953506800 49 | (void *)0xffffa089533f7800 50 | (void *)0xffffa089533f0000 51 | @#$ EXIT CODE $#@ 52 | 0 53 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/spl/spa | member spa_normal_class.mc_metaslab_txg_list | walk: -------------------------------------------------------------------------------- 1 | (void *)0xffffa0894e637800 2 | (void *)0xffffa0894e632800 3 | (void *)0xffffa0894e6e1000 4 | (void *)0xffffa0894e6e3000 5 | (void *)0xffffa0894e6e4800 6 | (void *)0xffffa0894e6e4000 7 | (void *)0xffffa0894e634800 8 | (void *)0xffffa0894e634000 9 | (void *)0xffffa0894e6e7800 10 | (void *)0xffffa0894e633000 11 | (void *)0xffffa0894e631000 12 | (void *)0xffffa0894e6e2800 13 | (void *)0xffffa0894e6e2000 14 | (void *)0xffffa0894e6e3800 15 | (void *)0xffffa0894e633800 16 | (void *)0xffffa0894c705000 17 | (void *)0xffffa0894c707000 18 | (void *)0xffffa0894c706800 19 | (void *)0xffffa0894c702800 20 | (void *)0xffffa0894c705800 21 | (void *)0xffffa0894c703000 22 | (void *)0xffffa0894c702000 23 | (void *)0xffffa0894c700800 24 | (void *)0xffffa0894c703800 25 | (void *)0xffffa0894c706000 26 | (void *)0xffffa0895347b000 27 | (void *)0xffffa08953431800 28 | (void *)0xffffa08953507000 29 | (void *)0xffffa089533f4000 30 | (void *)0xffffa08953361800 31 | (void *)0xffffa08953501000 32 | (void *)0xffffa089535c2000 33 | (void *)0xffffa08953430000 34 | (void *)0xffffa08953583000 35 | (void *)0xffffa08953581000 36 | (void *)0xffffa0895347a000 37 | (void *)0xffffa08953360000 38 | (void *)0xffffa0895347a800 39 | (void *)0xffffa089534b8800 40 | (void *)0xffffa08953583800 41 | (void *)0xffffa089534bc800 42 | (void *)0xffffa089535c3000 43 | (void *)0xffffa08953585000 44 | (void *)0xffffa089533f2000 45 | (void *)0xffffa089534bf000 46 | (void *)0xffffa08953501800 47 | (void *)0xffffa08953436000 48 | (void *)0xffffa08953506800 49 | (void *)0xffffa089533f7800 50 | (void *)0xffffa089533f0000 51 | @#$ EXIT CODE $#@ 52 | 0 53 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/spl/spl_kmem_caches -s entry_size | head 4 | spl_kmem_caches: -------------------------------------------------------------------------------- 1 | name entry_size active_objs active_memory source total_memory util 2 | --------------------- ---------- ----------- ------------- --------------------------- ------------ ---- 3 | zio_data_buf_16777216 16785408 0 0.0B zio_data_buf_16777216[SPL ] 0.0B 0 4 | zio_data_buf_14680064 14686208 0 0.0B zio_data_buf_14680064[SPL ] 0.0B 0 5 | zio_buf_16777216 16785408 0 0.0B zio_buf_16777216[SPL ] 0.0B 0 6 | zio_buf_14680064 14686208 0 0.0B zio_buf_14680064[SPL ] 0.0B 0 7 | @#$ EXIT CODE $#@ 8 | 0 9 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/spl/spl_kmem_caches | filter 'obj.skc_linux_cache == 0' | spl_cache | cnt: -------------------------------------------------------------------------------- 1 | (unsigned long long)3564 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/spl/spl_kmem_caches | filter 'obj.skc_linux_cache > 0' | filter 'obj.skc_obj_alloc > 0' | head 1 | spl_cache: -------------------------------------------------------------------------------- 1 | (void *)0xffffa089566da048 2 | (void *)0xffffa089566da090 3 | (void *)0xffffa089566da1f8 4 | (void *)0xffffa089566da258 5 | (void *)0xffffa089566da2d0 6 | (void *)0xffffa089566da300 7 | (void *)0xffffa089566da318 8 | (void *)0xffffa089566da330 9 | (void *)0xffffa089566da390 10 | (void *)0xffffa089566da3c0 11 | (void *)0xffffa089566da3d8 12 | (void *)0xffffa089566da438 13 | (void *)0xffffa089566da498 14 | (void *)0xffffa089566da4b0 15 | (void *)0xffffa089566da558 16 | (void *)0xffffa089566da570 17 | (void *)0xffffa089566da5b8 18 | (void *)0xffffa089566da5d0 19 | (void *)0xffffa089566da5e8 20 | (void *)0xffffa089566da678 21 | (void *)0xffffa089566da6a8 22 | (void *)0xffffa089566da7c8 23 | (void *)0xffffa089566da9d8 24 | (void *)0xffffa089566daa20 25 | (void *)0xffffa089566daa38 26 | (void *)0xffffa089566daaf8 27 | (void *)0xffffa089566dabd0 28 | (void *)0xffffa089566dac60 29 | (void *)0xffffa089566daca8 30 | (void *)0xffffa089566dad68 31 | (void *)0xffffa089566dae10 32 | (void *)0xffffa089566dae40 33 | (void *)0xffffa089566daeb8 34 | (void *)0xffffa089566daed0 35 | (void *)0xffffa089566daf00 36 | @#$ EXIT CODE $#@ 37 | 0 38 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/spl/spl_kmem_caches | filter 'obj.skc_name == "ddt_cache"' | walk: -------------------------------------------------------------------------------- 1 | (void *)0xffffa08937e80040 2 | (void *)0xffffa08937e86180 3 | (void *)0xffffa08937e8c2c0 4 | (void *)0xffffa08937e92400 5 | (void *)0xffffa08937e98540 6 | (void *)0xffffa08937e9e680 7 | (void *)0xffffa08937ea47c0 8 | (void *)0xffffa08937eaa900 9 | (void *)0xffffa08959cc0040 10 | (void *)0xffffa08959cc6180 11 | (void *)0xffffa08959ccc2c0 12 | (void *)0xffffa08959cd2400 13 | (void *)0xffffa08959cd8540 14 | (void *)0xffffa08959cde680 15 | (void *)0xffffa08959ce47c0 16 | (void *)0xffffa08959cea900 17 | (void *)0xffffa0895be80040 18 | (void *)0xffffa0895be86180 19 | (void *)0xffffa0895be8c2c0 20 | (void *)0xffffa0895be92400 21 | (void *)0xffffa0895be98540 22 | (void *)0xffffa0895be9e680 23 | (void *)0xffffa0895bea47c0 24 | (void *)0xffffa0895beaa900 25 | (void *)0xffffa08953680040 26 | (void *)0xffffa08953686180 27 | (void *)0xffffa0895368c2c0 28 | (void *)0xffffa08953692400 29 | (void *)0xffffa08953698540 30 | (void *)0xffffa0895369e680 31 | (void *)0xffffa089536a47c0 32 | (void *)0xffffa089536aa900 33 | (void *)0xffffa08953600040 34 | (void *)0xffffa08953606180 35 | (void *)0xffffa0895360c2c0 36 | (void *)0xffffa08953612400 37 | (void *)0xffffa08953618540 38 | (void *)0xffffa0895361e680 39 | (void *)0xffffa089536247c0 40 | (void *)0xffffa0895362a900 41 | (void *)0xffffa0895364c2c0 42 | (void *)0xffffa08953652400 43 | (void *)0xffffa08953658540 44 | (void *)0xffffa0895365e680 45 | (void *)0xffffa089536647c0 46 | (void *)0xffffa0895366a900 47 | @#$ EXIT CODE $#@ 48 | 0 49 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/zfs/dbuf | dbuf -l 1 | head | dbuf: -------------------------------------------------------------------------------- 1 | addr object lvl blkid holds os 2 | 0xffffa08954f98e10 25955 1 0 0 rpool/ROOT/delphix.gX9jjSh/root 3 | 0xffffa088c429f518 168157 1 0 0 rpool/ROOT/delphix.gX9jjSh/root 4 | 0xffffa08888c60870 168239 1 0 0 rpool/ROOT/delphix.gX9jjSh/root 5 | 0xffffa088d72262d0 168389 1 0 0 rpool/ROOT/delphix.gX9jjSh/root 6 | 0xffffa088ca1162d0 1730 1 0 0 rpool/ROOT/delphix.gX9jjSh/data 7 | 0xffffa088cdd51950 40457 1 0 0 rpool/ROOT/delphix.gX9jjSh/root 8 | 0xffffa08937e58168 168443 1 2 89 rpool/ROOT/delphix.gX9jjSh/root 9 | 0xffffa08937e593b0 166892 1 2 39 rpool/ROOT/delphix.gX9jjSh/root 10 | 0xffffa08954d437e8 0 1 5 139 rpool/ROOT/delphix.gX9jjSh/root 11 | 0xffffa088d346d3b0 168248 1 0 0 rpool/ROOT/delphix.gX9jjSh/root 12 | @#$ EXIT CODE $#@ 13 | 0 14 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/zfs/dbuf | head 1 | member db_blkptr | blkptr: -------------------------------------------------------------------------------- 1 | DVA[0]=<0:0x2cefd5e00:0x20000> 2 | [L0 ZFS plain file] fletcher4 uncompressed layer=0 unencrypted LE contiguous unique single 3 | size=0x20000L/0x20000P birth=1624L/1624P fill=1 4 | cksum=0x3feb86d3fa14:0xff98411222361a1:0x7cd8eb3816d141e1:0x2d65ae38a67197c7 5 | @#$ EXIT CODE $#@ 6 | 0 7 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/zfs/spa: -------------------------------------------------------------------------------- 1 | ADDR NAME 2 | ------------------------------------------------------------ 3 | 0xffffa0894e720000 data 4 | 0xffffa089413b8000 meta-domain 5 | 0xffffa08955c44000 rpool 6 | @#$ EXIT CODE $#@ 7 | 0 8 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/zfs/spa -H: -------------------------------------------------------------------------------- 1 | ADDR NAME 2 | ------------------------------------------------------------ 3 | 0xffffa0894e720000 data 4 | seg-size count 5 | -------- ----- 6 | 512.0B: 32 ******************************** 7 | 1.0KB: 27 *************************** 8 | 2.0KB: 32 ******************************** 9 | 4.0KB: 7 ******* 10 | 8.0KB: 1 * 11 | 16.0KB: 1 * 12 | 32.0KB: 0 13 | 64.0KB: 0 14 | 128.0KB: 0 15 | 256.0KB: 0 16 | 512.0KB: 0 17 | 1.0MB: 0 18 | 2.0MB: 0 19 | 4.0MB: 0 20 | 8.0MB: 0 21 | 16.0MB: 0 22 | 32.0MB: 0 23 | 64.0MB: 0 24 | 128.0MB: 0 25 | 256.0MB: 15 *************** 26 | Approx. Median: 192.0MB 27 | 0xffffa089413b8000 meta-domain 28 | seg-size count 29 | -------- ----- 30 | 1.0KB: 18 ****************** 31 | 2.0KB: 24 ************************ 32 | 4.0KB: 17 ***************** 33 | 8.0KB: 21 ********************* 34 | 16.0KB: 0 35 | 32.0KB: 0 36 | 64.0KB: 0 37 | 128.0KB: 0 38 | 256.0KB: 0 39 | 512.0KB: 0 40 | 1.0MB: 0 41 | 2.0MB: 0 42 | 4.0MB: 0 43 | 8.0MB: 0 44 | 16.0MB: 0 45 | 32.0MB: 0 46 | 64.0MB: 1 * 47 | 128.0MB: 4 **** 48 | Approx. Median: 92.0MB 49 | 0xffffa08955c44000 rpool 50 | ** No histogram data available ** 51 | @#$ EXIT CODE $#@ 52 | 0 53 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/zfs/spa -v: -------------------------------------------------------------------------------- 1 | ADDR NAME 2 | ------------------------------------------------------------ 3 | 0xffffa0894e720000 data 4 | ADDR STATE AUX DESCRIPTION 5 | ------------------------------------------------------------ 6 | 0xffffa089486fc000 HEALTHY NONE root 7 | 0xffffa08949ff4000 HEALTHY NONE mirror 8 | 0xffffa08948af8000 HEALTHY NONE /dev/sdb1 9 | 0xffffa08949ff8000 HEALTHY NONE /dev/sdc1 10 | - - - logs 11 | 0xffffa08949e58000 HEALTHY NONE /dev/sdd1 12 | 0xffffa089413b8000 meta-domain 13 | ADDR STATE AUX DESCRIPTION 14 | ------------------------------------------------------------ 15 | 0xffffa08953aa4000 HEALTHY NONE root 16 | 0xffffa08953aa8000 HEALTHY NONE raidz 17 | 0xffffa08953aac000 HEALTHY NONE /tmp/dks0 18 | 0xffffa08953ab0000 HEALTHY NONE /tmp/dks1 19 | 0xffffa08953ab4000 HEALTHY NONE /tmp/dks2 20 | - - - cache 21 | 0xffffa088ce7d0000 HEALTHY NONE /tmp/dks3 22 | 0xffffa08955c44000 rpool 23 | ADDR STATE AUX DESCRIPTION 24 | ------------------------------------------------------------ 25 | 0xffffa08952efc000 HEALTHY NONE root 26 | 0xffffa08953300000 HEALTHY NONE /dev/sda1 27 | @#$ EXIT CODE $#@ 28 | 0 29 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/zfs/spa data | member spa_normal_class.mc_histogram | zfs_histogram: -------------------------------------------------------------------------------- 1 | seg-size count 2 | -------- ----- 3 | 512.0B: 32 ******************************** 4 | 1.0KB: 27 *************************** 5 | 2.0KB: 32 ******************************** 6 | 4.0KB: 7 ******* 7 | 8.0KB: 1 * 8 | 16.0KB: 1 * 9 | 32.0KB: 0 10 | 64.0KB: 0 11 | 128.0KB: 0 12 | 256.0KB: 0 13 | 512.0KB: 0 14 | 1.0MB: 0 15 | 2.0MB: 0 16 | 4.0MB: 0 17 | 8.0MB: 0 18 | 16.0MB: 0 19 | 32.0MB: 0 20 | 64.0MB: 0 21 | 128.0MB: 0 22 | 256.0MB: 15 *************** 23 | Approx. Median: 192.0MB 24 | @#$ EXIT CODE $#@ 25 | 0 26 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/zfs/spa data | vdev | metaslab | filter 'obj.ms_loaded == 1' | head 1 | member ms_allocatable.rt_histogram | zhist: -------------------------------------------------------------------------------- 1 | seg-size count 2 | -------- ----- 3 | 1.0KB: 3 *** 4 | 2.0KB: 2 ** 5 | 4.0KB: 0 6 | 8.0KB: 0 7 | 16.0KB: 0 8 | 32.0KB: 0 9 | 64.0KB: 0 10 | 128.0KB: 0 11 | 256.0KB: 0 12 | 512.0KB: 0 13 | 1.0MB: 0 14 | 2.0MB: 0 15 | 4.0MB: 0 16 | 8.0MB: 0 17 | 16.0MB: 0 18 | 32.0MB: 0 19 | 64.0MB: 0 20 | 128.0MB: 0 21 | 256.0MB: 1 * 22 | Approx. Median: 192.0MB 23 | @#$ EXIT CODE $#@ 24 | 0 25 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/zfs/spa data | vdev | metaslab | filter 'obj.ms_loaded == 1' | head 1 | member ms_sm.sm_phys.smp_histogram | zhist: -------------------------------------------------------------------------------- 1 | seg-size count 2 | -------- ----- 3 | 1.0B: 1 * 4 | 2.0B: 6 ****** 5 | 4.0B: 1 * 6 | 8.0B: 0 7 | 16.0B: 0 8 | 32.0B: 0 9 | 64.0B: 0 10 | 128.0B: 0 11 | 256.0B: 0 12 | 512.0B: 0 13 | 1.0KB: 0 14 | 2.0KB: 0 15 | 4.0KB: 0 16 | 8.0KB: 0 17 | 16.0KB: 0 18 | 32.0KB: 0 19 | 64.0KB: 0 20 | 128.0KB: 0 21 | 256.0KB: 0 22 | 512.0KB: 1 * 23 | Approx. Median: 384.0KB 24 | @#$ EXIT CODE $#@ 25 | 0 26 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/zfs/spa data | vdev | metaslab | filter 'obj.ms_loaded == 1' | head 1 | member ms_sm.sm_phys.smp_histogram | zhist 9: -------------------------------------------------------------------------------- 1 | seg-size count 2 | -------- ----- 3 | 512.0B: 1 * 4 | 1.0KB: 6 ****** 5 | 2.0KB: 1 * 6 | 4.0KB: 0 7 | 8.0KB: 0 8 | 16.0KB: 0 9 | 32.0KB: 0 10 | 64.0KB: 0 11 | 128.0KB: 0 12 | 256.0KB: 0 13 | 512.0KB: 0 14 | 1.0MB: 0 15 | 2.0MB: 0 16 | 4.0MB: 0 17 | 8.0MB: 0 18 | 16.0MB: 0 19 | 32.0MB: 0 20 | 64.0MB: 0 21 | 128.0MB: 0 22 | 256.0MB: 1 * 23 | Approx. Median: 192.0MB 24 | @#$ EXIT CODE $#@ 25 | 0 26 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/zfs/spa rpool: -------------------------------------------------------------------------------- 1 | ADDR NAME 2 | ------------------------------------------------------------ 3 | 0xffffa08955c44000 rpool 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/zfs/spa | head 1 | deref |member spa_uberblock | member ub_rootbp | blkptr: -------------------------------------------------------------------------------- 1 | DVA[0]=<0:0x80001e00:0x200> 2 | DVA[1]=<0:0xa0001e00:0x200> 3 | DVA[2]=<0:0x10000da00:0x200> 4 | [L0 DMU objset] fletcher4 lz4 layer=0 unencrypted LE contiguous unique triple 5 | size=0x1000L/0x200P birth=609L/609P fill=67 6 | cksum=0x98a43f544:0x3eab35f140c:0xd164e4328324:0x1da8f37ef09087 7 | @#$ EXIT CODE $#@ 8 | 0 9 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/zfs/spa | head 1 | spa: -------------------------------------------------------------------------------- 1 | ADDR NAME 2 | ------------------------------------------------------------ 3 | 0xffffa0894e720000 data 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/zfs/spa | pp: -------------------------------------------------------------------------------- 1 | ADDR NAME 2 | ------------------------------------------------------------ 3 | 0xffffa0894e720000 data 4 | 0xffffa089413b8000 meta-domain 5 | 0xffffa08955c44000 rpool 6 | @#$ EXIT CODE $#@ 7 | 0 8 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/zfs/spa | vdev: -------------------------------------------------------------------------------- 1 | ADDR STATE AUX DESCRIPTION 2 | ------------------------------------------------------------ 3 | 0xffffa089486fc000 HEALTHY NONE root 4 | 0xffffa08949ff4000 HEALTHY NONE mirror 5 | 0xffffa08948af8000 HEALTHY NONE /dev/sdb1 6 | 0xffffa08949ff8000 HEALTHY NONE /dev/sdc1 7 | - - - logs 8 | 0xffffa08949e58000 HEALTHY NONE /dev/sdd1 9 | 0xffffa08953aa4000 HEALTHY NONE root 10 | 0xffffa08953aa8000 HEALTHY NONE raidz 11 | 0xffffa08953aac000 HEALTHY NONE /tmp/dks0 12 | 0xffffa08953ab0000 HEALTHY NONE /tmp/dks1 13 | 0xffffa08953ab4000 HEALTHY NONE /tmp/dks2 14 | - - - cache 15 | 0xffffa088ce7d0000 HEALTHY NONE /tmp/dks3 16 | 0xffffa08952efc000 HEALTHY NONE root 17 | 0xffffa08953300000 HEALTHY NONE /dev/sda1 18 | @#$ EXIT CODE $#@ 19 | 0 20 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/zfs/spa | vdev | pp: -------------------------------------------------------------------------------- 1 | ADDR STATE AUX DESCRIPTION 2 | ------------------------------------------------------------ 3 | 0xffffa089486fc000 HEALTHY NONE root 4 | 0xffffa08949ff4000 HEALTHY NONE mirror 5 | 0xffffa08948af8000 HEALTHY NONE /dev/sdb1 6 | 0xffffa08949ff8000 HEALTHY NONE /dev/sdc1 7 | - - - logs 8 | 0xffffa08949e58000 HEALTHY NONE /dev/sdd1 9 | 0xffffa08953aa4000 HEALTHY NONE root 10 | 0xffffa08953aa8000 HEALTHY NONE raidz 11 | 0xffffa08953aac000 HEALTHY NONE /tmp/dks0 12 | 0xffffa08953ab0000 HEALTHY NONE /tmp/dks1 13 | 0xffffa08953ab4000 HEALTHY NONE /tmp/dks2 14 | - - - cache 15 | 0xffffa088ce7d0000 HEALTHY NONE /tmp/dks3 16 | 0xffffa08952efc000 HEALTHY NONE root 17 | 0xffffa08953300000 HEALTHY NONE /dev/sda1 18 | @#$ EXIT CODE $#@ 19 | 0 20 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/zfs/zfs_dbgmsg | tail 5 | zfs_dbgmsg: -------------------------------------------------------------------------------- 1 | mmp.c:249:mmp_thread_start(): MMP thread started pool 'meta-domain' gethrtime 284829459463 2 | spa_history.c:306:spa_history_log_sync(): command: zpool create meta-domain raidz /tmp/dks0 /tmp/dks1 /tmp/dks2 cache /tmp/dks3 3 | spa_history.c:314:spa_history_log_sync(): txg 8 create meta-domain/fs-tmp (id 69) 4 | spa_history.c:339:spa_history_log_sync(): ioctl create 5 | spa_history.c:306:spa_history_log_sync(): command: zfs create meta-domain/fs-tmp 6 | @#$ EXIT CODE $#@ 7 | 0 8 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/zfs/zio: -------------------------------------------------------------------------------- 1 | ADDRESS TYPE STAGE WAITER TIME_ELAPSED 2 | 0xffffa0884093c9c0 NULL OPEN - - 3 | 0xffffa08847e144e0 NULL OPEN - - 4 | 0xffffa0888c750ea0 NULL OPEN - - 5 | 0xffffa088c7b21d40 NULL OPEN - - 6 | 0xffffa088cf951380 NULL OPEN - - 7 | 0xffffa088cf9530c0 NULL OPEN - - 8 | 0xffffa08920b584e0 NULL OPEN - - 9 | 0xffffa08920b59380 NULL OPEN - - 10 | 0xffffa08920b59860 NULL OPEN - - 11 | 0xffffa08920b5ba80 NULL OPEN - - 12 | 0xffffa0893677f5a0 NULL OPEN - - 13 | 0xffffa089469184e0 NULL OPEN - - 14 | 0xffffa0894af25860 NULL OPEN - - 15 | 0xffffa0894af275a0 NULL OPEN - - 16 | 0xffffa089533a2220 NULL OPEN - - 17 | 0xffffa089533a2700 NULL OPEN - - 18 | 0xffffa0895f2e9860 NULL OPEN - - 19 | 0xffffa0895f2ec9c0 NULL OPEN - - 20 | @#$ EXIT CODE $#@ 21 | 0 22 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.201912060006/zfs/zio -r: -------------------------------------------------------------------------------- 1 | ADDRESS TYPE STAGE WAITER TIME_ELAPSED 2 | 0xffffa0884093c9c0 NULL OPEN - - 3 | 0xffffa08847e144e0 NULL OPEN - - 4 | 0xffffa0888c750ea0 NULL OPEN - - 5 | 0xffffa088c7b21d40 NULL OPEN - - 6 | 0xffffa088cf951380 NULL OPEN - - 7 | 0xffffa088cf9530c0 NULL OPEN - - 8 | 0xffffa08920b584e0 NULL OPEN - - 9 | 0xffffa08920b59380 NULL OPEN - - 10 | 0xffffa08920b59860 NULL OPEN - - 11 | 0xffffa08920b5ba80 NULL OPEN - - 12 | 0xffffa0893677f5a0 NULL OPEN - - 13 | 0xffffa089469184e0 NULL OPEN - - 14 | 0xffffa0894af25860 NULL OPEN - - 15 | 0xffffa0894af275a0 NULL OPEN - - 16 | 0xffffa089533a2220 NULL OPEN - - 17 | 0xffffa089533a2700 NULL OPEN - - 18 | 0xffffa0895f2e9860 NULL OPEN - - 19 | 0xffffa0895f2ec9c0 NULL OPEN - - 20 | @#$ EXIT CODE $#@ 21 | 0 22 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/addr bogus: -------------------------------------------------------------------------------- 1 | sdb: addr: symbol not found: bogus 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/addr fget | deref: -------------------------------------------------------------------------------- 1 | sdb: deref: cannot dereference function pointer 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/addr jiffies | deref: -------------------------------------------------------------------------------- 1 | (volatile unsigned long)4295291579 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/addr jiffies | deref | deref: -------------------------------------------------------------------------------- 1 | sdb: deref: 'volatile unsigned long' is not a valid pointer type 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/addr spa_namespace_avl: -------------------------------------------------------------------------------- 1 | (avl_tree_t *)spa_namespace_avl+0x0 = 0xffffffffc08934a0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/addr spa_namespace_avl | deref: -------------------------------------------------------------------------------- 1 | (avl_tree_t){ 2 | .avl_root = (struct avl_node *)0xffff9ac658924108, 3 | .avl_compar = (int (*)(const void *, const void *))spa_name_compare+0x0 = 0xffffffffc06673f0, 4 | .avl_offset = (size_t)264, 5 | .avl_numnodes = (ulong_t)3, 6 | } 7 | @#$ EXIT CODE $#@ 8 | 0 9 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/addr spa_namespace_avl | deref | addr: -------------------------------------------------------------------------------- 1 | (avl_tree_t *)spa_namespace_avl+0x0 = 0xffffffffc08934a0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/addr spa_namespace_avl | deref | print: -------------------------------------------------------------------------------- 1 | (avl_tree_t){ 2 | .avl_root = (struct avl_node *)0xffff9ac658924108, 3 | .avl_compar = (int (*)(const void *, const void *))spa_name_compare+0x0 = 0xffffffffc06673f0, 4 | .avl_offset = (size_t)264, 5 | .avl_numnodes = (ulong_t)3, 6 | } 7 | @#$ EXIT CODE $#@ 8 | 0 9 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/addr spa_namespace_avl | member avl_root->avl_child[0]->avl_child: -------------------------------------------------------------------------------- 1 | (struct avl_node *[2]){} 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/addr spa_namespace_avl | member avl_root->avl_child[1: -------------------------------------------------------------------------------- 1 | sdb: member: incomplete array expression: please use something of the format 'array_name[index]' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/addr spa_namespace_avl | member avl_root->avl_child[3]: -------------------------------------------------------------------------------- 1 | warning: member: index out of bounds for array of type 'struct avl_node *[2]' (requested index: 3) 2 | (struct avl_node *)0xffff9ac64ca9a360 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/addr spa_namespace_avl | member avl_root->avl_child[a]: -------------------------------------------------------------------------------- 1 | sdb: member: incorrect index: 'a' is not a number 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/addr spa_namespace_avl | member avl_root.avl_child[0].avl_child: -------------------------------------------------------------------------------- 1 | (struct avl_node *[2]){} 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/addr spa_namespace_avl | member avl_root.avl_pcb avl_size: -------------------------------------------------------------------------------- 1 | (uintptr_t)1 2 | sdb: member: 'avl_tree_t' has no member 'avl_size' 3 | @#$ EXIT CODE $#@ 4 | 1 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/addr spa_namespace_avl | print: -------------------------------------------------------------------------------- 1 | (avl_tree_t *)spa_namespace_avl+0x0 = 0xffffffffc08934a0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/addr spa_namespace_avl | print --RAW: -------------------------------------------------------------------------------- 1 | 0xffffffffc08934a0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/addr spa_namespace_avl | print -d: -------------------------------------------------------------------------------- 1 | *(avl_tree_t *)(spa_namespace_avl+0x0 = 0xffffffffc08934a0) = { 2 | .avl_root = (struct avl_node *)0xffff9ac658924108, 3 | .avl_compar = (int (*)(const void *, const void *))spa_name_compare+0x0 = 0xffffffffc06673f0, 4 | .avl_offset = (size_t)264, 5 | .avl_numnodes = (ulong_t)3, 6 | } 7 | @#$ EXIT CODE $#@ 8 | 0 9 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/addr spa_namespace_avl | print -n: -------------------------------------------------------------------------------- 1 | (avl_tree_t *)0xffffffffc08934a0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/addr spa_namespace_avl | print -nr: -------------------------------------------------------------------------------- 1 | 0xffffffffc08934a0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/addr spa_namespace_avl | print -r: -------------------------------------------------------------------------------- 1 | spa_namespace_avl+0x0 = 0xffffffffc08934a0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/echo 0x0 0x1 0x2 | filter 'obj < 1': -------------------------------------------------------------------------------- 1 | (void *)0x0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/echo 0x0 0x1 0x2 | filter 'obj <= 1': -------------------------------------------------------------------------------- 1 | (void *)0x0 2 | (void *)0x1 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/echo 0x0 0x1 0x2 | filter 'obj == 1': -------------------------------------------------------------------------------- 1 | (void *)0x1 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/echo 0x0 0x1 0x2 | filter 'obj > 1': -------------------------------------------------------------------------------- 1 | (void *)0x2 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/echo 0x0 0x1 0x2 | filter 'obj >= 1': -------------------------------------------------------------------------------- 1 | (void *)0x1 2 | (void *)0x2 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/echo 0x0 | addr spa_namespace_avl | echo 0x1 | cast avl_tree_t * | member avl_root: -------------------------------------------------------------------------------- 1 | sdb: member: invalid memory access: addresss 0x0 2 | (struct avl_node *)0xffff9ac658924108 3 | sdb: member: invalid memory access: addresss 0x1 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/echo 0x0 | cast int * | array 1: -------------------------------------------------------------------------------- 1 | sdb: array: invalid memory access: addresss 0x0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/echo 0x0 | cast int * | deref: -------------------------------------------------------------------------------- 1 | sdb: deref: invalid memory access: addresss 0x0 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/echo 0x0 | cast spa_t * | member spa_name: -------------------------------------------------------------------------------- 1 | sdb: member: invalid memory access: addresss 0x0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/echo 0x0 | cast void * | array 1: -------------------------------------------------------------------------------- 1 | sdb: array: can't walk pointer array of incomplete type 'void' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/echo 0x0 | filter 'obj == 0': -------------------------------------------------------------------------------- 1 | (void *)0x0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/echo 0x0 | filter 'obj == 1': -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/echo 0x1 | filter 'obj == obj': -------------------------------------------------------------------------------- 1 | (void *)0x1 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/echo 0x10 | cast int * | deref: -------------------------------------------------------------------------------- 1 | sdb: deref: invalid memory access: addresss 0x10 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/echo 0x1234 | cast dmu_recv_cookie_t * | member drc_os: -------------------------------------------------------------------------------- 1 | sdb: member: invalid memory access: addresss 0x12c4 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/echo 0xffff90cc11b28000 | deref: -------------------------------------------------------------------------------- 1 | sdb: deref: cannot dereference a void pointer 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/echo 1 | echo 2 | sum: -------------------------------------------------------------------------------- 1 | (uint64_t)3 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/echo 1234 | cast int | array: -------------------------------------------------------------------------------- 1 | sdb: array: 'int' is not an array nor a pointer type 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/filter 'obj == 1': -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/member no_object: -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/ptype $abc: -------------------------------------------------------------------------------- 1 | sdb: ptype: input '$abc' is not a valid type name 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/ptype 'a b c': -------------------------------------------------------------------------------- 1 | sdb: ptype: input 'a b c' is not a valid type name 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/ptype 'bogus union': -------------------------------------------------------------------------------- 1 | sdb: ptype: input 'bogus union' is not a valid type name 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/ptype 'struct bogus': -------------------------------------------------------------------------------- 1 | sdb: ptype: couldn't find type 'struct bogus' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/ptype 'struct union': -------------------------------------------------------------------------------- 1 | sdb: ptype: input 'struct union' is not a valid type name 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/ptype 'struct': -------------------------------------------------------------------------------- 1 | sdb: ptype: skip keyword 'struct' or quote your type "struct " 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/ptype 'union struct struct': -------------------------------------------------------------------------------- 1 | sdb: ptype: input 'union struct struct' is not a valid type name 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/ptype 2abc: -------------------------------------------------------------------------------- 1 | sdb: ptype: input '2abc' is not a valid type name 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/ptype @: -------------------------------------------------------------------------------- 1 | sdb: ptype: input '@' is not a valid type name 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/ptype bogus_t: -------------------------------------------------------------------------------- 1 | sdb: ptype: couldn't find typedef, struct, enum, nor union named 'bogus_t' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/ptype spa_t: -------------------------------------------------------------------------------- 1 | typedef struct spa spa_t 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/ptype struct spa: -------------------------------------------------------------------------------- 1 | sdb: ptype: skip keyword 'struct' or quote your type "struct " 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/ptype thread_union: -------------------------------------------------------------------------------- 1 | union thread_union { 2 | struct task_struct task; 3 | unsigned long stack[2048]; 4 | } 5 | @#$ EXIT CODE $#@ 6 | 0 7 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/ptype zfs_case: -------------------------------------------------------------------------------- 1 | enum zfs_case { 2 | ZFS_CASE_SENSITIVE = 0, 3 | ZFS_CASE_INSENSITIVE = 1, 4 | ZFS_CASE_MIXED = 2, 5 | } 6 | @#$ EXIT CODE $#@ 7 | 0 8 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/sizeof bogus: -------------------------------------------------------------------------------- 1 | sdb: sizeof: couldn't find typedef, struct, enum, nor union named 'bogus' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/sizeof size_t: -------------------------------------------------------------------------------- 1 | (size_t)8 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/sizeof spa vdev: -------------------------------------------------------------------------------- 1 | (size_t)9792 2 | (size_t)15800 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/sizeof struct spa: -------------------------------------------------------------------------------- 1 | sdb: sizeof: skip keyword 'struct' or quote your type "struct " 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/sizeof task_struct: -------------------------------------------------------------------------------- 1 | (size_t)9280 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa rpool | filter 'obj.bogus == 1624': -------------------------------------------------------------------------------- 1 | sdb: filter: 'spa_t' has no member 'bogus' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa rpool | filter 'obj.spa_syncing_txg < 1624' | member spa_name: -------------------------------------------------------------------------------- 1 | (char [256])"rpool" 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa rpool | filter 'obj.spa_syncing_txg <= 1624' | member spa_name: -------------------------------------------------------------------------------- 1 | (char [256])"rpool" 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa rpool | filter 'obj.spa_syncing_txg == 1624' | member spa_name: -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa rpool | filter 'obj.spa_syncing_txg > 1624' | member spa_name: -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa rpool | filter 'obj.spa_syncing_txg >= 1624' | member spa_name: -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa rpool | filter 'obj.spa_syncing_txg bogus_op 1624': -------------------------------------------------------------------------------- 1 | sdb: filter: invalid input: comparison operator is missing 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa | deref | sum: -------------------------------------------------------------------------------- 1 | sdb: sum: 'struct spa' is not an integer type 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa | head 1 | member spa_name[1] | print: -------------------------------------------------------------------------------- 1 | (char)98 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa | head 1 | member spa_name[1] | print -c: -------------------------------------------------------------------------------- 1 | (char)'b' 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa | head 1 | member spa_name[1] | print -cr: -------------------------------------------------------------------------------- 1 | 'b' 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa | head 1 | member spa_zio_taskq[0][0].stqs_taskq: -------------------------------------------------------------------------------- 1 | (taskq_t **)0xffff9ac64543de20 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa | head 1 | member spa_zio_taskq[0][0].stqs_taskq[0]: -------------------------------------------------------------------------------- 1 | (taskq_t *)0xffff9ac5e566ca00 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa | member spa_ubsync->ub_rootbp: -------------------------------------------------------------------------------- 1 | sdb: member: 'typedef struct uberblock uberblock_t' is a struct - use the dot(.) notation for member access 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa | member spa_ubsync.bogus: -------------------------------------------------------------------------------- 1 | sdb: member: 'uberblock_t' has no member 'bogus' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa | member spa_ubsync.ub_rootbp.blk_dva[0].dva_word: -------------------------------------------------------------------------------- 1 | (uint64_t [2]){ 1, 239589 } 2 | (uint64_t [2]){ 1, 40551803 } 3 | (uint64_t [2]){ 1, 12298524 } 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa | member spa_zio_taskq[0][0].stqs_taskq | array: -------------------------------------------------------------------------------- 1 | sdb: array: 'taskq_t **' is a pointer - please specify the number of elements 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa | member spa_zio_taskq[0][0].stqs_taskq | array 2: -------------------------------------------------------------------------------- 1 | (taskq_t *)0xffff9ac5e566ca00 2 | (taskq_t *)0x1c4400747865742e 3 | (taskq_t *)0xffff9ac6589f0a00 4 | (taskq_t *)0x656c6269736976 5 | (taskq_t *)0xffff9ac47de67400 6 | (taskq_t *)0xffff9ac47de67a00 7 | @#$ EXIT CODE $#@ 8 | 0 9 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa | member spa_zio_taskq[0][0].stqs_taskq->: -------------------------------------------------------------------------------- 1 | sdb: member: no identifier specified after -> 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa | member spa_zio_taskq[0][0].stqs_taskq.: -------------------------------------------------------------------------------- 1 | sdb: member: no identifier specified after . 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa | range_tree: -------------------------------------------------------------------------------- 1 | sdb: range_tree: expected input of type range_tree_t *, but received type spa_t * 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/spa | vdev | metaslab | deref | sizeof | sum: -------------------------------------------------------------------------------- 1 | (uint64_t)352240 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/sum: -------------------------------------------------------------------------------- 1 | (uint64_t)0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/thread | filter "obj.comm == \"bogus\"" | thread: -------------------------------------------------------------------------------- 1 | task state pid prio comm cmdline 2 | ---- ----- --- ---- ---- ------- 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/threads | deref | sizeof | sum: -------------------------------------------------------------------------------- 1 | (uint64_t)10495680 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/threads | sizeof | sum: -------------------------------------------------------------------------------- 1 | (uint64_t)9048 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/zfs_dbgmsg | filter '== obj': -------------------------------------------------------------------------------- 1 | sdb: filter: invalid input: left hand side of expression is missing 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/zfs_dbgmsg | filter 'obj ==': -------------------------------------------------------------------------------- 1 | sdb: filter: invalid input: right hand side of expression is missing 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/zfs_dbgmsg | filter 'obj': -------------------------------------------------------------------------------- 1 | sdb: filter: invalid input: comparison operator is missing 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/zfs_dbgmsg | head 1 | member zdm_msg | array: -------------------------------------------------------------------------------- 1 | sdb: array: zero-length array: please specify number of elements 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/zfs_dbgmsg | head 1 | member zdm_msg | array -1: -------------------------------------------------------------------------------- 1 | warning: operating on zero-length array 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/zfs_dbgmsg | head 1 | member zdm_msg | array 0: -------------------------------------------------------------------------------- 1 | warning: operating on zero-length array 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/zfs_dbgmsg | head 1 | member zdm_msg | array 2: -------------------------------------------------------------------------------- 1 | warning: operating on zero-length array 2 | (char)115 3 | (char)112 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/core/zfs_dbgmsg | head 1 | member zdm_msg[2]: -------------------------------------------------------------------------------- 1 | warning: member: index out of bounds for array of type 'char []' (requested index: 2) 2 | (char)97 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/addr init_task | member comm | addr | container_of bogus_type comm | cast void *: -------------------------------------------------------------------------------- 1 | sdb: container_of: couldn't find typedef, struct, enum, nor union named 'bogus_type' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/addr init_task | member comm | addr | container_of int comm | cast void *: -------------------------------------------------------------------------------- 1 | sdb: container_of: int is not a struct nor a typedef to a struct 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/addr init_task | member comm | addr | container_of pid comm | cast void *: -------------------------------------------------------------------------------- 1 | sdb: container_of: 'struct pid' has no member 'comm' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/addr init_task | member comm | addr | container_of task_struct bogus_member | cast void *: -------------------------------------------------------------------------------- 1 | sdb: container_of: 'struct task_struct' has no member 'bogus_member' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/addr init_task | member comm | addr | container_of task_struct comm | cast void *: -------------------------------------------------------------------------------- 1 | (void *)init_task+0x0 = 0xffffffff9bc13780 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/addr init_task | member comm | container_of task_struct comm | cast void *: -------------------------------------------------------------------------------- 1 | sdb: container_of: container_of() argument must be a pointer, not 'char [16]' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/addr init_task | member thread_pid.tasks[3] | lxhlist bogus_type pid_links[3] | member comm: -------------------------------------------------------------------------------- 1 | sdb: lxhlist: couldn't find typedef, struct, enum, nor union named 'bogus_type' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/addr init_task | member thread_pid.tasks[3] | lxhlist task_struct bogus_member | member comm: -------------------------------------------------------------------------------- 1 | sdb: lxhlist: 'struct task_struct' has no member 'bogus_member' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/addr modules | lxlist bogus_type list | member name: -------------------------------------------------------------------------------- 1 | sdb: lxlist: couldn't find typedef, struct, enum, nor union named 'bogus_type' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/addr modules | lxlist module bogus_member | member name: -------------------------------------------------------------------------------- 1 | sdb: lxlist: 'struct module' has no member 'bogus_member' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/addr modules | lxlist module list | member name: -------------------------------------------------------------------------------- 1 | (char [56])"target_core_user" 2 | (char [56])"uio" 3 | (char [56])"target_core_pscsi" 4 | (char [56])"target_core_file" 5 | (char [56])"target_core_iblock" 6 | (char [56])"connstat" 7 | (char [56])"xt_cgroup" 8 | (char [56])"iptable_filter" 9 | (char [56])"bpfilter" 10 | (char [56])"xsk_diag" 11 | (char [56])"tcp_diag" 12 | (char [56])"udp_diag" 13 | (char [56])"raw_diag" 14 | (char [56])"inet_diag" 15 | (char [56])"unix_diag" 16 | (char [56])"af_packet_diag" 17 | (char [56])"netlink_diag" 18 | (char [56])"iscsi_target_mod" 19 | (char [56])"rpcsec_gss_krb5" 20 | (char [56])"nfsv4" 21 | (char [56])"nfs" 22 | (char [56])"fscache" 23 | (char [56])"target_core_mod" 24 | (char [56])"overlay" 25 | (char [56])"isst_if_common" 26 | (char [56])"crct10dif_pclmul" 27 | (char [56])"crc32_pclmul" 28 | (char [56])"ghash_clmulni_intel" 29 | (char [56])"aesni_intel" 30 | (char [56])"crypto_simd" 31 | (char [56])"cryptd" 32 | (char [56])"glue_helper" 33 | (char [56])"rapl" 34 | (char [56])"serio_raw" 35 | (char [56])"binfmt_misc" 36 | (char [56])"nfsd" 37 | (char [56])"auth_rpcgss" 38 | (char [56])"sch_fq_codel" 39 | (char [56])"nfs_acl" 40 | (char [56])"lockd" 41 | (char [56])"grace" 42 | (char [56])"sunrpc" 43 | (char [56])"ramoops" 44 | (char [56])"reed_solomon" 45 | (char [56])"efi_pstore" 46 | (char [56])"ip_tables" 47 | (char [56])"x_tables" 48 | (char [56])"autofs4" 49 | (char [56])"zfs" 50 | (char [56])"spl" 51 | (char [56])"raid10" 52 | (char [56])"raid456" 53 | (char [56])"async_raid6_recov" 54 | (char [56])"async_memcpy" 55 | (char [56])"async_pq" 56 | (char [56])"async_xor" 57 | (char [56])"xor" 58 | (char [56])"async_tx" 59 | (char [56])"raid6_pq" 60 | (char [56])"libcrc32c" 61 | (char [56])"raid1" 62 | (char [56])"raid0" 63 | (char [56])"multipath" 64 | (char [56])"linear" 65 | (char [56])"ena" 66 | (char [56])"i2c_piix4" 67 | (char [56])"i2c_core" 68 | @#$ EXIT CODE $#@ 69 | 0 70 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/addr spa_namespace_avl | cpu_counter_sum: -------------------------------------------------------------------------------- 1 | sdb: cpu_counter_sum: input is not a percpu_counter 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/addr tcp_orphan_count | cpu_counter_sum: -------------------------------------------------------------------------------- 1 | (s64)0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/addr tcp_sockets_allocated | cpu_counter_sum: -------------------------------------------------------------------------------- 1 | (s64)164 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/addr vm_committed_as | cpu_counter_sum: -------------------------------------------------------------------------------- 1 | (s64)1058735 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/addr vmap_area_root | rbtree bogus_type rb_node: -------------------------------------------------------------------------------- 1 | sdb: rbtree: couldn't find typedef, struct, enum, nor union named 'bogus_type' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/addr vmap_area_root | rbtree vmap_area bogus_member: -------------------------------------------------------------------------------- 1 | sdb: rbtree: 'struct vmap_area' has no member 'bogus_member' 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/crashed_thread: -------------------------------------------------------------------------------- 1 | TASK_STRUCT STATE COUNT 2 | ========================================== 3 | 0xffff9ac5b7539e80 RUNNING 1 4 | __crash_kexec+0x9d 5 | __crash_kexec+0x9d 6 | panic+0x11d 7 | 0xffffffff9ac0c9e5+0x0 8 | __handle_sysrq.cold+0x48 9 | write_sysrq_trigger+0x28 10 | proc_reg_write+0x43 11 | __vfs_write+0x1b 12 | vfs_write+0xb9 13 | vfs_write+0xb9 14 | ksys_write+0x67 15 | __x64_sys_write+0x1a 16 | __x64_sys_write+0x1a 17 | __x64_sys_write+0x1a 18 | do_syscall_64+0x57 19 | entry_SYSCALL_64+0x94 20 | 21 | @#$ EXIT CODE $#@ 22 | 0 23 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/crashed_thread | stacks: -------------------------------------------------------------------------------- 1 | TASK_STRUCT STATE COUNT 2 | ========================================== 3 | 0xffff9ac5b7539e80 RUNNING 1 4 | __crash_kexec+0x9d 5 | __crash_kexec+0x9d 6 | panic+0x11d 7 | 0xffffffff9ac0c9e5+0x0 8 | __handle_sysrq.cold+0x48 9 | write_sysrq_trigger+0x28 10 | proc_reg_write+0x43 11 | __vfs_write+0x1b 12 | vfs_write+0xb9 13 | vfs_write+0xb9 14 | ksys_write+0x67 15 | __x64_sys_write+0x1a 16 | __x64_sys_write+0x1a 17 | __x64_sys_write+0x1a 18 | do_syscall_64+0x57 19 | entry_SYSCALL_64+0x94 20 | 21 | @#$ EXIT CODE $#@ 22 | 0 23 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/dbuf |head 1 |deref |member db_buf |whatis: -------------------------------------------------------------------------------- 1 | 0xffff9ac5afd51380 is allocated from arc_buf_t 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/dmesg -l 3: -------------------------------------------------------------------------------- 1 | [ 2.310155] ena 0000:00:05.0: LLQ is not supported Fallback to host mode policy. 2 | [ 42.095750] db_root: cannot open: /etc/target 3 | [ 1598.032724] Kernel panic - not syncing: sysrq triggered crash 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/echo 0x0 | cpu_counter_sum: -------------------------------------------------------------------------------- 1 | sdb: cpu_counter_sum: invalid memory access: could not read memory from kdump: Cannot get page I/O address: PDPT table not present: p4d[0] = 0x0: 0x8 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/echo 0xffffa089669edc00 | stack: -------------------------------------------------------------------------------- 1 | TASK_STRUCT STATE COUNT 2 | ========================================== 3 | sdb: stack: invalid memory access: could not read memory from kdump: Cannot get page I/O address: PDPT table not present: p4d[321] = 0x0: 0xffffa089669edc10 4 | @#$ EXIT CODE $#@ 5 | 1 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/find_task 1: -------------------------------------------------------------------------------- 1 | (struct task_struct *)0xffff9ac6605e5b80 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/find_task 1 2: -------------------------------------------------------------------------------- 1 | (struct task_struct *)0xffff9ac6605e5b80 2 | (struct task_struct *)0xffff9ac6605e0000 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/find_task 1 2 | member comm: -------------------------------------------------------------------------------- 1 | (char [16])"systemd" 2 | (char [16])"kthreadd" 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/find_task 1 | fget 1 4: -------------------------------------------------------------------------------- 1 | (struct file *)0xffff9ac65e957500 2 | (struct file *)0xffff9ac65edad900 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/find_task 1 | fget 1 4 123123: -------------------------------------------------------------------------------- 1 | (struct file *)0xffff9ac65e957500 2 | (struct file *)0xffff9ac65edad900 3 | (struct file *)0x0 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/pid 1: -------------------------------------------------------------------------------- 1 | (struct pid *)0xffff9ac660552000 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/pid 1 10 12437: -------------------------------------------------------------------------------- 1 | (struct pid *)0xffff9ac660552000 2 | (struct pid *)0xffff9ac660552980 3 | (struct pid *)0x0 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/slabs -o bogus: -------------------------------------------------------------------------------- 1 | sdb: slabs: 'bogus' is not a valid field 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/slabs -s active_objs -o util: -------------------------------------------------------------------------------- 1 | sdb: slabs: invalid input: 'active_objs' is not in field set (util) 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/slabs -s bogus: -------------------------------------------------------------------------------- 1 | sdb: slabs: invalid input: 'bogus' is not in field set (name, entry_size, active_objs, active_memory, 2 | total_memory, util) 3 | @#$ EXIT CODE $#@ 4 | 1 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/slabs | filter 'obj.name == "UNIX"' | slub_cache | count: -------------------------------------------------------------------------------- 1 | (unsigned long long)0 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/slabs | filter 'obj.name == "dnode_t"' |walk | head 6056 | tail 1| cast dnode_t * | deref |member dn_phys |member dn_blkptr[0] |blkptr: -------------------------------------------------------------------------------- 1 | DVA[0]=<0:0x50ad98800:0x600> 2 | [L0 ZFS plain file] fletcher4 lzjb layer=0 unencrypted LE contiguous unique single 3 | size=0xa00L/0x600P birth=691L/691P fill=1 4 | cksum=0x50b2435bac:0x4877d83d80e7:0x259e03cbed157d:0xe4d625e1f14d8cc 5 | @#$ EXIT CODE $#@ 6 | 0 7 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/slabs | filter 'obj.name == "dnode_t"' |walk | tail 8 | head 1 | cast dnode_t * | deref |member dn_phys |member dn_blkptr[0] |blkptr: -------------------------------------------------------------------------------- 1 | DVA[0]=<0:0xe01bd200:0x2e00> 2 | [L0 ZFS plain file] fletcher4 lzjb layer=0 unencrypted LE contiguous unique single 3 | size=0x8e00L/0x2e00P birth=25L/25P fill=1 4 | cksum=0x2b4705c4d19:0xe6eacc837fede:0x3376b31cb9e47ade:0x6759b6b5446e1229 5 | @#$ EXIT CODE $#@ 6 | 0 7 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu: -------------------------------------------------------------------------------- 1 | (struct kmem_cache_cpu *)0xffff9ac679634040 2 | (struct kmem_cache_cpu *)0xffff9ac679734040 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 0: -------------------------------------------------------------------------------- 1 | (struct kmem_cache_cpu *)0xffff9ac679634040 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 0 1: -------------------------------------------------------------------------------- 1 | (struct kmem_cache_cpu *)0xffff9ac679634040 2 | (struct kmem_cache_cpu *)0xffff9ac679734040 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 0 2 1: -------------------------------------------------------------------------------- 1 | (struct kmem_cache_cpu *)0xffff9ac679634040 2 | sdb: percpu: available CPUs [0-1] - requested CPU 2 3 | @#$ EXIT CODE $#@ 4 | 1 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 1: -------------------------------------------------------------------------------- 1 | (struct kmem_cache_cpu *)0xffff9ac679734040 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 100: -------------------------------------------------------------------------------- 1 | sdb: percpu: available CPUs [0-1] - requested CPU 100 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 2: -------------------------------------------------------------------------------- 1 | sdb: percpu: available CPUs [0-1] - requested CPU 2 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/slabs | filter 'obj.name == "kmalloc-8"' | member cpu_slab | percpu 3: -------------------------------------------------------------------------------- 1 | sdb: percpu: available CPUs [0-1] - requested CPU 3 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/slabs | filter 'obj.name == "zio_cache"' | slub_cache | count: -------------------------------------------------------------------------------- 1 | (unsigned long long)1607 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/slabs | head 2 | slabs: -------------------------------------------------------------------------------- 1 | name entry_size active_objs active_memory total_memory util 2 | -------------------------- ---------- ----------- ------------- ------------ ---- 3 | vdev_object_store_io_cache 32 4608 144.0KB 144.0KB 100 4 | ext4_groupinfo_4k 144 84 11.8KB 11.8KB 100 5 | @#$ EXIT CODE $#@ 6 | 0 7 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/stacks -c bogus: -------------------------------------------------------------------------------- 1 | sdb: stacks: symbol 'bogus' does not exist 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/stacks -c spa_sync: -------------------------------------------------------------------------------- 1 | TASK_STRUCT STATE COUNT 2 | ========================================== 3 | 0xffff9ac5bb82db80 UNINTERRUPTIBLE 1 4 | __schedule+0x2de 5 | __schedule+0x2de 6 | schedule+0x42 7 | schedule_timeout+0x8a 8 | io_schedule_timeout+0x1e 9 | __cv_timedwait_common+0x15e 10 | __cv_timedwait_io+0x19 11 | zio_wait+0x116 12 | dsl_pool_sync+0xbb 13 | spa_sync_iterate_to_convergence+0xf1 14 | spa_sync+0x31c 15 | txg_sync_thread+0x22d 16 | thread_generic_wrapper+0x83 17 | kthread+0x104 18 | ret_from_fork+0x1f 19 | 20 | @#$ EXIT CODE $#@ 21 | 0 22 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/stacks -m bogus: -------------------------------------------------------------------------------- 1 | sdb: stacks: module 'bogus' doesn't exist or isn't currently loaded 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/stacks -m bogus | count: -------------------------------------------------------------------------------- 1 | sdb: stacks: module 'bogus' doesn't exist or isn't currently loaded 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/stacks -m zfs -c spa_sync: -------------------------------------------------------------------------------- 1 | TASK_STRUCT STATE COUNT 2 | ========================================== 3 | 0xffff9ac5bb82db80 UNINTERRUPTIBLE 1 4 | __schedule+0x2de 5 | __schedule+0x2de 6 | schedule+0x42 7 | schedule_timeout+0x8a 8 | io_schedule_timeout+0x1e 9 | __cv_timedwait_common+0x15e 10 | __cv_timedwait_io+0x19 11 | zio_wait+0x116 12 | dsl_pool_sync+0xbb 13 | spa_sync_iterate_to_convergence+0xf1 14 | spa_sync+0x31c 15 | txg_sync_thread+0x22d 16 | thread_generic_wrapper+0x83 17 | kthread+0x104 18 | ret_from_fork+0x1f 19 | 20 | @#$ EXIT CODE $#@ 21 | 0 22 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/stacks -m zfs -c zthr_procedure: -------------------------------------------------------------------------------- 1 | TASK_STRUCT STATE COUNT 2 | ========================================== 3 | 0xffff9ac6589f8000 INTERRUPTIBLE 12 4 | __schedule+0x2de 5 | __schedule+0x2de 6 | schedule+0x42 7 | cv_wait_common+0x11e 8 | __cv_wait_idle+0x50 9 | zthr_procedure+0x45 10 | thread_generic_wrapper+0x83 11 | kthread+0x104 12 | ret_from_fork+0x1f 13 | 14 | 0xffff9ac65f359e80 INTERRUPTIBLE 1 15 | __schedule+0x2de 16 | __schedule+0x2de 17 | schedule+0x42 18 | schedule_hrtimeout_range_clock+0x97 19 | schedule_hrtimeout_range+0x13 20 | __cv_timedwait_hires+0x119 21 | cv_timedwait_hires_common+0x56 22 | cv_timedwait_idle_hires+0x66 23 | zthr_procedure+0x96 24 | thread_generic_wrapper+0x83 25 | kthread+0x104 26 | ret_from_fork+0x1f 27 | 28 | 0xffff9ac6607b8000 UNINTERRUPTIBLE 1 29 | __schedule+0x2de 30 | __schedule+0x2de 31 | schedule+0x42 32 | schedule_timeout+0x8a 33 | schedule_timeout_uninterruptible+0x1f 34 | arc_reap_cb+0x26 35 | zthr_procedure+0x130 36 | thread_generic_wrapper+0x83 37 | kthread+0x104 38 | ret_from_fork+0x1f 39 | 40 | @#$ EXIT CODE $#@ 41 | 0 42 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/stacks -m zfs | count: -------------------------------------------------------------------------------- 1 | (unsigned long long)44 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/stacks -t bogus: -------------------------------------------------------------------------------- 1 | sdb: stacks: 'bogus' is not a valid task state (acceptable states: RUNNING, INTERRUPTIBLE, UNINTERRUPTIBLE, STOPPED, TRACED, DEAD, ZOMBIE, PARKED, IDLE) 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/threads | count: -------------------------------------------------------------------------------- 1 | (unsigned long long)1131 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/threads | filter 'obj.comm == "java"' | stack: -------------------------------------------------------------------------------- 1 | TASK_STRUCT STATE COUNT 2 | ========================================== 3 | 0xffff9ac611970000 INTERRUPTIBLE 4 4 | __schedule+0x2de 5 | __schedule+0x2de 6 | schedule+0x42 7 | futex_wait_queue_me+0xbb 8 | futex_wait_queue_me+0xbb 9 | futex_wait+0x105 10 | do_futex+0x157 11 | __x64_sys_futex+0x13f 12 | __x64_sys_futex+0x13f 13 | __x64_sys_futex+0x13f 14 | do_syscall_64+0x57 15 | entry_SYSCALL_64+0x94 16 | 17 | @#$ EXIT CODE $#@ 18 | 0 19 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/threads | filter 'obj.comm == "java"' | threads: -------------------------------------------------------------------------------- 1 | task state pid prio comm cmdline 2 | ------------------ ------------- ---- ---- ---- ------- 3 | 0xffff9ac5d1853d00 INTERRUPTIBLE 5809 120 java 4 | 0xffff9ac5d4160000 INTERRUPTIBLE 5807 120 java 5 | 0xffff9ac611970000 INTERRUPTIBLE 4474 120 java 6 | 0xffff9ac611975b80 INTERRUPTIBLE 4776 120 java 7 | @#$ EXIT CODE $#@ 8 | 0 9 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/whatis 0xf987kkbbh: -------------------------------------------------------------------------------- 1 | 0xf987kkbbh is not a valid address 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/whatis 0xffff: -------------------------------------------------------------------------------- 1 | 0xffff does not map to a kmem_cache 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/whatis 0xffffa0888c766000 0xffffa089407ca870: -------------------------------------------------------------------------------- 1 | 0xffffa0888c766000 does not map to a kmem_cache 2 | 0xffffa089407ca870 does not map to a kmem_cache 3 | @#$ EXIT CODE $#@ 4 | 0 5 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/linux/whatis 0xffffa089407ca870: -------------------------------------------------------------------------------- 1 | 0xffffa089407ca870 does not map to a kmem_cache 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/spl/addr arc_mru | member [0].arcs_list[1] | multilist | head: -------------------------------------------------------------------------------- 1 | sdb: addr: symbol not found: arc_mru 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/spl/addr arc_mru | member [0].arcs_list[1] | walk | head: -------------------------------------------------------------------------------- 1 | sdb: addr: symbol not found: arc_mru 2 | @#$ EXIT CODE $#@ 3 | 1 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/spl/addr spa_namespace_avl | avl: -------------------------------------------------------------------------------- 1 | (void *)0xffff9ac653860000 2 | (void *)0xffff9ac658924000 3 | (void *)0xffff9ac546d38000 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/spl/addr spa_namespace_avl | walk: -------------------------------------------------------------------------------- 1 | (void *)0xffff9ac653860000 2 | (void *)0xffff9ac658924000 3 | (void *)0xffff9ac546d38000 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/spl/spa | member spa_config_list | spl_list: -------------------------------------------------------------------------------- 1 | (void *)0xffff9ac614eb2160 2 | (void *)0xffff9ac659107880 3 | (void *)0xffff9ac5b061c5a0 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/spl/spa | member spa_config_list | walk: -------------------------------------------------------------------------------- 1 | (void *)0xffff9ac614eb2160 2 | (void *)0xffff9ac659107880 3 | (void *)0xffff9ac5b061c5a0 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/spl/spa | member spa_evicting_os_list | spl_list: -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/spl/spa | member spa_evicting_os_list | walk: -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/spl/spa | member spa_normal_class.mc_metaslab_txg_list | multilist: -------------------------------------------------------------------------------- 1 | (void *)0xffff9ac658f59000 2 | (void *)0xffff9ac65ae9a000 3 | (void *)0xffff9ac6588d4000 4 | (void *)0xffff9ac658f5b000 5 | (void *)0xffff9ac658f3a000 6 | (void *)0xffff9ac658f5f000 7 | (void *)0xffff9ac65fcb6000 8 | (void *)0xffff9ac658f58000 9 | (void *)0xffff9ac658f3b000 10 | (void *)0xffff9ac65fcb3000 11 | (void *)0xffff9ac658ef2000 12 | (void *)0xffff9ac658f5e000 13 | (void *)0xffff9ac658f5c000 14 | (void *)0xffff9ac65fcb2000 15 | (void *)0xffff9ac65ae9b000 16 | (void *)0xffff9ac6588d0000 17 | (void *)0xffff9ac658f5a000 18 | (void *)0xffff9ac658f5d000 19 | (void *)0xffff9ac48c327000 20 | (void *)0xffff9ac64bc0b000 21 | (void *)0xffff9ac48c326000 22 | (void *)0xffff9ac5ae5ad000 23 | (void *)0xffff9ac54619f000 24 | (void *)0xffff9ac5a26ff000 25 | (void *)0xffff9ac54619d000 26 | (void *)0xffff9ac5a26fc000 27 | (void *)0xffff9ac48c322000 28 | (void *)0xffff9ac64bc0e000 29 | (void *)0xffff9ac5ae5af000 30 | (void *)0xffff9ac48c321000 31 | (void *)0xffff9ac5a26fb000 32 | (void *)0xffff9ac54619e000 33 | (void *)0xffff9ac5a26fe000 34 | (void *)0xffff9ac54619b000 35 | (void *)0xffff9ac48c323000 36 | (void *)0xffff9ac5ae5ae000 37 | (void *)0xffff9ac48c320000 38 | (void *)0xffff9ac64bc08000 39 | (void *)0xffff9ac4a96ea000 40 | (void *)0xffff9ac54619a000 41 | (void *)0xffff9ac48f0aa000 42 | (void *)0xffff9ac5a26f8000 43 | (void *)0xffff9ac5ae5a8000 44 | (void *)0xffff9ac64bc0a000 45 | (void *)0xffff9ac48c325000 46 | (void *)0xffff9ac546198000 47 | (void *)0xffff9ac5a26f9000 48 | (void *)0xffff9ac48f0ac000 49 | @#$ EXIT CODE $#@ 50 | 0 51 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/spl/spa | member spa_normal_class.mc_metaslab_txg_list | walk: -------------------------------------------------------------------------------- 1 | (void *)0xffff9ac658f59000 2 | (void *)0xffff9ac65ae9a000 3 | (void *)0xffff9ac6588d4000 4 | (void *)0xffff9ac658f5b000 5 | (void *)0xffff9ac658f3a000 6 | (void *)0xffff9ac658f5f000 7 | (void *)0xffff9ac65fcb6000 8 | (void *)0xffff9ac658f58000 9 | (void *)0xffff9ac658f3b000 10 | (void *)0xffff9ac65fcb3000 11 | (void *)0xffff9ac658ef2000 12 | (void *)0xffff9ac658f5e000 13 | (void *)0xffff9ac658f5c000 14 | (void *)0xffff9ac65fcb2000 15 | (void *)0xffff9ac65ae9b000 16 | (void *)0xffff9ac6588d0000 17 | (void *)0xffff9ac658f5a000 18 | (void *)0xffff9ac658f5d000 19 | (void *)0xffff9ac48c327000 20 | (void *)0xffff9ac64bc0b000 21 | (void *)0xffff9ac48c326000 22 | (void *)0xffff9ac5ae5ad000 23 | (void *)0xffff9ac54619f000 24 | (void *)0xffff9ac5a26ff000 25 | (void *)0xffff9ac54619d000 26 | (void *)0xffff9ac5a26fc000 27 | (void *)0xffff9ac48c322000 28 | (void *)0xffff9ac64bc0e000 29 | (void *)0xffff9ac5ae5af000 30 | (void *)0xffff9ac48c321000 31 | (void *)0xffff9ac5a26fb000 32 | (void *)0xffff9ac54619e000 33 | (void *)0xffff9ac5a26fe000 34 | (void *)0xffff9ac54619b000 35 | (void *)0xffff9ac48c323000 36 | (void *)0xffff9ac5ae5ae000 37 | (void *)0xffff9ac48c320000 38 | (void *)0xffff9ac64bc08000 39 | (void *)0xffff9ac4a96ea000 40 | (void *)0xffff9ac54619a000 41 | (void *)0xffff9ac48f0aa000 42 | (void *)0xffff9ac5a26f8000 43 | (void *)0xffff9ac5ae5a8000 44 | (void *)0xffff9ac64bc0a000 45 | (void *)0xffff9ac48c325000 46 | (void *)0xffff9ac546198000 47 | (void *)0xffff9ac5a26f9000 48 | (void *)0xffff9ac48f0ac000 49 | @#$ EXIT CODE $#@ 50 | 0 51 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/spl/spl_kmem_caches -s entry_size | head 4 | spl_kmem_caches: -------------------------------------------------------------------------------- 1 | name entry_size active_objs active_memory source total_memory util 2 | --------------------- ---------- ----------- ------------- --------------------------- ------------ ---- 3 | zio_buf_comb_16777216 16785408 0 0.0B zio_buf_comb_16777216[SPL ] 0.0B 0 4 | zio_buf_comb_14680064 14686208 0 0.0B zio_buf_comb_14680064[SPL ] 0.0B 0 5 | zio_buf_comb_12582912 12589056 0 0.0B zio_buf_comb_12582912[SPL ] 0.0B 0 6 | zio_buf_comb_10485760 10491221 0 0.0B zio_buf_comb_10485760[SPL ] 0.0B 0 7 | @#$ EXIT CODE $#@ 8 | 0 9 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/spl/spl_kmem_caches | filter 'obj.skc_linux_cache == 0' | spl_cache | cnt: -------------------------------------------------------------------------------- 1 | (unsigned long long)6549 2 | @#$ EXIT CODE $#@ 3 | 0 4 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/spl/spl_kmem_caches | filter 'obj.skc_linux_cache > 0' | filter 'obj.skc_obj_alloc > 0' | head 1 | spl_cache: -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/spl/spl_kmem_caches | filter 'obj.skc_name == "ddt_cache"' | walk: -------------------------------------------------------------------------------- 1 | (void *)0xffffb71586889040 2 | (void *)0xffffb7158688f170 3 | (void *)0xffffb715868952a0 4 | (void *)0xffffb7158689b3d0 5 | (void *)0xffffb715868a1500 6 | (void *)0xffffb715868a7630 7 | (void *)0xffffb715868ad760 8 | (void *)0xffffb715868b3890 9 | (void *)0xffffb71581a7b040 10 | (void *)0xffffb71581a81170 11 | (void *)0xffffb71581a872a0 12 | (void *)0xffffb71581a8d3d0 13 | (void *)0xffffb71581a93500 14 | (void *)0xffffb71581a99630 15 | (void *)0xffffb71581a9f760 16 | (void *)0xffffb71581aa5890 17 | (void *)0xffffb71581a49040 18 | (void *)0xffffb71581a4f170 19 | (void *)0xffffb71581a552a0 20 | (void *)0xffffb71581a5b3d0 21 | (void *)0xffffb71581a61500 22 | (void *)0xffffb71581a67630 23 | (void *)0xffffb71581a6d760 24 | (void *)0xffffb71581a73890 25 | (void *)0xffffb7158080d040 26 | (void *)0xffffb71580813170 27 | (void *)0xffffb715808192a0 28 | (void *)0xffffb7158081f3d0 29 | (void *)0xffffb71580825500 30 | (void *)0xffffb7158082b630 31 | (void *)0xffffb71580831760 32 | (void *)0xffffb71580837890 33 | (void *)0xffffb715807db040 34 | (void *)0xffffb715807e1170 35 | (void *)0xffffb715807e72a0 36 | (void *)0xffffb715807ed3d0 37 | (void *)0xffffb715807f3500 38 | (void *)0xffffb715807f9630 39 | (void *)0xffffb715807ff760 40 | (void *)0xffffb71580805890 41 | (void *)0xffffb715807a9040 42 | (void *)0xffffb715807af170 43 | (void *)0xffffb715807b52a0 44 | (void *)0xffffb715807bb3d0 45 | (void *)0xffffb715807c1500 46 | (void *)0xffffb715807c7630 47 | (void *)0xffffb715807cd760 48 | (void *)0xffffb715807d3890 49 | @#$ EXIT CODE $#@ 50 | 0 51 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/zfs/dbuf | dbuf -l 1 | head | dbuf: -------------------------------------------------------------------------------- 1 | addr object lvl blkid holds os 2 | 0xffff9ac58e5f30d8 128 1 74 39 testpool/testfs 3 | 0xffff9ac463209260 3 1 21 12 objpool/testfs 4 | 0xffff9ac4b4a1c188 3 1 17 6 objpool/testfs 5 | 0xffff9ac5c652e310 128 1 14 20 testpool/testfs 6 | 0xffff9ac60fe66dc8 2 1 34 11 objpool/testfs 7 | 0xffff9ac5e0c40c40 0 1 0 3 objpool/testfs 8 | 0xffff9ac65c515d18 0 1 5 54 rpool/ROOT/delphix.i4TlGPg/root 9 | 0xffff9ac5b8f0ec40 128 1 52 23 testpool/testfs 10 | 0xffff9ac65ec9f3e8 2019 1 0 2 rpool/ROOT/delphix.i4TlGPg/data 11 | 0xffff9ac4c66ffa08 128 1 7 19 testpool/testfs 12 | @#$ EXIT CODE $#@ 13 | 0 14 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/zfs/dbuf | head 1 | member db_blkptr | blkptr: -------------------------------------------------------------------------------- 1 | DVA[0]=<0:0x103207c00:0x2e00> 2 | [L0 ZFS plain file] fletcher4 lz4 layer=0 unencrypted LE contiguous unique single 3 | size=0x20000L/0x2e00P birth=1197L/1197P fill=1 4 | cksum=0x5df05f0e3e3:0x229afb5d03e237:0x83ffb2e325a9e23a:0xbed1657fea4bbdb8 5 | @#$ EXIT CODE $#@ 6 | 0 7 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/zfs/spa: -------------------------------------------------------------------------------- 1 | ADDR NAME 2 | ------------------------------------------------------------ 3 | 0xffff9ac653860000 objpool 4 | 0xffff9ac658924000 rpool 5 | 0xffff9ac546d38000 testpool 6 | @#$ EXIT CODE $#@ 7 | 0 8 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/zfs/spa -H: -------------------------------------------------------------------------------- 1 | ADDR NAME 2 | ------------------------------------------------------------ 3 | 0xffff9ac653860000 objpool 4 | ** No histogram data available ** 5 | 0xffff9ac658924000 rpool 6 | ** No histogram data available ** 7 | 0xffff9ac546d38000 testpool 8 | seg-size count 9 | -------- ----- 10 | 512.0B: 443 * 11 | 1.0KB: 1236 ** 12 | 2.0KB: 7143 ************ 13 | 4.0KB: 14314 ************************* 14 | 8.0KB: 23141 **************************************** 15 | 16.0KB: 13671 ************************ 16 | 32.0KB: 5485 ********* 17 | 64.0KB: 1733 *** 18 | 128.0KB: 567 * 19 | 256.0KB: 214 20 | 512.0KB: 120 21 | 1.0MB: 62 22 | 2.0MB: 61 23 | 4.0MB: 79 24 | 8.0MB: 13 25 | 16.0MB: 9 26 | 32.0MB: 12 27 | 64.0MB: 11 28 | 128.0MB: 22 29 | 256.0MB: 15 30 | Approx. Median: 108.2MB 31 | @#$ EXIT CODE $#@ 32 | 0 33 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/zfs/spa -v: -------------------------------------------------------------------------------- 1 | ADDR NAME 2 | ------------------------------------------------------------ 3 | 0xffff9ac653860000 objpool 4 | ADDR STATE AUX DESCRIPTION 5 | ------------------------------------------------------------ 6 | 0xffff9ac5764e0000 HEALTHY NONE root 7 | 0xffff9ac547074000 HEALTHY NONE cloudburst-data-2 8 | 0xffff9ac658924000 rpool 9 | ADDR STATE AUX DESCRIPTION 10 | ------------------------------------------------------------ 11 | 0xffff9ac659250000 HEALTHY NONE root 12 | 0xffff9ac659254000 HEALTHY NONE /dev/nvme0n1p1 13 | 0xffff9ac546d38000 testpool 14 | ADDR STATE AUX DESCRIPTION 15 | ------------------------------------------------------------ 16 | 0xffff9ac5ac2ac000 HEALTHY NONE root 17 | 0xffff9ac55ced0000 HEALTHY NONE /dev/nvme1n1p1 18 | 0xffff9ac4b0574000 HEALTHY NONE /dev/nvme2n1p1 19 | @#$ EXIT CODE $#@ 20 | 0 21 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/zfs/spa data | member spa_normal_class.mc_histogram | zfs_histogram: -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/zfs/spa data | vdev | metaslab | filter 'obj.ms_loaded == 1' | head 1 | member ms_allocatable.rt_histogram | zhist: -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/zfs/spa data | vdev | metaslab | filter 'obj.ms_loaded == 1' | head 1 | member ms_sm.sm_phys.smp_histogram | zhist: -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/zfs/spa data | vdev | metaslab | filter 'obj.ms_loaded == 1' | head 1 | member ms_sm.sm_phys.smp_histogram | zhist 9: -------------------------------------------------------------------------------- 1 | @#$ EXIT CODE $#@ 2 | 0 3 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/zfs/spa rpool: -------------------------------------------------------------------------------- 1 | ADDR NAME 2 | ------------------------------------------------------------ 3 | 0xffff9ac658924000 rpool 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/zfs/spa | head 1 | deref |member spa_uberblock | member ub_rootbp | blkptr: -------------------------------------------------------------------------------- 1 | DVA[0]=<0:0x74fca00:0x200> 2 | [L0 DMU objset] fletcher4 lz4 layer=0 unencrypted LE contiguous unique single 3 | size=0x1000L/0x200P birth=249L/249P fill=50 4 | cksum=0x96a85512f:0x3e46df820da:0xd0f5886a63c8:0x1da5a7cdcc4e69 5 | @#$ EXIT CODE $#@ 6 | 0 7 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/zfs/spa | head 1 | spa: -------------------------------------------------------------------------------- 1 | ADDR NAME 2 | ------------------------------------------------------------ 3 | 0xffff9ac653860000 objpool 4 | @#$ EXIT CODE $#@ 5 | 0 6 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/zfs/spa | pp: -------------------------------------------------------------------------------- 1 | ADDR NAME 2 | ------------------------------------------------------------ 3 | 0xffff9ac653860000 objpool 4 | 0xffff9ac658924000 rpool 5 | 0xffff9ac546d38000 testpool 6 | @#$ EXIT CODE $#@ 7 | 0 8 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/zfs/spa | vdev: -------------------------------------------------------------------------------- 1 | ADDR STATE AUX DESCRIPTION 2 | ------------------------------------------------------------ 3 | 0xffff9ac5764e0000 HEALTHY NONE root 4 | 0xffff9ac547074000 HEALTHY NONE cloudburst-data-2 5 | 0xffff9ac659250000 HEALTHY NONE root 6 | 0xffff9ac659254000 HEALTHY NONE /dev/nvme0n1p1 7 | 0xffff9ac5ac2ac000 HEALTHY NONE root 8 | 0xffff9ac55ced0000 HEALTHY NONE /dev/nvme1n1p1 9 | 0xffff9ac4b0574000 HEALTHY NONE /dev/nvme2n1p1 10 | @#$ EXIT CODE $#@ 11 | 0 12 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/zfs/spa | vdev | pp: -------------------------------------------------------------------------------- 1 | ADDR STATE AUX DESCRIPTION 2 | ------------------------------------------------------------ 3 | 0xffff9ac5764e0000 HEALTHY NONE root 4 | 0xffff9ac547074000 HEALTHY NONE cloudburst-data-2 5 | 0xffff9ac659250000 HEALTHY NONE root 6 | 0xffff9ac659254000 HEALTHY NONE /dev/nvme0n1p1 7 | 0xffff9ac5ac2ac000 HEALTHY NONE root 8 | 0xffff9ac55ced0000 HEALTHY NONE /dev/nvme1n1p1 9 | 0xffff9ac4b0574000 HEALTHY NONE /dev/nvme2n1p1 10 | @#$ EXIT CODE $#@ 11 | 0 12 | -------------------------------------------------------------------------------- /tests/integration/data/regression_output/dump.202303131823/zfs/zfs_dbgmsg | tail 5 | zfs_dbgmsg: -------------------------------------------------------------------------------- 1 | vdev_removal.c:1675:spa_vdev_remove_thread(): copying 1 segments for metaslab 9 2 | vdev_removal.c:1675:spa_vdev_remove_thread(): copying 5 segments for metaslab 10 3 | vdev_object_store.c:783:agent_free_blocks_impl(): agent_free_blocks freed 1351 blocks 4 | vdev_object_store.c:1031:agent_end_txg(): agent_end_txg(249), 2 passes 5 | vdev_removal.c:1675:spa_vdev_remove_thread(): copying 155 segments for metaslab 11 6 | @#$ EXIT CODE $#@ 7 | 0 8 | -------------------------------------------------------------------------------- /tests/integration/gen_regression_output.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019, 2023 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-module-docstring 18 | # pylint: disable=missing-function-docstring 19 | 20 | import argparse 21 | import cProfile 22 | 23 | from tests.integration.infra import generate_regression_output 24 | 25 | 26 | def main() -> None: 27 | parser = argparse.ArgumentParser( 28 | description="Generate regression output for test-suite") 29 | parser.add_argument('--profile', 30 | action='store_true', 31 | help='run with cProfile to identify bottlenecks') 32 | args = parser.parse_args() 33 | if args.profile: 34 | cProfile.run('generate_regression_output()') 35 | else: 36 | generate_regression_output() 37 | 38 | 39 | if __name__ == '__main__': 40 | main() 41 | -------------------------------------------------------------------------------- /tests/unit/commands/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/delphix/sdb/a3aefe71e88852462f8268ec2996e4659f471263/tests/unit/commands/__init__.py -------------------------------------------------------------------------------- /tests/unit/commands/test_count.py: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019 Delphix 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | # pylint: disable=missing-docstring 18 | 19 | import drgn 20 | 21 | from tests.unit import invoke, MOCK_PROGRAM 22 | 23 | 24 | def test_empty() -> None: 25 | line = 'count' 26 | 27 | ret = invoke(MOCK_PROGRAM, [], line) 28 | 29 | assert len(ret) == 1 30 | assert ret[0].value_() == 0 31 | 32 | 33 | def test_single_piped_input() -> None: 34 | line = 'echo 0x0 | count' 35 | 36 | ret = invoke(MOCK_PROGRAM, [], line) 37 | 38 | assert len(ret) == 1 39 | assert ret[0].value_() == 1 40 | 41 | 42 | def test_multiple_piped_inputs() -> None: 43 | line = 'echo 0x0 0xfffff 0xdeadbeef 0x101010 | count' 44 | 45 | ret = invoke(MOCK_PROGRAM, [], line) 46 | 47 | assert len(ret) == 1 48 | assert ret[0].value_() == 4 49 | 50 | 51 | def test_single_input() -> None: 52 | line = 'count' 53 | objs = [drgn.Object(MOCK_PROGRAM, 'void *', value=0)] 54 | 55 | ret = invoke(MOCK_PROGRAM, objs, line) 56 | 57 | assert len(ret) == 1 58 | assert ret[0].value_() == 1 59 | 60 | 61 | def test_multiple_inputs() -> None: 62 | line = 'count' 63 | objs = [ 64 | drgn.Object(MOCK_PROGRAM, 'void *', value=0), 65 | drgn.Object(MOCK_PROGRAM, 'int', value=0xfffff), 66 | drgn.Object(MOCK_PROGRAM, 'unsigned long *', value=0xdeadbeef), 67 | ] 68 | 69 | ret = invoke(MOCK_PROGRAM, objs, line) 70 | 71 | assert len(ret) == 1 72 | assert ret[0].value_() == 3 73 | --------------------------------------------------------------------------------