gcl-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [Gcl-devel] Re: Axiom on Windows


From: Mike Thomas
Subject: RE: [Gcl-devel] Re: Axiom on Windows
Date: Wed, 16 Jun 2004 17:54:35 +1000

Hi everyone.

I've taken another step towards solving part of the Windows Axiom
"make-databases" problem.  The trace is below.

There are really two problems here I think, first, the invalid? returns from
(probe-file "./") and (namestring nil) and second, the seg-fault further on
which I have yet to trace, but which seems like a rerun of previous crashes
during error conditions on Windows - (si::chdir "NIL") normally just gives:

===========================================================================
>(si:chdir "NIL")

Error in EVAL [or a callee]: Can't change the current directory to "NIL".

Fast links are on: do (use-fast-links nil) for debugging
Broken at SYSTEM:CHDIR.  Type :H for Help.
 1 (Abort) Return to top level.
===========================================================================

but in the case shown below there is a disaster.

SO:

The "localdatabase" line in the trace below runs as follows:

  (localdatabase nil
     (list (list '|dir| (namestring (probe-file "./")) ))
     'make-database)

(probe-file "./") on Windows GCL *(CLtL1) gives nil which is, I think,
invalid.  LispWorks gives the current working directory which I believe
would be the correct result - or perhaps "./"?

Likewise, (namestring nil) returns the string "nil" which I also think is
invalid - LispWorks raises an error which, again, I think would be the
correct response.

Paul - What do you think these functions should do?

Camm - What happens on Linux with these items?
     - This also potentially raises the issue of getting the current
       directory again on Windows, which I recently side-stepped in the
       interest of expediency.  In fact, Windows offers a lovely function
       which avoids the hypothetically mallocing getcwd(), namely:
              DWORD GetCurrentDirectory(
                     DWORD nBufferLength,
                     LPTSTR lpBuffer
              );
       it uses a passed in buffer as you can see.  I intend to use this
function
       in 2.7.0 as required (for the purposes of Axiom's GCL source tree we
       can just provide a patch as currenly happens).

Michael Koehne - don't even think about saying "I told you so."!!!

Cheers

Mike Thomas.


Tracing:

(1) ->  )lisp (trace make-databases)

Value = (MAKE-DATABASES)
(1) ->  )lisp (trace make-database)

Value = (MAKE-DATABASE)
(1) ->  )lisp (trace localdatabase)

Value = (LOCALDATABASE)
(1) ->  )lisp (si::use-fast-links nil)

Value = NIL
(1) -> )lisp (make-databases "" nil)

  1> (MAKE-DATABASES "" NIL)
    2> (MAKE-DATABASE :OPERATIONALIST NIL :NILADIC T)
    <2 (MAKE-DATABASE #S(DATABASE ABBREVIATION NIL ANCESTORS NIL CONSTRUCTOR
NIL
 CONSTRUCTORCATEGORY NIL CONSTRUCTORKIND NIL CONSTRUCTORMODEMAP NIL COSIG
NIL DE
FAULTDOMAIN NIL MODEMAPS NIL NILADIC T OBJECT NIL OPERATIONALIST NIL
DOCUMENTATI
ON NIL CONSTRUCTORFORM NIL ATTRIBUTES NIL PREDICATES NIL SOURCEFILE NIL
PARENTS
NIL USERS NIL DEPENDENTS NIL SPARE NIL))
    2> (MAKE-DATABASE :OPERATIONALIST NIL :CONSTRUCTORKIND |domain|)
    <2 (MAKE-DATABASE #S(DATABASE ABBREVIATION NIL ANCESTORS NIL CONSTRUCTOR
NIL
 CONSTRUCTORCATEGORY NIL CONSTRUCTORKIND |domain| CONSTRUCTORMODEMAP NIL
COSIG N
IL DEFAULTDOMAIN NIL MODEMAPS NIL NILADIC NIL OBJECT NIL OPERATIONALIST NIL
DOCU
MENTATION NIL CONSTRUCTORFORM NIL ATTRIBUTES NIL PREDICATES NIL SOURCEFILE
NIL P
ARENTS NIL USERS NIL DEPENDENTS NIL SPARE NIL))
    2> (MAKE-DATABASE :OPERATIONALIST NIL :CONSTRUCTORKIND |domain|)
    <2 (MAKE-DATABASE #S(DATABASE ABBREVIATION NIL ANCESTORS NIL CONSTRUCTOR
NIL
 CONSTRUCTORCATEGORY NIL CONSTRUCTORKIND |domain| CONSTRUCTORMODEMAP NIL
COSIG N
IL DEFAULTDOMAIN NIL MODEMAPS NIL NILADIC NIL OBJECT NIL OPERATIONALIST NIL
DOCU
MENTATION NIL CONSTRUCTORFORM NIL ATTRIBUTES NIL PREDICATES NIL SOURCEFILE
NIL P
ARENTS NIL USERS NIL DEPENDENTS NIL SPARE NIL))
    2> (MAKE-DATABASE :OPERATIONALIST NIL :CONSTRUCTORKIND |domain|)
    <2 (MAKE-DATABASE #S(DATABASE ABBREVIATION NIL ANCESTORS NIL CONSTRUCTOR
NIL
 CONSTRUCTORCATEGORY NIL CONSTRUCTORKIND |domain| CONSTRUCTORMODEMAP NIL
COSIG N
IL DEFAULTDOMAIN NIL MODEMAPS NIL NILADIC NIL OBJECT NIL OPERATIONALIST NIL
DOCU
MENTATION NIL CONSTRUCTORFORM NIL ATTRIBUTES NIL PREDICATES NIL SOURCEFILE
NIL P
ARENTS NIL USERS NIL DEPENDENTS NIL SPARE NIL))
    2> (MAKE-DATABASE :OPERATIONALIST NIL :CONSTRUCTORKIND |domain|)
    <2 (MAKE-DATABASE #S(DATABASE ABBREVIATION NIL ANCESTORS NIL CONSTRUCTOR
NIL
 CONSTRUCTORCATEGORY NIL CONSTRUCTORKIND |domain| CONSTRUCTORMODEMAP NIL
COSIG N
IL DEFAULTDOMAIN NIL MODEMAPS NIL NILADIC NIL OBJECT NIL OPERATIONALIST NIL
DOCU
MENTATION NIL CONSTRUCTORFORM NIL ATTRIBUTES NIL PREDICATES NIL SOURCEFILE
NIL P
ARENTS NIL USERS NIL DEPENDENTS NIL SPARE NIL))
    2> (LOCALDATABASE NIL ((|dir| "NIL")) MAKE-DATABASE)

Program received signal SIGSEGV, Segmentation fault.
0x00458e91 in equal (x=0x0, y=0x103da7e0) at predicate.c:496
496             if ((t = type_of(x)) != type_of(y))
(gdb) bt
#0  0x00458e91 in equal (x=0x0, y=0x103da7e0) at predicate.c:496
#1  0x1051cb72 in ?? ()




| -----Original Message-----
| From: address@hidden
| [mailto:address@hidden
| Behalf Of Mike Thomas
| Sent: Wednesday, 9 June 2004 6:09 PM
| To: Camm Maguire
| Cc: address@hidden Org; Root; address@hidden; Bill Page
| Subject: RE: [Gcl-devel] Re: Axiom on Windows
|
|
| Hi Camm/Tim.
|
| | It looks like the 'nil' you find below is either that supplied as an
| | argument above or results from the missing environment.  In any case,
| | should this persist, it would be helpful (for someone, not you
| | hopefully, you overworked soul!) to repeat the below with
| | (si::use-fast-links nil)
|
| I should have thought to try that sorry (gdb further down):
|
| Here is a Windows command prompt session in which I switch off
| C:\Documents and Settings\miketh>set AXIOM=c:\cvs\head\axiom\mnt\windows
|
| C:\Documents and Settings\miketh>path
| c:\cvs\head\axiom\mnt\windows\bin;%path%
|
| C:\Documents and Settings\miketh>AXIOMsys.exe
| GCL (GNU Common Lisp)  2.6.2 CLtL1   Jun  8 2004 13:12:41
| Source License: LGPL(gcl,gmp), GPL(unexec,bfd)
| Binary License:  GPL due to GPL'ed components: (UNEXEC)
| Modifications of this banner must retain notice of a compatible license
| Dedicated to the memory of W. Schelter
|
| Use (help) to get some basic information on how to use GCL.
|                         AXIOM Computer Algebra System
|                 Version of Tuesday June 8, 2004 at 13:25:54
| ------------------------------------------------------------------
| ----------
| -
|    Issue )copyright to view copyright notices.
|    Issue )summary for a summary of useful system commands.
|    Issue )quit to leave AXIOM and return to shell.
| ------------------------------------------------------------------
| ----------
| -
|
| (1) -> )lisp (si::use-fast-links nil)
|
| Value = NIL
| (1) -> )lisp (make-databases "" nil)
|
| Error: Caught fatal error [memory may be damaged]
| Error signalled by |SATURNSAYERRORLY|.
| Broken at SYSTEM::BREAK-LEVEL.  Type :H for Help.
| BOOT>>:bt
|
| #0   APPLY {loc0=#<compiled-function
| system:universal-error-handler>,loc1=:error,loc2=nil,l...} [ihs=32]
| #1   APPLY {loc0=#<compiled-function
| system:universal-error-handler>,loc1=:error,loc2=nil,l...} [ihs=31]
| #2   LAMBDA {} [ihs=28]
| #3   pushSatOutput
| {loc0=|line|,loc1=#<OBJNULL>,loc2=#<OBJNULL>,loc3=#<OBJNULL>,loc4=
| #<OBJNULL>
| ,loc...} [ihs=27]
| #4   saturnSayErrorly {errorlabel="System error",msg=("   " "Can't change
| the current directory to \"N...} [ihs=26]
| #5   sayErrorly {errorlabel="System error",msg=("   " "Can't change the
| current directory to \"N...} [ihs=25]
| #6   errorSupervisor1 {loc0=|SystemError|,loc1="Can't change the current
| directory to \"NIL\".",loc2=|...} [ihs=24]
| #7   errorSupervisor {loc0=|SystemError|,loc1="Can't change the current
| directory to \"NIL\"."} [ihs=23]
| #8   systemError {g160176="Can't change the current directory to
| \"NIL\"."}
| [ihs=22]
| #9   LAMBDA {"NIL"=nil,} [ihs=15]
| #10   CHDIR
| {loc0="NIL",loc1=:error,loc2=nil,loc3=localdatabase,loc4="",loc5="Can't
| change t...} [ihs=14]
| #11   LOCALDATABASE {filelist=nil,options=((|dir|
| "NIL")),make-database?=make-database,loc3="NIL",fi...} [ihs=13]
| #12   MAKE-DATABASES {ext="",g170243=nil,g170208=""} [ihs=12]
| #13   nplisp {loc0=nil,loc1=nil,loc2=nil,loc3=#<compiled-function
| make-databases>} [ihs=11]
| #14   handleNoParseCommands {unab=|lisp|,string="lisp (make-databases \"\"
| nil)",loc2=(|lisp| |pquit| |quit|...} [ihs=10
| ]
| #15   doSystemCommand {string="lisp (make-databases \"\" nil)",line="lisp
| (make-databases \"\" nil)"} [ihs=9]
| #16   ExecuteInterpSystemCommand {string=")lisp (make-databases \"\"
| nil)",loc1=0} [ihs=8]
| #17   ncloopCommand {line=")lisp (make-databases \"\"
| nil)",n=1,loc2=1,loc3=(")lisp (si::use-fast-li...} [ihs=7]
| #18   RESTART {} [ihs=6]
| #19   TOP-LEVEL
| {loc0=nil,loc1=0,loc2=0,loc3=nil,loc4=nil,loc5=nil,loc6=nil,loc7="
| c:/cvs/hea
| d/ax...} [ihs=5]
| #20   FUNCALL {loc0=#<compiled-function system:top-level>} [ihs=4]
| NIL
| BOOT>>
|
| ==================================================================
| ==========
| =====
| So you are right - it is the niul passed in as an argument being
| treated as
| a string?
|
| And with gdb:
|
|
| ==================================================================
| ==========
| =====
| $ gdb ./mnt/windows/bin/AXIOMsys.exe
| GNU gdb 6.0
| Copyright 2003 Free Software Foundation, Inc.
| GDB is free software, covered by the GNU General Public License,
| and you are
| welcome to change it and/or distribute copies of it under certain
| conditions.
| Type "show copying" to see the conditions.
| There is absolutely no warranty for GDB.  Type "show warranty"
| for details.
| This GDB was configured as "i686-pc-mingw32"...
| (gdb) r
| Starting program: c:\cvs\head\axiom/./mnt/windows/bin/AXIOMsys.exe
| GCL (GNU Common Lisp)  2.6.2 CLtL1   Jun  8 2004 13:12:41
| Source License: LGPL(gcl,gmp), GPL(unexec,bfd)
| Binary License:  GPL due to GPL'ed components: (UNEXEC)
| Modifications of this banner must retain notice of a compatible license
| Dedicated to the memory of W. Schelter
|
| Use (help) to get some basic information on how to use GCL.
|                         AXIOM Computer Algebra System
|                 Version of Tuesday June 8, 2004 at 13:25:54
| ------------------------------------------------------------------
| ----------
| -
|    Issue )copyright to view copyright notices.
|    Issue )summary for a summary of useful system commands.
|    Issue )quit to leave AXIOM and return to shell.
| ------------------------------------------------------------------
| ----------
| -
|
| (1) -> )lisp (make-databases "" nil)
|
| Program received signal SIGSEGV, Segmentation fault.
| 0x0045e2ad in equal (x=0x0, y=0x103d945c) at predicate.c:496
| 496             if ((t = type_of(x)) != type_of(y))
| (gdb) bt
| #0  0x0045e2ad in equal (x=0x0, y=0x103d945c) at predicate.c:496
| #1  0x104fdbed in ?? ()
| (gdb)
| ==================================================================
| ==========
| =====
|
| Late for the train as usual.
|
| Cheers
|
| Mike Thomas.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]