I don't know a way to rebuild on a machine that has no working version
of pop11 at all, which is the position on my Ubuntu LTS with kernel 5.8.
So I tried rebuilding, with the patch, on Scientific Linux 7. C
programs that I compile myself on the Scientic Linux machine run on the
Ubuntu one when all relevant libraries are present.
On SL, I get a new basepop11 which works as expected there. When I
transfer the new basepop11 to Ubuntu and try to run it, it loops,
using 100% of cpu, and never gives a system prompt. If I run it under
gdb, I get an infinite succession of lines
process 733915 is executing new program: /home/steve/basepop11
all with the same process number.
It's not a matter of total incompatibility between SL and Ubuntu,
because I also have access to an Ubuntu LTS system that is still on
kernel 5.4, and the new basepop11 is ok there. Any suggestions for
what to do differently or tests I should run?
Stephen Isard
On Fri, 7 May 2021, hebisch-at-math.uni.wroc.pl wrote:
I was pointed out to me that in Linux kernel 5.8 there is
a change to default memory settings: before readable memory
was executable by default, in 5.8 it is no longer executable
without explicit setting.
Attached patch to 'c_core.c' should restore previous
behaviour. We should probably explicitely set executable
permissions on all memory that we want to execute, but this
would require a bit more work. And without kernel 5.8
I would be unable to test such patch.
To test you need to apply patch to 'c_core.c', recompile
C routines and relink (there is no change to Pop11 code,
only to C file). Of course full rebuild will do.
--
Waldek Hebisch