crash> ps | grep udp-server
23260 2174 2 ffff8ae0f3751e80 IN 0.0 4352 1368 udp-server
crash> task_struct.files ffff8ae0f3751e80
files = 0xffff8ae121916940
crash> files_struct.fdt 0xffff8ae121916940
fdt = 0xffff8ae12ddcd300
crash> fdtable 0xffff8ae12ddcd300
struct fdtable {
max_fds = 0x100,
fd = 0xffff8ae121ba1000,
close_on_exec = 0xffff8ae0f55b8b00,
open_fds = 0xffff8ae0f55b8ae0,
full_fds_bits = 0xffff8ae0f55b8b20,
rcu = {
next = 0xffff8ae121f36800,
func = 0x28
}
}
crash> rd 0xffff8ae121ba1000 5
ffff8ae121ba1000: ffff8ae133967d00 ffff8ae133967d00 .}.3.....}.3....
ffff8ae121ba1010: ffff8ae133967d00 ffff8ae10fcec400 .}.3............
ffff8ae121ba1020: 0000000000000000 ........
crash> file ffff8ae10fcec400 | grep private_data
private_data = 0xffff8ae10f85b980,
crash> socket 0xffff8ae10f85b980
struct socket {
state = SS_UNCONNECTED,
type = 0x2,
flags = 0x0,
wq = 0xffff8ae0f4c23d80,
file = 0xffff8ae10fcec400,
sk = 0xffff8ae0f1531980,
ops = 0xffffffffbeef4660
}
crash> socket_wq 0xffff8ae0f4c23d80 -o
struct socket_wq {
[ffff8ae0f4c23d80] wait_queue_head_t wait;
[ffff8ae0f4c23d98] struct fasync_struct *fasync_list;
[ffff8ae0f4c23da0] unsigned long flags;
[ffff8ae0f4c23da8] struct callback_head rcu;
}
SIZE: 0x40
crash> wait_queue_head_t ffff8ae0f4c23d80 -o
typedef struct wait_queue_head {
[ffff8ae0f4c23d80] spinlock_t lock;
[ffff8ae0f4c23d88] struct list_head head;
} wait_queue_head_t;
SIZE: 0x18
crash> list -H ffff8ae0f4c23d88 -s wait_queue_entry -o wait_queue_entry.entry
ffff9b9283f53c98
struct wait_queue_entry {
flags = 0x1,
private = 0xffff8ae0f3751e80,
func = 0xffffffffbe79c570,
entry = {
next = 0xffff8ae0f4c23d88,
prev = 0xffff8ae0f4c23d88
}
}
crash> dis 0xffffffffbe79c570
0xffffffffbe79c570 <receiver_wake_function>: nopl 0x0(%rax,%rax,1) [FTRACE NOP]
0xffffffffbe79c575 <receiver_wake_function+0x5>: test %rcx,%rcx
0xffffffffbe79c578 <receiver_wake_function+0x8>: je 0xffffffffbe79c57f <receiver_wake_function+0xf>
0xffffffffbe79c57a <receiver_wake_function+0xa>: test $0x9,%cl
0xffffffffbe79c57d <receiver_wake_function+0xd>: je 0xffffffffbe79c584 <receiver_wake_function+0x14>
0xffffffffbe79c57f <receiver_wake_function+0xf>: jmpq 0xffffffffbe0c96c0 <autoremove_wake_function>
0xffffffffbe79c584 <receiver_wake_function+0x14>: xor %eax,%eax
0xffffffffbe79c586 <receiver_wake_function+0x16>: retq
0xffffffffbe79c587 <receiver_wake_function+0x17>: nopw 0x0(%rax,%rax,1)
crash>
0xffffffffbe79c570 : receiver_wake_function+0x0/0x20 [kernel]
0xffffffffbe0c8fc6 : __wake_up_common+0x86/0x120 [kernel]
0xffffffffbe0c922a : __wake_up_common_lock+0x6a/0x90 [kernel]
0xffffffffbe78f66c : sock_def_readable+0x3c/0x60 [kernel]
0xffffffffbe831668 : __udp_enqueue_schedule_skb+0x198/0x1b0 [kernel]
0xffffffffbe831ba6 : udp_queue_rcv_skb+0x1a6/0x430 [kernel]
0xffffffffbe831ea6 : udp_unicast_rcv_skb+0x76/0x90 [kernel]
0xffffffffbe833116 : __udp4_lib_rcv+0x446/0xa90 [kernel]
0xffffffffbe7fee82 : ip_local_deliver_finish+0x92/0x1d0 [kernel]
0xffffffffbe7ff41b : ip_local_deliver+0x5b/0xc0 [kernel]
0xffffffffbe7ff4c2 : ip_rcv+0x42/0xb0 [kernel]
0xffffffffbe7ae880 : __netif_receive_skb_one_core+0x40/0x50 [kernel]
0xffffffffbe7adc94 : netif_receive_skb_internal+0x24/0xb0 [kernel]
0xffffffffc0b84d69 : tun_get_user+0xd29/0xe70 [tun]
0xffffffffc0b84eff : tun_chr_write_iter+0x4f/0x70 [tun]
0xffffffffbe25eea5 : __vfs_write+0xe5/0x170 [kernel]
0xffffffffbe25f0cd : vfs_write+0xad/0x1a0 [kernel]
0xffffffffbe25f312 : ksys_write+0x42/0x90 [kernel]
0xffffffffbe003ddf : do_syscall_64+0x4f/0x100 [kernel]
0xffffffffbea0008c : entry_SYSCALL_64_after_hwframe+0x44/0xa9 [kernel]
parms: wait=0xffff9b9283f53c98 mode=0x1 sync=0x1 key=0xc3
execname: tun
ts: 2, 3
0x7fe4f79d62c0 : __write_nocancel+0x7/0x57 [/lib/x86_64-linux-gnu/libc-2.23.so]
0x400fea : cwrite+0x29/0x4b [/home/mishuang/prg/c/tun/tun]
0x401b81 : main+0x88f/0x8de [/home/mishuang/prg/c/tun/tun]
0x7fe4f78ff830 : __libc_start_main+0xf0/0x1d0 [/lib/x86_64-linux-gnu/libc-2.23.so]
0x400db9 : _start+0x29/0x30 [/home/mishuang/prg/c/tun/tun]