On Sun, Sep 13, 2020 at 01:10:46AM +0100, Aaron Sloman wrote:
> Having just run a standard update on my fedora 32 machine, I have a new
> kernel
> uname -rv
> 5.8.7-200.fc32.x86_64 #1 SMP Mon Sep 7 15:26:10 UTC 2020
>
> Unfortunately, it won't let me run, or re-build Poplog.
>
> Corepop is:
>
> 2490157 Aug 22 18:45 /usr/local/poplog/v16/poplog_base/pop/pop/corepop
>
> Trying to run corepop produces:
>
> % corepop
>
> Sussex Poplog (Version 16.0 nie, 14 lip 2019, 00:32:57 UTC)
> Copyright (c) 1982-1999 University of Sussex. All rights reserved.
>
> Setpop
>
> <<<<<<< Access Violation: PC = 00000000007AB1E0, Addr = 00000000007AB1E0,
> Code = 2 >>>>>>>
>
>
> ;;; MISHAP - serr: MEMORY ACCESS VIOLATION (attempt to alter non-writeable
> ;;; system structure?)
> ;;; PRINT DOING
> ;;; DOING : null nextitem pop_setpop_compiler
>
> Setpop
>
> <<<<<<< Access Violation: PC = 00000000007AB760, Addr = 00000000007AB760,
> Code = 2 >>>>>>>
>
> ;;; MISHAP - serr: MEMORY ACCESS VIOLATION (attempt to alter
> non-writeable
> ;;; system structure?)
> ;;; PRINT DOING
> ;;; DOING : null nextitem pop_setpop_compiler
>
> ......
>
> BUT after a few more of those I get the Pop-11 colon prompt:
>
> and I can then give commands like these:
>
> Setpop
>
> : 2+2 =>
> ** 4
> : sqrt(99) =>
> ** 9.949874
>
> But trying to run ved produces more access violations --unsurprisingly
> since corepop doesn't include ved.
>
> I have never used gdb for debugging, but I tried to follow Waldek's recent
> instructions:
>
> gdb $usepop/pop/pop/corepop
> GNU gdb (GDB) Fedora 9.1-6.fc32
> Copyright (C) 2020 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later
> <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.
> Type "show copying" and "show warranty" for details.
> This GDB was configured as "x86_64-redhat-linux-gnu".
> Type "show configuration" for configuration details.
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>.
> Find the GDB manual and other documentation resources online at:
> <http://www.gnu.org/software/gdb/documentation/>.
>
> For help, type "help".
> Type "apropos word" to search for commands related to "word"...
> Reading symbols from /usr/local/poplog/v16/poplog_base/pop/pop/corepop...
> (gdb) run
> Starting program: /home/usr/local/poplog/v16/poplog_base/pop/pop/corepop
> PATHS DONE PREVIOUSLY
>
> Sussex Poplog (Version 16.0 nie, 14 lip 2019, 00:32:57 UTC)
> Copyright (c) 1982-1999 University of Sussex. All rights reserved.
>
> Setpop
>
> Program received signal SIGSEGV, Segmentation fault.
> 0x00000000007ab1e0 in ?? ()
>
> I don't know if there is anything else I can do.
>
As I wrote, we need to get info from gdb, like:
info registers
and
disassemble 0x7ab1e0, 7ab1e0+40
ATM the following is known or likely:
- address 0x7ab1e0 is above code in corepop, so either this is
some wild jump (unlikely) or incrementaly compiled code
- 0x7ab1e0 is round number and PC coincides with address
so there is good chance that this is first instruction of
generated code and error is because memory is marked as
non-executable (info from disassemble and register content
could verify if this is really first instruction)
Not much, but smells like SELINUX...
--
Waldek Hebisch