Skip to content

Commit 0f06c14

Browse files
committed
fixup! properly track C memory management via ptrace
1 parent bd4dab6 commit 0f06c14

File tree

3 files changed

+11
-8
lines changed

3 files changed

+11
-8
lines changed

Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,12 @@ features = ['unprefixed_malloc_on_supported_platforms']
3939
libc = "0.2"
4040
libffi = "4.0.0"
4141
libloading = "0.8"
42+
nix = { version = "0.30.1", features = ["mman", "ptrace", "signal"] }
43+
ipc-channel = "0.19.0"
44+
serde = { version = "1.0.219", features = ["derive"] }
4245

4346
[target.'cfg(all(unix, any(target_arch = "x86", target_arch = "x86_64")))'.dependencies]
44-
nix = { version = "0.30.1", features = ["mman", "ptrace", "signal"] }
4547
iced-x86 = "1.21.0"
46-
ipc-channel = "0.19.0"
47-
serde = "1.0.219"
4848

4949
[target.'cfg(target_family = "windows")'.dependencies]
5050
windows-sys = { version = "0.59", features = [

src/discrete_alloc.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,9 +176,8 @@ impl MachineAlloc {
176176
self.dealloc_multi_page(ptr, layout);
177177
}
178178
} else {
179-
let pinfo = std::iter::zip(&mut self.pages, &mut self.allocated).find(|(page, _)| {
180-
page.addr() == page_addr
181-
});
179+
let pinfo = std::iter::zip(&mut self.pages, &mut self.allocated)
180+
.find(|(page, _)| page.addr() == page_addr);
182181
let Some((_, pinfo)) = pinfo else {
183182
panic!("Freeing in an unallocated page: {ptr:?}\nHolding pages {:?}", self.pages)
184183
};

src/shims/trace.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,9 @@ fn sv_loop(listener: ChildListener, t_event: ipc::IpcSender<MemEvents>) -> ! {
272272
);
273273
}
274274
_ => {
275-
eprintln!("Process unexpectedly stopped at {signal}; continuing...");
275+
eprintln!(
276+
"Process unexpectedly stopped at {signal}; continuing..."
277+
);
276278
ptrace::syscall(pid, None).unwrap();
277279
}
278280
}
@@ -319,7 +321,9 @@ fn sv_loop(listener: ChildListener, t_event: ipc::IpcSender<MemEvents>) -> ! {
319321
let addr = regs.ax();
320322
mappings.push((addr, len as _));
321323
} else {
322-
eprintln!("Process returned from mmap syscall without entering it? Attempting to continue...");
324+
eprintln!(
325+
"Process returned from mmap syscall without entering it? Attempting to continue..."
326+
);
323327
}
324328
}
325329
} else if syscall_nr as i64 == libc::SYS_munmap {

0 commit comments

Comments
 (0)