gcl-devel
[Top][All Lists]
Advanced

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

Re: [Gcl-devel] asdf


From: Faré
Subject: Re: [Gcl-devel] asdf
Date: Sat, 16 Nov 2013 02:05:46 -0500

OK, so I've investigated the errors some more, and after many
GCL-inspired improvements, I'm down to 9 failing scripts. These
remarks complement, but do not always override those in my previous
email.

Pathnames:
* GCL BUG: pathname parsing sometimes goes nuts.
  (pathname-directory #p"foo/") ;==> ("foo")
 This is wrong, it should be (:relative "foo"). GCL itself complains
about that later on.
* GCL BUG: this causes a segfault rather than an error
 (setf (logical-pathname-translations "TMP") '("**;*.*.*" #p"/tmp/**/*.*"))
* GCL BUG: logical pathnames don't parse into the correct type.
 (setf (logical-pathname-translations "TMP") '(("**;*.*.*" #p"/tmp/**/*.*")))
 (translate-logical-pathname #p"TMP:FOO.LISP")
 ;==> #P"/tmp/foo.lisp" ;; correct
 (typep #p"TMP:FOO.LISP" 'logical-pathname)
 ;==> NIL ;; WRONG!
* This causes the 6 remaining failures in asdf-pathname-test, because
the test will then try combinations that are invalid for
logical-pathnames, that it would have avoided had it detected that the
pathnames were "logical" (I prefer the word "lovecraftian" to describe
them).

Other:
* GCL BUG: (random (expt 36 8)) fails. Apparently, you can only yield
random numbers of size < 32 bits? I can work around that, but it's a
bug.
* GCL BUG: compile-file fails to return failure when there are full
warnings during the compilation.


More errors:
* After enabling simple-backtrace, I get a lot of this general kind of
error, with different conditions:
TEST ABORTED: Condition in CONDITIONS::COERCE-TO-CONDITION [or a
callee]: INTERNAL-SIMPLE-TYPE-ERROR:
CONDITIONS::INTERNAL-SIMPLE-LOAD-SYSTEM-DEFINITION-ERROR is not of
type (SATISFIES CONDITIONS::CONDITION-CLASS-P): Not a condition type:
CONDITIONS::INTERNAL-SIMPLE-LOAD-SYSTEM-DEFINITION-ERROR
Backtrace: error > system::error-in-error > system::process-error >
CONDITIONS::COERCE-TO-CONDITION

* Backtrace:  > asdf-test::call-with-test > system:lambda-closure >
block > let > catch > let > asdf/cache:call-wi
th-asdf-cache > load > conditions::old-load > system:load1 > progn >
asdf-test::assert-compare-helper > multiple
-value-call > uiop/run-program:run-program >
uiop/run-program::%use-system > uiop/run-program::%call-with-progra
m-io > uiop/stream:call-with-temporary-file >
uiop/utility:call-function > #:before1062526 > lambda > uiop/run-p
rogram::%call-with-program-io > uiop/stream:call-with-temporary-file >
uiop/utility:call-function > #:before1062
926 > lambda > uiop/run-program::%call-with-program-io >
uiop/stream:call-with-temporary-file > uiop/utility:cal
l-function > #:before1062926 > uiop/stream:call-with-output-file >
lambda > uiop/run-program::call-stream-proces
sor > setf::|ASDF/BACKWARD-INTERFACE::COMPONENT-PROPERTY| >
pcl::initial-dfun > pcl::make-checking-dfun > pcl::m
ake-dispatch-dfun > pcl::get-dispatch-function >
pcl::get-secondary-dispatch-function1 > pcl::get-secondary-disp
atch-function2 > pcl::compute-secondary-dispatch-function1 >
pcl::get-function1 > pcl::get-function-generator >
pcl::get-new-function-generator > pcl::compile-lambda >
compiler::compile-file1 > compiler::t1expr > compiler::t
1defun > compiler::make-inline-string > compiler::make-inline-arg-str
> SYSTEM:STRCAT
Above backtrace due to this condition:
Condition in SYSTEM:STRCAT [or a callee]:
INTERNAL-SIMPLE-PROGRAM-ERROR: MULTIPLE-VALUE-CALL [or a callee] requi
res less than sixty-seven arguments.

* Caught error #<CONDITIONS::INTERNAL-SIMPLE-TYPE-ERROR.0>
trlc1 5
TEST ABORTED: SIMPLE-ERROR: The assertion RESTART failed.
Backtrace: error > system::error-in-error > system:lambda-closure >
let* > let > block > let > tagbody > if > pr
ogn > tagbody > CERROR
Above backtrace due to this condition:
SIMPLE-ERROR: The assertion RESTART failed.
Script failed
Using gcl, test-retry-loading-component-1.script failed

Question: is there a better way to get to getcwd() than as follows?
        (let ((*default-pathname-defaults* #p"")) (truename #p""))

PS: you didn't address my previous remark regarding APROPOS returning
the same symbol multiple times (because it's inherited by many
packages), and not doing case-insensitive comparison like on other
lisps (which might be deliberate, but please confirm, then).

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
I have never let my schooling interfere with my education. — Mark Twain


On Fri, Nov 15, 2013 at 8:43 PM, Faré <address@hidden> wrote:
> Dear Camm,
>
> thanks again for your responsiveness. I'm hoping the next release of
> ASDF can support GCL,
> and the next release of GCL can sport ASDF.
>
>>> One function that fails to return the same thing when compiled vs
>>> interpreted is REDUCE/STRCAT from uiop/utility.lisp.
>>
>> Thanks!  Should be fixed now.
>>
> Great. I'll look into further bugs.
>
>>> Another function that behaves in a weird way is configure-asdf from
>>> test/script-support.lisp,
>>
>> Thanks!  No longer the case, perhaps resolved when the above was fixed.
>>
> Indeed, the same bug fix must have worked.
>
>>> Can you look into it? There are other failures, but these are show stoppers.
>>
>> A few more tests pass now.  Thanks for your reports!
>>
> Excellent.
>
>> It would still be
>> a bit easier if you could give me step by step instructions to reproduce
>> a failure -- I don't know where any of these functions are, or what has
>> to be loaded, etc.
>>
> Every test, when it fails, prints some instructions on how to reproduce it.
> Just look at the logs. If the instructions are not correct, it's a bug
> that we can fix.
> I see it incorrectly specifies -batch, and I'll remove that.
>
> So I see several kinds of failures.
>
> Those I have investigated:
>
> * a bug in handling directories in uiop:probe-file*;
>   I think I have a fix for that,
>   but direct support in GCL for the probe-file* interface would be great:
>   a function that given a pathname designator returns the pathname
>   to either the file or directory if it exists, and
>   only optionally resolve symlinks, and return NIL otherwise.
>
>   Also, GCL BUG: TRUENAME should return a FILE-ERROR, not just an ERROR.
>   Same for DELETE-FILE and probably a lot more other functions.
>
> * In test1, test2, test3, test-around-compile, test-asdf,
> test-builtin-source-file-type, test-compile-file-failure,
> test-concatenate-source, test-deferred-warnings, test-force,
> test-inline-methods, test-logical-pathname, test-missing-lisp-file,
> test-module-depend, test-module-excessive-depend,
> test-module-pathnames, test-multiple, test-redundant-recompile,
> test-samedir-modules, test-source-file-type, test-stamp-propagation,
> test-static-and-serial
>  TEST ABORTED: Condition in COMPILER::COMPILE-FILE1 [or a callee]:
> INTERNAL-SIMPLE-PROGRAM-ERROR: Key :EXTERNAL-FORMAT :DEFAULT not
> permitted
>
>   GCL BUG: compile-file fails to accept :EXTERNAL-FORMAT argument.
>   I'll be working around it in uiop/lisp-build for now.
>
>
> I have not investigated these yet:
>
> * test-run-program.script
> TEST ABORTED: Condition in SYSTEM:STRCAT [or a callee]:
> INTERNAL-SIMPLE-PROGRAM-ERROR: MULTIPLE-VALUE-CALL [or a callee]
> requires less than sixty-seven arguments.
>
>   GCL BUG?
>   This looks like a GCL bug, since STRCAT and its callees
>   don't do anything magical with multiple values.
>   Is some optimization or rewrite causing an argument list
>   to expand beyond the limit?
>
> * In duplicate-components-test, test8, test9, test-system-pathnames
>  TEST ABORTED: Condition in CONDITIONS::COERCE-TO-CONDITION [or a
> callee]: INTERNAL-SIMPLE-TYPE-ERROR:
> CONDITIONS::INTERNAL-SIMPLE-LOAD-SYSTEM-DEFINITION-ERROR is not of
> type (SATISFIES CONDITIONS::CONDITION-CLASS-P): Not a condition type:
> CONDITIONS::INTERNAL-SIMPLE-LOAD-SYSTEM-DEFINITION-ERROR
>
>  GCL BUG? I'm not sure what triggers the initial condition yet, but
>  it looks like GCL has an error in error handling and/or reporting.
>
> * In test-retry-loading-component-1.script
> SIMPLE-ERROR: The assertion RESTART failed.
>
>  GCL BUG? It looks like find-restart fails here. Does GCL support restarts?
>
> * test-touch-system-1.script
> INTERNAL-SIMPLE-TYPE-ERROR: NIL is not of type REAL:
>
> Now, I've tried to add in script-support a #+gcl 0 for speed,
> to speed up the compilation, and I find what I believe to be a bug in GCL,
> whereby the form
>  (remove-if #'(lambda (x) (member x '("" ".") :test #'equal))
>                                         components)
> from uiop/pathname is compiled with an error, with bogus complaint at runtime:
> Error:
> Signalled by COMMON-LISP:MEMBER.
> Condition in COMMON-LISP:MEMBER [or a callee]:
> INTERNAL-SIMPLE-PROGRAM-ERROR: Key COMMON-LISP:NIL #<function
> 00000000011dd250> not permitted
>
> I put #+gcl 1 instead, hoping that this will improve things.
>
> More to come, but that will give you stuff to work on already.
>
> —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
> If it's not worth doing, it's not worth doing well — Donald Hebb



reply via email to

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