AFLplusplus / AFLplusplus/LibAFL

Unmap LLMP Broker Pages eventually

Abierto
#848 0 comentarios 0 reacciones 0 asignados Ver en GitHub
enhancement
Lenguaje dominante
Rust
Estrellas
2.6k
Forks
481
Merge medio
2 d 30 min
PR fusionados (30 d)
16

Descripción

Right now, LLMP keeps pages from broker to the clients around indefinitely.
This is a deliberate choice: this way, a new client can be spawned and join fuzzing at any point in time and still replay all of the state.

However, this is an issue on low memory systems (...that cannot add enough swap) since all testcases may also be stored in memory, indefinitely this way.

Ideally, we'd have an optional feature in LLMP to delete old and unused broker pages.
To not crash newly spawned children, we are never allowed to remove the initial page, and we need to link the initial page to the currently active page before unmapping the next one.

It's definitely spicy WRT memory safety :)

For the pages from client to broker, we already have a method to reliably do this:
https://github.com/AFLplusplus/LibAFL/blob/4ccd85f568fe23f3012cb959a05e317c5ec405bd/libafl/src/bolts/llmp.rs#L928

From broker to client, we'll need proper ref counts on pages, and we have to unmap from oldest to newest page for this to work.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.