llmp debug added

This commit is contained in:
Dominik Maier 2021-04-07 13:35:29 +02:00
parent 711b54929a
commit 0ac48c2e0b
2 changed files with 42 additions and 2 deletions

View File

@ -35,6 +35,7 @@ std = [] # print, sharedmap, ... support
anymapdbg = ["serde_json"] # uses serde_json to Debug the anymap trait. Disable for smaller footprint.
derive = ["libafl_derive"] # provide derive(SerdeAny) macro.
llmp_small_maps = [] # reduces initial map size for llmp
llmp_debug = [] # Enables debug output for LLMP
[[example]]
name = "llmp_test"
@ -56,6 +57,8 @@ serde_json = { version = "1.0", optional = true, default-features = false, featu
#TODO: for llmp brotli = { version = "3.3.0", default-features = false } # brotli compression
num_enum = "0.5.1"
backtrace = "0.3" # for llmp_debug
[target.'cfg(unix)'.dependencies]
libc = "0.2" # For (*nix) libc
nix = "0.20.0"

View File

@ -86,6 +86,9 @@ use std::os::unix::{
{io::AsRawFd, prelude::RawFd},
};
#[cfg(feature = "llmp_debug")]
use backtrace::Backtrace;
#[cfg(all(unix, feature = "std"))]
use uds::{UnixListenerExt, UnixSocketAddr, UnixStreamExt};
@ -785,6 +788,18 @@ where
/// listener about it using a EOP message.
unsafe fn handle_out_eop(&mut self) -> Result<(), Error> {
#[cfg(feature = "llmp_debug")]
{
let bt = Backtrace::new();
let shm = self.out_maps.last().unwrap();
println!(
"LLMP_DEBUG: End of page reached for map {} with len {}, sending EOP, bt: {:?}",
shm.shmem.shm_str(),
shm.shmem.map().len(),
bt
);
}
let old_map = self.out_maps.last_mut().unwrap().page_mut();
// Create a new shard page.
@ -1024,8 +1039,12 @@ where
// Mark the new page save to unmap also (it's mapped by us, the broker now)
ptr::write_volatile(&mut (*page).save_to_unmap, 1);
#[cfg(feature = "std")]
dbg!("Got a new recv map", self.current_recv_map.shmem.shm_str());
#[cfg(feature = "llmp_debug")]
println!(
"LLMP_DEBUG: Got a new recv map {} with len {:?}",
self.current_recv_map.shmem.shm_str(),
self.current_recv_map.shmem.map().len()
);
// After we mapped the new page, return the next message, if available
return self.recv();
}
@ -1135,6 +1154,13 @@ where
{
/// Creates a new page, initializing the passed shared mem struct
pub fn new(sender: u32, mut new_map: SH) -> Self {
#[cfg(feature = "llmp_debug")]
println!(
"LLMP_DEBUG: Initializing map on {} with size {}",
new_map.shm_str(),
new_map.map().len()
);
unsafe {
_llmp_page_init(&mut new_map, sender, false);
}
@ -1143,6 +1169,17 @@ where
/// Maps and wraps an existing
pub fn existing(existing_map: SH) -> Self {
#[cfg(feature = "llmp_debug")]
{
let bt = Backtrace::new();
println!(
"LLMP_DEBUG: Using existing map {} with size {}, bt: {:?}",
existing_map.shm_str(),
existing_map.map().len(),
bt
);
}
let ret = Self {
shmem: existing_map,
};