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


Reply via email to