[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Gcl-devel] Re: Axiom on Windows
From: |
Camm Maguire |
Subject: |
Re: [Gcl-devel] Re: Axiom on Windows |
Date: |
21 Jun 2004 17:23:24 -0400 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 |
Greetings!
"Mike Thomas" <address@hidden> writes:
> 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?
>(namestring nil)
"NIL"
>(probe-file "./")
#p"/fix/k/camm/gcl/gcl-2.6.2pre/"
>
I suspect the probe-file -- would be great if you could track this
down when time permits.
> - 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).
Great! Do you know if getwd can malloc in our usage?
Take care,
>
> 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.
>
>
>
>
--
Camm Maguire address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens." -- Baha'u'llah
- [Gcl-devel] Re: [Axiom-developer] Axiom on Windows, (continued)
[Gcl-devel] RE: [Axiom-developer] Axiom on Windows, Mike Thomas, 2004/06/10