Debian kernels have disabled legacy vsyscall page support meaning they
cannot runs binaries that predate c.2013. To enable it again you must
add vsyscall=emulate to the kernel command line when booting. It's
unclear why Debian disabled this as according to the documentation:
Disabling this option saves about 7K of kernel size and
possibly 4K of additional runtime pagetable memory.
(presumably the "runtime pagetable memory" is per-process?) It seems
to me like a rather poor trade-off for not being able to run binaries
which are just 5 years old.
While I was writing this patch I imagined a much more complex
automatic workaround where we would try to detect if the host kernel
had this problem and add the extra vsyscall=emulate parameter
automatically. ‘./configure’ might carry a binary (for x86_64 only?)
built to use the vsyscall page and try to run it under the host
kernel. If it failed it would suggest using the workaround.
This solution seems a bit complex, and so this patch simply updates
the documentation which hopefully will make the problem discoverable.
I don't know how widespread this problem is. We've not seen it in
Fedora/RHEL kernels AFAIK.
Rich.