Skip to content

Conversation

@fabled
Copy link
Contributor

@fabled fabled commented Oct 31, 2025

Do not allow large data reads from reads from the section and program headers. Instead use io.ReaderAt to access this data.

This removes the usage of mmap in pfelf. This is motivated by the fact, that if using mmap, we have no good control over how the RSS explodes. This caused extra complexity to try to madvice the unneeded pages, and additional things to not reference data in the mmap area. Also mmapped data may get changed in the file after validation, so this adds an extra layer of security.

A new cache pfatbuf is added. The concept is to be able to create this on stack, and use it to cache the reads so that the users can access the cache buffers directly without copying. It is also essential that multiple caches can be created so the localized reads go to the same cache. The performance impact is still measurable (2-4x slower or so) depending how the cache works. Further research might be needed to allow tuning the cache better for different portions (sequential vs. random access patterns).

cc @florianl @christos68k

fixes #648

instead read the section and program header data using io.ReaderAt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

SymbolData maxCopy parameter is misleading and rarely effective due to mmap usage

1 participant