Recent Posts
-
September 21, 2020
Gdb的ptype命令查看struct结构的各个子成员的内存布局
比较新的gdb的ptype命令支持/o选项,打印结构的内存布局了,类似pahole命令吧(gdb) help ptypePrint definition of type TYPE.Usage: ptype[/FLAGS] TYPE | EXPRESSIONArgument may be any type (for example a type name defined by typedef,or "struct STRUCT-TAG" or "class CLASS-NAME" or "u...
-
September 04, 2020
编译php 7.2 Configure配置 With Libzip时报告off_t错误
./configure –enable-zip –with-libzip 使用自己编译的libzip-1.7.3时,出现下面这个错误checking size of off_t... 0configure: error: off_t undefined; check your library configuration看网上介绍应该是php的配置脚本有问题,它的实际错误其实是ld 找不到libzip.so 文件吧,不知道php7.4有没有这个问题,上次编译php-7.4时用是系统l自带的i...
-
August 05, 2020
Php的swoole和grpc扩展一起使用时kill不能杀死swoole进程的问题 Grpc的fork模式问题
发现swoole的一个服务,用普通的kill总是杀不死,最后还是留一个进程在那里非要用 kill -9 才能结束掉。看了一下,进程是卡死在 grpc shutdown的信号量上面了。#0 0x00007f533454d48c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0#1 0x00007f53301ada52 in gpr_cv_wait () from /lib64/libgrpc.so.11#2 ...
-
July 28, 2020
Linux系统bash高级重定向之dev fd
[root@localhost ]# cat <(echo "test")testbash里面有这种高级用法,把输出直接通过重定向转给另外一个命令,类似管道| 重定向.http://www.gnu.org/software/bash/manual/html_node/Redirections.html/dev/fd/fdIf fd is a valid integer, file descriptor fd is duplicated./dev/fd 其实一个软连接指向/proc...
-
July 24, 2020
C11和linux内核的静态断言static_assert和build_bug_on
以前的常用的编译期错误报告,就是#if 和 #error 的宏检查吧,不过这个能针对宏的值做检查,c语言有一个很古老的assert函数,这个运行时检查会影响性能吧。不过c11/c++11 加了一个 static_assert,这个的好处就是支持对所有常量的判断,而且是编译期的检查不影响性能。印象中记得有这么一个东西,上次想在内核里面用的时候没找到,刚看了一下内核代码发现linux内核已经包装了 BUILD_BUG_ON系列的宏了,不过static_assert应该也还能用。https:/...
-
July 24, 2020
Linux的bpf过滤器的nop空指令
https://elixir.bootlin.com/linux/latest/source/Documentation/networking/filter.txt ja 6 Jump to label BPF_JUMP(BPF_JMP + BPF_JA, 0, 0, 0),像上面那样插入一个jmp 跳转到到下一行代码 ,最后应该会被jit生成器给删掉,也就是空指令的效果吧,不过和nop指令还是有区别的。https:...
-
July 23, 2020
Linux的conntrack Zone的
https://elixir.bootlin.com/linux/latest/source/include/net/netfilter/nf_conntrack_zones.hhttps://lwn.net/Articles/370152/https://specs.openstack.org/openstack/neutron-specs/specs/liberty/conntrack-zones.html才发现conntrack有一个zone的东西, 可以查看代码里面nf_ct_zo...
-
July 22, 2020
Linux内核的conntrack的连接跟踪表skb和nfct的查找和关联
static const struct nf_hook_ops ipv4_conntrack_ops[] = { { .hook = ipv4_conntrack_in, .pf = NFPROTO_IPV4, .hooknum = NF_INET_PRE_ROUTING, .priority = NF_IP_PRI_CONNTRACK, },ip_rcv 所有进入系统的包 NF_HOOK(NFPROTO_IPV4, NF_INET_PRE_ROUTING ipv4_c...
-
July 14, 2020
Netfilter的nf_drop返回特定的errno
/* Returns 1 if okfn() needs to be executed by the caller, * -EPERM for NF_DROP, 0 otherwise. Caller must hold rcu_read_lock. */int nf_hook_slow(struct sk_buff *skb, struct nf_hook_state *state, const struct nf_hook_entries *e, unsigned int s){...
-
July 14, 2020
Linux设置syscall的bpf过滤函数seccomp实现sandbox
cloudflare的blog这篇Sandboxing in Linux with zero lines of codehttps://blog.cloudflare.com/sandboxing-in-linux-with-zero-lines-of-code/提到linux 一个很有意思的syscall, 可以用来设置进程 syscall的白名单列表。就是可以设置一个BPF来显示各种syscall调用吧。 现在好像到处是BPF的身影。这个调用还是很有意思的,systemd好像也支持 配...