[Top][All Lists]
[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.
- [Gcl-devel] Re: Axiom on Windows, (continued)
- [Gcl-devel] Re: Axiom on Windows, root, 2004/06/08
- [Gcl-devel] Re: [Axiom-developer] Axiom on Windows, David MENTRE, 2004/06/08
- [Gcl-devel] Re: [Axiom-developer] Axiom on Windows, David MENTRE, 2004/06/08
- [Gcl-devel] Re: Axiom on Windows, Camm Maguire, 2004/06/08
- RE: [Gcl-devel] Re: Axiom on Windows, Mike Thomas, 2004/06/08
- RE: [Gcl-devel] Re: Axiom on Windows, Mike Thomas, 2004/06/09
- Re: [Gcl-devel] Re: Axiom on Windows, Camm Maguire, 2004/06/21
- RE: [Gcl-devel] Re: Axiom on Windows, Mike Thomas, 2004/06/22
- Re: [Gcl-devel] Re: Axiom on Windows, Camm Maguire, 2004/06/22
[Gcl-devel] RE: [Axiom-developer] Axiom on Windows, Mike Thomas, 2004/06/10