You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am trying to view the mounts for the system, so I do find_task 1 | member nsproxy | deref and boom:
sdb encountered an internal error due to a bug. Here's the
information you need to file the bug:
----------------------------------------------------------
Target Info:
ProgramFlags.IS_LIVE|IS_LINUX_KERNEL
Platform(<Architecture.X86_64: 1>, <PlatformFlags.IS_LITTLE_ENDIAN|IS_64_BIT: 3>)
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/sdb-0.1.0-py3.6.egg/sdb/internal/repl.py", line 107, in eval_cmd
for obj in invoke(self.target, [], input_):
File "/usr/local/lib/python3.6/dist-packages/sdb-0.1.0-py3.6.egg/sdb/pipeline.py", line 153, in invoke
yield from execute_pipeline(first_input, pipeline)
File "/usr/local/lib/python3.6/dist-packages/sdb-0.1.0-py3.6.egg/sdb/pipeline.py", line 84, in execute_pipeline
yield from massage_input_and_call(pipeline[-1], this_input)
File "/usr/local/lib/python3.6/dist-packages/sdb-0.1.0-py3.6.egg/sdb/pipeline.py", line 43, in massage_input_and_call
yield from cmd.call(objs)
File "/usr/local/lib/python3.6/dist-packages/sdb-0.1.0-py3.6.egg/sdb/command.py", line 326, in call
result, not issubclass(self.__class__, SingleInputCommand))
File "/usr/local/lib/python3.6/dist-packages/sdb-0.1.0-py3.6.egg/sdb/command.py", line 289, in __invalid_memory_objects_check
obj.read_()
TypeError: cannot read object with incomplete structure type
----------------------------------------------------------
Link: https://github.com/delphix/sdb/issues/new
I can also do echo 0xffff8d355f407300 | cast struct mnt_namespace * | member root.mnt_list |addr | lxlist mount mnt_list | filter 'obj.mnt_devname == "pool"' | member mnt.mnt_sb.s_fs_info| cast struct zfsvfs * | deref to see the zfsvfs struct for the dataset and keep following pointers to find what I want.
It would be really nice if I did not need to fall back to gdb to get the mnt_ns pointer. I assume this is a bug since gdb had no problem finding it. It is rather strange that sdb has a problem doing this given that it is able to see the type information for nsproxy:
Basically, I want to be able to find_task 1 | member nsproxy.mnt_ns | cast struct mnt_namespace * | member root.mnt_list |addr | lxlist mount mnt_list | filter 'obj.mnt_devname == "pool"' | member mnt.mnt_sb.s_fs_info| cast struct zfsvfs * | deref. Unfortunately, this gives me:
sdb> find_task 1 | member nsproxy.mnt_ns.root.mnt_list |addr | lxlist mount mnt_list | filter 'obj.mnt_devname == "pool"' | member mnt.mnt_sb.s_fs_info| cast struct zfsvfs * | deref
sdb: member: 'struct nsproxy' has no member 'mnt_ns'
The text was updated successfully, but these errors were encountered:
This is on Ubuntu 18.04 with the HWE stack installed to get kernel 5.3.0-26-generic, and the dbgym package installed:
https://launchpad.net/ubuntu/bionic/amd64/linux-image-unsigned-5.3.0-26-generic-dbgsym/5.3.0-26.28~18.04.1
I am trying to view the mounts for the system, so I do
find_task 1 | member nsproxy | deref
and boom:Instead, I do:
Then I open gdb with
sudo gdb -c /proc/kcore /usr/lib/debug/boot/vmlinux-5.3.0-26-generic
and do:Now I can go back and run:
I can also do
echo 0xffff8d355f407300 | cast struct mnt_namespace * | member root.mnt_list |addr | lxlist mount mnt_list | filter 'obj.mnt_devname == "pool"' | member mnt.mnt_sb.s_fs_info| cast struct zfsvfs * | deref
to see the zfsvfs struct for the dataset and keep following pointers to find what I want.It would be really nice if I did not need to fall back to gdb to get the mnt_ns pointer. I assume this is a bug since gdb had no problem finding it. It is rather strange that sdb has a problem doing this given that it is able to see the type information for nsproxy:
Basically, I want to be able to
find_task 1 | member nsproxy.mnt_ns | cast struct mnt_namespace * | member root.mnt_list |addr | lxlist mount mnt_list | filter 'obj.mnt_devname == "pool"' | member mnt.mnt_sb.s_fs_info| cast struct zfsvfs * | deref
. Unfortunately, this gives me:The text was updated successfully, but these errors were encountered: