Lox wrote:What are the typical offenders out there on a non-desktop box? I assume that (temporary?) RWX mappings are the biggest culprit?
the conflicting programs have changed over the years but the underlying reasons didn't, it's either runtime code generation prevention or ASLR that programs run afoul of.
for the former category, it used to be (read: decade ago
) nested function trampolines (in glibc support code itself, IIRC, localegen?, nowadays we have grub2, etc) and all sorts of runtime codegen (the old X server module loader, java, then came various multimedia related libraries with text relocations, 3D engines, etc). what would bit one even on a server was mostly java (think tomcat) and text relocations but lately it's also bad glibc code that wants to modify RELRO segments later (due to another broken feature, GNU_STACK).
for ASLR the only conflicts i know of were due to incorrect programmer assumptions about the behaviour of hinted mmap, first the old glibc linuxthreads library (since replaced with NPTL) then lately jemalloc (used mostly in firefox et al. i think, the fixed version has yet to be imported into firefox though) and gcc (PCH support code assumes that certain parts of the address space are always available).