I have copied the newpop11 of my last message from my kernel 5.8 Ubuntu, where it was built, but won't run, to an Ubuntu machine running kernel 5.4, where it runs successfully. Running strace, I see a difference in the second block of lines where "personality" occurs:

kernel 5.8:
personality(0xffffffff) = 0x40000 (PER_LINUX|ADDR_NO_RANDOMIZE)

personality(PER_LINUX|ADDR_NO_RANDOMIZE|READ_IMPLIES_EXEC) = 0x40000 (PER_LINUX|
ADDR_NO_RANDOMIZE)

kernel 5.4
personality(0xffffffff) = 0x400000 (PER_LINUX|READ_IMPLIES_EXEC)

personality(PER_LINUX|ADDR_NO_RANDOMIZE|READ_IMPLIES_EXEC) = 0x400000 (PER_LINUX
|READ_IMPLIES_EXEC)

Steve

On Fri, 7 May 2021, hebisch-at-math.uni.wroc.pl |pop-forum| wrote:

On Fri, May 07, 2021 at 02:01:11PM -0400, [email protected] wrote:
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.

If you have good build tree (with .o files) then running 'mklibpop' in
pop/extern/lib and then 'poplink_cmnd' in pop/pop with proper environment
(say via 'poplog.sh' script) should do.

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?

Could you try strace?  Running

./poplog.sh strace -o p_trace pop11

gives me pop11 prompt.  When I exit from poplog there is log of
system calls in p_trace.  What matters are lines around personality.
In my case I see:

personality(0xffffffff /* PER_??? */)   = 4194304
personality(0x440000 /* PER_??? */)     = 4194304
personality(0xffffffff /* PER_??? */)   = 4456448
readlink("/proc/self/exe", "/mnt/lv3/kompi0/poplog/pp6.pp3y/"..., 4096) = 45
execve("/mnt/lv3/kompi0/poplog/pp6.pp3y/pop/pop/pop11", ["pop11"], [/* 71 vars 
*/]) = 0

and later

personality(0xffffffff /* PER_??? */)   = 4456448

The calls with 0xffffffff as argument ask for current personality, we
need last value which in hex is 0x440000.  On my system default is
0x400000 (decimal 4194304).


--
                             Waldek Hebisch



Reply via email to