[Date Prev] [Date Next] [Thread Prev] [Thread Next] Date Index Thread Index Search archive:
Date:Mon Jun 30 14:03:47 2003 
Subject:Re: 'errno' problem for poplog in redhat 9: Further progress 
From:Waldek Hebisch 
Volume-ID:1030630.04 

Aaron Sloman (axs@cs.bham.ac.uk) wrote:
: A little more thought suggested that that should be changed to ensure
: that the conversions between pop11 integers and system integers are
: right:
 
:  define active DO_ERRNO_VAL() -> _x;
:      _extern get_libc_errno() -> _x;
:      _pint(_x) -> _x;
:  enddefine;


:  define updaterof active DO_ERRNO_VAL(_x);
:      _extern set_libc_errno(_int(_x))
:  enddefine;

That does not seem right, the values obtained from/stored to
errno are clearly treated as non-pop objects. 

: After those changes rebuilding the system produced a version
: that went much further. I recompiled all the pop11 sources,
: as before, archived them using pglibr, used pglink -xm
: to create a version of newpop11 including motif, then
: tried running it.
 
: If I do all that with the new sources on a redhat 8 machine it all
: runs perfectly. If I copy over the linked binaries to redhat 9
: they produce a warning message about errno when they start up,
: but still run perfectly.
 
: However if I link the executables on redhat 9 from the same libraries
: and the same .o files, I get a new executable that I can start up
: without the warning message, and which will do many things (including
: creating saved images).
 
: But no version that has been linked on redhat 9 works perfectly.
 
: It doesn't report mishaps properly and will not start an
: empty file:
 
:  : ved fooo
 
:  ;;; MISHAP - CAN'T OPEN FILE (Resource temporarily unavailable)
:  ;;; INVOLVING:  <SYSTEM_OBJECT 40419A68>
:  ;;; DOING    :  runproc pop_setpop_compiler

That one seems clear: system return code is 2 (No such file or directory)
converted to pint it is 2*4+3=11 and 11 means Resource temporarily unavailable

: I can use it run ved, read files, load libraries. I can compile
: a definition of factorial and compute and print out factorial 600.
: But factorial 1000 triggers a garbage collection and it crashes.
: I also can't create $popsavelib/startup.psv
 
: And some error messages are still wrong:
: : "two" + 3 =>
 
: ;;; MISHAP - NUMBER(S) NEEDED
: ;;; INVOLVING:  3 <SYSTEM_OBJECT 401A4048>
: ;;; DOING    :  + pop_setpop_compiler
 
: This is puzzling because, as far as I can see the things I have
: changed do not affect the error handling in the arithmetic
: procedures.

Maybe updater of _ERRNO is leaving garbage on poplog stack?
By the way, I tried in slightly different way and at the moment 
I am getting similar mishaps. When I try to recompile I get:
Loading POPLINK Version 14.22

;;; MISHAP - ste: STACK EMPTY (missing argument? missing result?)
;;; FILE     :  /tmp/hebisch/poplog/v15.53/pop/lib/auto/load.p   LINE NUMBER:
;;;      10
;;; DOING    :  nextitem nextitem pop_setpop_compiler



--
                              Waldek Hebisch
hebisch@math.uni.wroc.pl    or hebisch@hera.math.uni.wroc.pl