V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  PTLin  ›  全部回复第 2 页 / 共 16 页
回复总数  303
1  2  3  4  5  6  7  8  9  10 ... 16  
给你解释一下为什么你的代码会发生 segmentation fault ,以加强你对整个体系的认识。

在 Linux 中,地址空间会被分成一系列的段,例如映射到可执行文件段,映射到共享库的段,匿名映射(通常被用于堆)的段,这一系列段由叫 vma 结构的集合组成。可以从 proc 文件系统对应进程号的 maps 文件看到。

对于 x86 来讲虚拟地址会通过页表进行地址映射。倘若在页表里地址对应的条目不存在将会引发 page_fault 中断。
在中断的处理过程内,由于你的地址 0x1 是用户地址所以跳转到了处理用户地址的函数 do_user_addr_fault 。

这个函数会查找这个地址是否属于某个 vma ,然而没有查询到,所以调用了 bad_area_nosemaphore 向这个进程发送了 SIGSEGV 信号。
源码里的 MAINTAINERS 里搜 rdma 能看到相关的
47 天前
回复了 rookiemaster 创建的主题 C c 语言是如何给汉字编码的?
我感觉,Borrow 就作为泛型 map key 的时候才能用上,自己写函数的话这种场景也少。
AsRef 也就会作为文件路径参数里会出现,例如,p: impl AsRef<Path>。
excalidraw 就行,新出了 ai 功能,就 tcp 例子这个我试了下可以画出。
照着 rustls 抄一个吧,要不然 tls 的好几次握手,证书校验,密钥协商生成密钥等等,够你喝好几壶的了。
不过按照我的经验老师可能也半懂不懂你的意思吧,没想让你自己实现整个 tls 。
57 天前
回复了 nmap 创建的主题 Linux Linux 怎么隐藏监听的端口?
对于 ss 这种用 Netlink 的 epbf lsm 到 socket_create 应该就行
@xiaozhaoz 没太理解你说的,你说的是把 CR3[63:MAXPHYADDR]写入 1 触发 GP 异常,然后在这个异常处理里分配具体的一级目录和写入 cr3 吗?
进入 ia32e 模式后,cpu 指令中的全部地址都是虚拟地址,都需要通过 mmu 进行翻译,mmu 自然就需要 cr3 中的一级页表,不是可不可以按需的问题,而是 x86 的设计上就不可能能按需创建。
在一级页表中的目录项才可以指明是否存在,不存在的话发生缺页中断,进而从 cr2 读取到缺页的地址进行下一步操作。
60 天前
回复了 VagrantZ 创建的主题 Windows Microsoft is killing off Windows Subsystem for Android
我使用的问题就有:

性能太差,玩不吃配置的游戏都能卡
资源占用高,风扇响的厉害
每次用完都要手动关闭
62 天前
回复了 lsk569937453 创建的主题 Rust hyper v1+anyhow 可能导致性能急速下降
@lsk569937453 我比较好奇题主是什么平台运行的代码
63 天前
回复了 lsk569937453 创建的主题 Rust hyper v1+anyhow 可能导致性能急速下降
又测试了下,调用层数多点能有十多倍的差距
https://imgur.com/SVIrrfT
https://imgur.com/2LDykii
63 天前
回复了 lsk569937453 创建的主题 Rust hyper v1+anyhow 可能导致性能急速下降
虽然不知道你代码具体原因是什么,但是 anyhow 1.0.80 不同 feature backtrack 的速度确实不一样,不开启 std feature 的话用的是 anyhow 自己的实现,开启的话用的是标准库的实现,在 Windows 上好像是标准库的实现比较慢。
```rust
use anyhow::anyhow;
use std::time::Instant;

fn main() {
for _ in 0..20 {
let now = Instant::now();

for _ in 0..10000 {
let _ = anyhow!("asd");
}

println!("{:?}", now.elapsed());
}
}
```
@qq135449773 那要看监控的事件是什么以及 bpf 程序写的是不是合理了,tracepoint 和 kprobe 一般都是一百纳秒以内,并且触发次数不是太频繁可以忽略不记,假如是上面用户空间的 uprobe 的话那开销就大了。
70 天前
回复了 JinTianYi456 创建的主题 Windows 这个文件夹里没有文件?
在文件夹下运行 attrib /s /d -s -h,把-换成+就是隐藏
70 天前
回复了 fgasdzxc 创建的主题 Go 编程语言 想探讨下 Go 中的网络编程模式
其实和操作系统一样的,发起读之后将这个线程挂到某个 waitlist 中,然后从运行队列里清除这个线程然后进行主动调度。当等待的条件满足后将 waitlist 中的线程放到运行队列里等待被重新调度到。
73 天前
回复了 giiiiiithub 创建的主题 Rust rust 生命周期错误
@giiiiiithub 你标题的问题就是 Drop check 的问题,你 18 楼的问题是更复杂的生命周期协变 逆变的问题
https://doc.rust-lang.org/nomicon/subtyping.html
https://rustcc.cn/article?id=38000317-0d25-40b1-aee9-81143322bec4

另外,你标题代码没有 use ,我没以为是 mpmc 。
73 天前
回复了 giiiiiithub 创建的主题 Rust rust 生命周期错误
附带一提,你这个例子里是 Sender 中的 SenderFlavor 实现了 Drop ,所以你在文档里看不到 Sender 实现了 Drop ,并且假如这个类型没实现 Drop ,就不会触发 Drop check ,你这个代码也就没问题。
73 天前
回复了 giiiiiithub 创建的主题 Rust rust 生命周期错误
你这个其实不算生命周期问题,是 drop check 的问题。主要就是保证值析构时,析构函数不会访问到悬垂引用。

Sender 里 send 的行为可能是这样:send 时把值存在了内部某个地方,drop 的时候可能对这个值进行了某些操作,这种情况下这个值必然不能先于 Sender 被 drop ,所以调下 drop 顺序就能解决。

你这个 case 里 drop 另一个影响是,你在 send 后尝试对字符串进行 push 这种借出可变引用的行为也会报错,无论你是否调换了顺序。

可以看看这两个: https://doc.rust-lang.org/nomicon/dropck.html
https://ng6qpa7sht.feishu.cn/docx/LGnVdlqwGoIUpuxUMWRcptEbndd
1  2  3  4  5  6  7  8  9  10 ... 16  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2392 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 30ms · UTC 03:53 · PVG 11:53 · LAX 20:53 · JFK 23:53
Developed with CodeLauncher
♥ Do have faith in what you're doing.