自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1291)
  • 资源 (19)
  • 收藏
  • 关注

原创 [英语单词] spectrum

(usu sing 通常作单数) 1 image of a band of colours as seen in a rainbow (and usu described as red, orange, yellow, green, blue, indigo and violet), formed by a ray of light that has passed through a prism 光谱. 2 similar series of bands of sound 声谱;

2024-08-24 21:52:16 37

原创 cppcheck: Consider using std::find_if algorithm instead of a raw loop. [useStlAlgorithm]

可以实现看到的逻辑简洁,代码精炼。

2024-08-24 13:49:56 1

原创 Linux: 忘记密码的解决方法,passwd

这里的方法很简单,就是通过console进去,添加一个启动参数,加载sysroot,然后用passwd命令修改密码。这个是提供的一个通用性的方法,但是需要注册用户才能查看里面的内容。包含RHEL4/5/6/7/8/9所有版本。

2024-08-20 16:49:47 450

原创 gcc: pragma GCC diagnostic push

通过下面的方式,可以让gcc在部分代码上,不做-Wconversion的校验,也就不上报Warning,警告。但是这种还是有些风险,最好是不用。可以放到宏定义函数的外围。

2024-08-20 10:52:29 28

原创 gdb: warning: Source file is more recent than executable

但是在安装完glibc-debuginfo之后,做gdb调试的时候,加载glibc的源代码出现这个警告:Source file is more recent than executable。这个的原因是创建的这个学习文件,名称和glibc里的文件名称重名了。把例子文件的名称改一下就好了,可以解决问题。最近做了一件晕事,自己创建了一个syslog.c的文件来学习syslog接口函数。

2024-08-19 17:07:39 22

原创 DARPA

(https://www.36kr.com/p/1807344619579905)”,值得一看!大体意思是,DARPA/ARPA-H组织了一次研究竞赛,要通过AI来自动检查,修复软件层的安全漏洞/弱点。这个和最近项目组做的AI版的代码检查有点类似,不过这个层次更深一步。反正其他的也看不了,我就想看看这个house.gov吧,试试运气,不曾想看到了一条,公共公开信息,里有关于官员的财务状况披露报告。想着也是,国家安全最重要!而且,这个https://aicyberchallenge.com/,也访问不了。

2024-08-19 06:08:07 767

原创 C: sizeof的使用实例

下面这个代码,其实在编译时就可以发现是否有问题。所以这个改成编译时报错误。

2024-08-17 15:38:35 55

原创 [英语单词] phase out

这个词语的使用,在外企也是非常的普遍,经常用。比如这里说ATT确认将Nokia从RAN网络淘汰出局。词组的意思是:使逐步淘汰, 逐渐停止;

2024-08-17 08:22:27 152

原创 c: ‘strncpy‘ specified bound depends on the length of the source argument [-Wstringop-overflow=]

这是指在调用 strncpy 时,第三个参数 n 可能是通过源字符串 src 的长度计算得出的,而这个长度并不一定受到足够的控制或检查。但是目标缓冲区 dest 的大小只有 5 个字节,这会导致缓冲区溢出问题,因为 strncpy 可能会试图复制超过目标缓冲区的内容。这个警告信息表明在使用 strncpy 函数时,传递给它的长度限制参数(specified bound)是依赖于源字符串的长度,这可能会导致潜在的缓冲区溢出问题或其他与内存安全相关的问题。【chatGPT】协助完成。

2024-08-16 05:33:15 25

原创 gdb: 编译,怎么将依赖的库静态编译到gdb里

这个是一个普遍的问题,原因是有时候生产环境中,没有安装gdb所依赖的库软件,导致gdb的安装受阻。这里的第一步就是怎么将依赖库的.a文件都找出来,或者是自己将所有的依赖开源软件都编译出来。最近有朋友问,怎么将所依赖库的.a文件打包到一个文件,然后做变的时候直接依赖这个文件做编译。这一步应该是可以学到东西的最重要的一步。第二步没有必要将所有的.a文件打包到一个文件,只要确保编译/链接的时候能找到相关的文件就可以。第三步,要修改gdb的编译脚本,确保是static编译,确保链接的时候能找到想要的.a文件。

2024-08-16 05:30:55 309

原创 程序员: 逻辑错误是静态代码工具无能为力的一种问题

记得很多年前自己就犯过同样的错误。逻辑错误是这个样子,循环处理多条数据记录,在开始循环之前定义了一个全局变量,用来保存数据记录的业务属性值,这个全局变量的内容应该是按照数据内容来决定,用过之后要重新初始化,但是却忘记了在循环开始的时候初始化,导致下一次用的时候使用到了上一次循环的内容。最近遇到一种代码逻辑错误,应该算是一种普遍适用的错误,记录在此。

2024-08-15 07:12:35 236

原创 Linux: debug: strace: attach: ptrace(PTRACE_SEIZE, 25): Operation not permitted

最近遇到一个错误:./strace: attach: ptrace(PTRACE_SEIZE, 25): Operation not permitted原因,在内核里,如果所属的thread不在一个group,就不让strace。另一个原因,如果之前已经有ptrace了,就不允许再次来ptrace;或者进程已经在退出的状态。

2024-08-15 07:11:30 342

原创 [英语单词] pusable[ChatGPT]

所以:这句话的意思是,在这个调度器实现中(可能是针对带有截止时间的实时任务的调度器),“pushable”任务的列表并不是通过plist(优先级列表,priority list)来维护的,而是通过红黑树(rb-tree)来维护的,红黑树中的任务是按截止时间排序的。ChatGPT的回答:当前上下文中,“pushable” 是一个操作系统调度中的术语,主要用于描述在某些情况下可以被“推送”(即迁移)到其他CPU或核心的任务或进程。(这个解释还是很到位,就是任务可以在多个cpu之间可以推,迁移的意思)

2024-08-14 06:42:49 225

原创 Linux: network: ping不通的原因之一:route设置

如果配置有问题会导致一个不同步,当ping另一个ip的时候,如果这个目的地址恰巧落在这个subnet路由里,但是实际又不属于这个subnet网段,这个时候就会有ping失败的问题。所以这里可以看到当前这个route的设置,说明这个局域网设置的subnet内的ip地址非常多,也就是非常大的subnet。一般是代表不太合理。多网卡配置: 在多网卡配置下,系统通常会通过src字段来明确指定数据包的源地址,以确保数据包的源IP地址与所使用的网络接口匹配。proto kernel: 表示这条路由是由内核自动生成的。

2024-08-14 06:36:06 300

原创 Linux: ltrace: 库函数调用跟踪工具

ltrace 是一个 Linux 上的调试工具,用于跟踪程序执行期间调用的库函数(例如,libc 中的函数)以及它们的参数和返回值。与 strace 不同,strace 主要跟踪系统调用,而 ltrace 关注的是用户态下的库函数调用。参数提取:根据被跟踪进程的调用约定(不同的处理器架构可能有不同的约定),ltrace 会读取特定寄存器或堆栈位置的内容来获取函数参数。返回值提取:类似地,当函数执行完成返回时,ltrace 会再次捕获进程,读取返回值所在的寄存器。解析符号表以查找函数名和它们对应的地址。

2024-08-13 07:10:46 57

原创 gdb: 编译,lzma,configure: error: missing liblzma for --with-lzma

如果xz-devel没有安装,而且自己手动编译安装lzma的路径不是正式的目录(/usr/lib/;/usr/lib64),就需要指定lzma的安装目录,‘–with-lzma-prefix’,这样gdb的configure步骤,才能找到对应的头文件和so文件。这种问题不是lzma独有,其他开源软件的编译安装可能会碰到类似的问题,大多数因为缺少devel包的安装,或者自己手动编译的安装路径设置问题。如果是想编译时带着’–with-lzma’。下面是devel rpm带有的必须的头文件,以及so文件。

2024-08-13 07:00:59 286

原创 glibc: getaddrinfo: AAAA 和A的顺序关系

gethostbyname3_context 这里的使用是如果设置的inet6,就优先做AAAA的query,如果失败,而且res_use_inet6设置了,就会尝试ip4的Aquery。但是有赖于/etc/resolv.conf options: inet6 的设置。默认,如果设置的hint是AF_UNSPEC,而且没有额外的noaaaa的设置的时候,会ip4和ip6同时retrieve。如果设置为AF_INET6,就只会发 AAAA的query。

2024-08-11 17:15:12 164

原创 Linux: network: dsn resolv.conf

这里第一行的意思是,如果dns query失败,会尝试,在原有域名的基础上添加上后续的几个继续做dns query。先用AAAA,来一轮,然后再用A。如果dns query超时(5秒),会继续下一个。这个option,可以让dns query 不做ip6的查询。dns服务器的地址是192.168.101.22.

2024-08-11 09:55:46 54

原创 [晕事]今天做了件晕事42 cppcheck 版本使用

后来自己想到了答案,自己使用的cppcheck版本太低了,用了高版本之后就可以检查出来了。这里需要注意,在提问题的时候,还是应该能升级,进行升级试试。对于这种小工具/也不会上生产环境的开源软件,最好是能更新就更新到最新,以便使用最新的功能。在使用cppcheck做静态检查的时候没有检查出来,然后开了一个讨论。

2024-08-10 08:26:50 50

原创 电脑:usb口突然失效

而是在用我不小心将iphone手机的充电线,的纯铁包围的那一头插进去之后发生的。然后在用这个usb接口,就不工作了。其实也不是突然失效的,

2024-08-10 08:25:42 425

原创 [晕事]今天做了件晕事41 throw 与 括号

其实throw后面的参数根本不需要括号的存在,所以后面的【(string(“abc”)).c_str()】这一堆是一个整体。第一眼,看成了调用函数throw(),然后throw的返回值做了成员函数c_str()调用。将下面这一语句:throw(string(“abc”)).c_str();今天做了件晕事,之前写c++的throw语句写少了。

2024-08-09 07:03:21 628

原创 Linux: security: ip6tables host/network not found

出现的情况是是呀ip6tables的命令添加 source地址是ip4的时候就会出现错误。这种不是什么大问题,用对了就好了。第一次看到这种错误;

2024-08-09 07:02:43 47

原创 Linux: security: openssh: v9.8 的一个小改动

这个改动,相对于之前的版本,产生的变化是per-session相关的进程名称,由sshd变成了sshd-session。如果有应用依赖于这个进程名称,就需要注意了。

2024-08-08 10:10:45 336

原创 Linux: 使用c查看文件是否存在?ChatGPT

在 C 语言中,检查文件是否存在可以使用标准库函数,例如 fopen、access、或 stat。access 函数可以检查文件的可访问性。如果文件存在且可读,返回 0,否则返回 -1。总结:这三种方法都可以有效地检查文件是否存在。stat 函数可以获取文件的状态信息,如果文件存在返回 0,否则返回 -1。使用 fopen 打开文件,如果返回的指针不是 NULL,则表示文件存在。access: 更加高效,仅检查文件的存在性和可访问性。stat: 获取文件详细信息的同时检查文件存在性。

2024-08-08 06:11:37 324

原创 gcc: string.c_str gcc-8.5的一个问题

string的这个成员是返回c类型的一个字符数组指针。但是这个指针所对应的地址有赖于string对象的生命周期。所以如果返回一个函数内的局部string对象的指针,就是危险的。如果是危险的有没有静态代码检查工具可用帮助来检查这种书写的问题。这里需要注意的一个问题是在gcc的4.8版本是可用隐藏这个问题,但是到了8.5这个版本,就不再隐藏了。所以对生命周期比较长的c++工程来说,这是一个非常大的挑战。因为原来这么错误使用也没有问题,那得有多少处这种错误使用呢?

2024-08-04 06:35:56 112

原创 c++: mangle命名规则

其实可用根据binutils/c++filt的源代码看。找到mangle的命名规则,8SKString,8代表后面的8个字符是源代码里的符号名称:SKString。但是从网上找到了一个总结,但是github有时候上不去,摘录再次。N nested, 就是包含类名/域名。_Z是mangle符号的前置特征标记。E equal 等号。

2024-08-04 06:32:30 213

原创 [程序员] 现在问题分析的两三个矛盾与人工智能(1)

如果可用关注到,并按照说明/方法来先解决警告,完全可用避免问题分析的链路的拉长与问题分析时间的拉长,相对的客户印象也会好很多!如果不关注警告,总是想靠着下一级来解决,这个方式就不可避免的带来很大的负面印象!今天这个例子,说客户现场,软件使用的时候碰到一个问题,按照流程,走到研发,研发费了半天劲,发现是设备的网络设置有问题,网络不通,导致高可靠性的两个服务在不停的做切换,从而导致这个问题!另一方面,就这个错误而言,也是需要总结一个trouble/shooting的总结,和网络不通做关联!

2024-08-03 09:04:42 500

原创 [生活] 铁锅铲不粘锅的推理

既然没有明确标识不粘层的脆弱性,必然会导致有一部分人(没有这个意识),会误用铁锅铲和不粘锅搭配,这个对于不粘锅来说就非常的危险,因为容易将不粘层破坏掉。烙饼的不粘锅,上面有一个重要部件,是表面的一层不粘涂料,这一层比较脆弱,所以这一层的硬度肯定不如铁或者其他金属和瓷器。还要看这一部分人是否会亲自刷锅,以及要注意到破坏掉的涂层,然后才可能会联想/思考/逻辑反推其中的逻辑。也就是说这种默认的意识是如此的普及,以至于,在买锅的时候,商品不会再明显的未知,或者有可能都没有什么特殊说明,不能用硬物。

2024-08-03 09:03:52 403

原创 Linux: network: 建立socket以及设置nonblock/opt所需的时间

最近在扩大socket数量的时候发现程序在完成所有的socket创建设置的时间不短。通过测试发现这几个步骤前后需要的时间是10ms。

2024-08-01 11:35:15 64

原创 c/c++: warning: “/*“ within comment [-Wcomment]

这个的警告的意思是说,再注释里,又有注释起始符,“/*”, “//”这个检查还是很有必要,可以避免人为失误导致的错误。

2024-08-01 09:33:42 198

原创 Linux: network: mlx5_core crash;dos

是tap的驱动向下传递的包的length太小,而mlx5_core 默认的最小是一定的,导致访问越界出现问题。一个问题mlx5应不应该做一些校验,避免此类事情的发生。intel的网卡是有这种问题包的预校验。

2024-07-30 13:05:54 126

原创 Linux: network: raw socket发送garp

需要注意,在设置sender/target mac地址的时候,需要注意一个问题。如果不做socket的bind 网络接口的操作。mac地址设置不上去。

2024-07-29 17:12:23 73

原创 coredump: 结构体变更之后的编译一致性问题

最近遇到一个coredump,发生的点是程序试图将动态链接库代码映射的内存置0.所以要确保,结构体发生变更后,所有的目标文件,都需要重新编译。最后发现是数据结构发生改变之后,导致内存访问越界错误。比如,像0xf6d5b000 写入0.

2024-07-29 11:37:48 716

原创 c/c++: <command-line>: note: this is the location of the previous definition

代表的意思是,在gcc的命令行里已经定义了这个宏,但是在源文件里又重新定义了一次。

2024-07-20 06:37:29 106

原创 glibc: getifaddrs_internal 占用大量cpu

最终发现,是因为系统里的interface/ip配置的量太大,而arping命令会使用这个getifaddrs这个接口函数。这里可以看到是arping这个命令,里的getifaddrs_internal,会占用这个cpu。这里也看到perf没有抓到详细的backtrace路径。

2024-07-20 06:36:48 319

原创 Linux: network:ethtool 显示speed unknown的原因一个

或者是没有把网卡拉起来。可能的原因有,物理链接错误。

2024-07-19 10:36:04 330 1

原创 c/c++: warning: pointer targets in passing argument 1 of ‘snprintf‘ differ in signedness [-Wpointer-

这里的意思是,函数第一个参数是,指针,类型一个是char,但是传递进来的一个是unsigned char类型的指针。

2024-07-19 08:59:54 815

原创 c/c++:多线程下调用exit接口函数的问题

如果一个进程main函数里注册了一个信号,有一个信号处理函数,最后会调用exit接口函数。而且程序是多个线程,其中有的线程的优先级比较高。我们知道exit函数会调用全局变量的析构函数,这个时候,有没有可能这个线程还在访问这个全局变量,但是已经被exit析构了呢?这个答案是:会发生这种情况。所以需要注意会产生coredump。下面是验证的小程序。

2024-07-18 16:45:29 393

原创 C/C++: 给人的一个假象;一条语句是否是原子操作的最小单位?

这里给出了一个AC-unsafe的代码示例,其中就有提到一条C/C++语句,所代表的汇编质量可能是多个。所以C/C++的一条语句不是原子操作的最小单位。但是这种经过汇编方式方便高级语言的方式会给人带来的一个小误解。所以大家要有这个潜意识!

2024-07-18 03:49:00 500

原创 Linux: network: device事件注册机制 chatGPT; notify

在这个示例中,my_netdev_event 函数会在网络设备被注销(NETDEV_UNREGISTER)时打印一条信息。通过 register_netdevice_notifier 和 unregister_netdevice_notifier 函数注册和注销通知块。在 Linux 内核中,有关网络设备(net-device)的事件注册机制,允许用户在网络设备的状态发生变化(例如设备被删除、添加或修改)时接收通知。这个机制确保了当网络设备发生变化时,内核模块或应用程序可以及时收到通知并进行相应处理。

2024-07-17 10:48:48 153

iperf-rhel6

iperf免安装版,rhel-6版本。

2023-07-19

容量提高遇到的问题汇总

在增加产品内部IP、subnet、VLAN个数增加做的一个小总结。

2023-06-10

C,删除无用ifdef宏的工具

ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=5575120baf228fa8a319b45294f974979efe29d7, not stripped, too many notes (256) https://mzhan017.blog.csdn.net/article/details/128826587

2023-02-03

MTU 相关知识总结点(一)

某些事物与我们的工作、生活、社会息息相关,却又不甚了解其内部实现运行机制。 MTU就是其中一个例子! 其实MTU 还好,起码有源码可以自己调查,有书籍可看。网络分享的经验。网络上的MTU的知识量非常庞大

2022-10-17

刨析极限的保号性(一)

刨析极限的保号性(一)

2022-10-03

性能优化实例分析(一)

根据Kernel的一个优化,做的一个小分析。

2022-09-29

一次kernel bug的分析过程

记录一次kernel bug的分析过程,万事开头难,希望此次是一个好的开端。

2022-08-30

cron-job-pam

介绍cron-job-pam之间的联系。

2022-08-14

通过interface名称,查询索引值

通过interface名称,查询索引值

2022-07-15

glibc configure后的中间文件

glibc configure后的中间文件包括 Makefile config.status

2022-06-09

数学题里的逆向思维(一)

数学题里的逆向思维(一)

2022-06-01

glibc-getopt

从glibc摘出来的getopt函数,可以直接运行产生coredump。有兴趣的可以下载研究。

2022-05-21

symbolic logic

symbolic logic

2022-05-18

ip添加vlan interface的strace日志

./strace ip link add link int0 name int0.1111 type vlan protocol 802.1Q id 1111 及ip link code 分析

2022-03-29

Linux绿色gdb,无需安装,支持c++对象

需要在/目录解压使用

2022-03-29

netlink查询数据时的避坑总结

netlink查询数据时的避坑总结

2022-03-29

避免挖坑-pselect 和select的使用

避免挖坑-pselect 和select的使用

2022-03-29

Netlink 实际操作代码,实际可以参考iproute源代码做,这里只是方便自己使用的一个样例

Netlink 实际操作代码,实际可以参考iproute源代码做,这里只是方便自己使用的一个样例

2022-03-12

Linux Kernel 日常分析总结

Linux Kernel 日常分析总结,函数调用流程图;持续更新中。

2022-02-16

RHEL8 Kernel 编译配置文件样例

RHEL8 Kernel 编译config配置

2022-02-16

timer_signal 实例

timer_signal 实例

2022-01-10

RFC_0826_ARP.docx

整理的word格式,加注释

2021-09-08

免安装strace strace.zip

免安装strace [root@vmtca-2003 strace-5.1]# ldd strace linux-vdso.so.1 (0x00007ffc14ffb000) librt.so.1 => /lib64/librt.so.1 (0x00007fe620539000) libc.so.6 => /lib64/libc.so.6 (0x00007fe620174000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fe61ff54000) /lib64/ld-linux-x86-64.so.2 (0x00007fe620741000)

2021-07-20

gdb-10.1.tar.gz

免安装,免依赖,Linux系统可使用的gdb

2021-06-09

pktDump.cap

pktDump.cap

2021-04-13

Linux Kernel设置irq affinity选项的callback

dmesg 日志

2021-04-07

Net-Interface-1.016.tar.gz

http://search.cpan.org/perldoc?Net::Interface 对Redhat 8 做了适配,可以使用高级gcc版本来编译;

2021-01-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除