Opened 3 years ago

Closed 3 years ago

#1352 closed defect (fixed)

Hard pathname in ASDF in v1.11

Reported by: ddmcdonald Owned by: rme
Priority: blocker Milestone:
Component: other Version: 1.11
Keywords: Cc:

Description

I just downloaded CCL 1.9 from the Apple App Store. When I tried loading one of my systems using ASDF I got the following error Can't create directory "/Users/rme/". One of my colleagues suggests that "rme" may well be one of you. In any event they're not a user on my system and all my systems are dead in the water. (Until I get SBCL running ;-)

Attachments (2)

backtrace-from-asdf-problem.lisp (22.0 KB) - added by ddmcdonald 3 years ago.
Backtrace from the point of the error
ccl-init.lisp (1.5 KB) - added by ddmcdonald 3 years ago.
init files I"m using

Download all attachments as: .zip

Change History (18)

comment:1 Changed 3 years ago by rme

I just updated the Mac App Store version of CCL to 1.11.

During testing, we found that pathnames from my build machine ended up in the binary, but I thought that I had corrected that problem before submitting the 1.11 update to Apple. Perhaps I am mistaken.

Are you really using 1.9, as you wrote, and not 1.11? If so, maybe version 1.9 also contains pathnames from my build machine that I failed to detect.

Could you please show me the output from (lisp-implementation-version, and also what you did to load your ASDF system?

comment:2 Changed 3 years ago by ddmcdonald

Typo on my part. I loaded 1.11. To load ASDF I have this line in my init file

(require :asdf)

Here's the opening banner and the error.

Welcome to Clozure Common Lisp Version 1.11-store-r16708 (Darwinx8664)!

CCL is developed and maintained by Clozure Associates. For more information about CCL visit http://ccl.clozure.com. To enquire about Clozure's Common Lisp consulting services e-mail info@… or visit http://www.clozure.com.

? (asdf:load-system :sparser/blocks-world)

Error: Can't create directory "/Users/rme/". While executing: ensure-directories-exist, in process Listener(4). Type cmd-. to abort, cmd-\ for a list of available restarts. Type :? for other options.

1 >

comment:3 Changed 3 years ago by ddmcdonald

The backtrace establishes that it's in the handling of the asdf request

comment:4 Changed 3 years ago by rme

If it doesn't contain sensitive information, can I please see a detailed backtrace? I would be interested to know where "/Users/rme/" is coming from (e.g., what variable contains that string).

If you move your init file aside, start up with no init file, and then do (require 'asdf) and then (asdf:load-system :sparser/blocks-world), do you see the same problem?

During testing, the problem of "/Users/rme" leaking into the saved application seemed to be that ASDF cached some information that needed to be cleared out when saving a heap image and possibly re-computed when re-loading an image. To solve that problem, I changed the build process so that ASDF wasn't loaded. Thus, if you start up with no init file, and then do (list-all-packages), none of ASDF's packages should appear.

So, I somehow need to figure out where that "/Users/rme/" is coming from.

comment:5 follow-up: Changed 3 years ago by ddmcdonald

How to I get the backtrace into the REPL so I can send it to you? Is there some command/keyword-instruction? When I'm running by launching the saved image I use the graphical backtrace (my preference) and my emacs/slime setup is pointed to an earlier version of CCL so I can continue to get work done. Other items to you shortly.

comment:6 in reply to: ↑ 5 Changed 3 years ago by rme

Replying to ddmcdonald:

How to I get the backtrace into the REPL so I can send it to you? Is there some command/keyword-instruction?

At the break loop prompt (the 1 > ), type

:b :show-frame-contents t

Thank you.

Changed 3 years ago by ddmcdonald

Backtrace from the point of the error

comment:7 Changed 3 years ago by ddmcdonald

It's rather long, so I attached it as a file. The ensure-directories-exist at the top is the smoking gun, and the frames just above that are suggestive. Let me know if there's a problem reading the file.

comment:8 Changed 3 years ago by rme

I can read the backtrace file; thanks. What I don't understand is how ASDF ends up finding and using pathnames from my build machine. ASDF isn't included in the saved image, so it's a bit of a mystery how the (require 'asdf) from your init file ends up seeing pathnames with that include "/Users/rme".

I'm trying to duplicate the problem, but I haven't been able to yet.

Could I perhaps see what's in your init file? Do you configure ASDF is any special way? Any more information you can provide might give me a clue. RIght now, I'm puzzled.

comment:9 Changed 3 years ago by rme

If you feel like it, you could also try moving aside or deleting ~/.cache/common-lisp/ccl-1.11-f96-macosx-x64/ and then try launching Clozure CL.app and loading your system.

I really need to find a way to duplicate the problem. Remote telepathic debugging isn't fun for anybody.

Changed 3 years ago by ddmcdonald

init files I"m using

comment:10 Changed 3 years ago by ddmcdonald

I've attached my init file. you'll see that just after the call to require asdf it initializes the registry with the code directories that the asdf calls are going to look for their code in. But that's all it does that involves asdf. You're probably curious. This is part of work we're doing for DARPA. Will try your suggested surgery when I next come up for air from my other work.

comment:11 Changed 3 years ago by ddmcdonald

Moved my init file aside and getting the same result. The first few frames of the stack look the same as before, with a pathname to your area in the path spec. Looking at frame 5 I realized that we're in the process of executing an asdf dependency and are trying to load the first file in that dependent module.

? (require :asdf)
:ASDF
NIL
? (asdf:initialize-source-registry 
 '(:source-registry
   (:tree (:home "ws/R3/r3/trunk"))
   (:tree (:home "ws/CLiC/clic"))
   (:directory (:home "sift/nlp/tests"))
   (:tree (:home "sparser"))
   (:tree (:home "sift/lisp-utils/trunk"))
   :inherit-configuration))
? (asdf:load-system :sparser/blocks-world)
> Error: Can't create directory "/Users/rme/".
> While executing: ENSURE-DIRECTORIES-EXIST, in process Listener(4).
> Type cmd-. to abort, cmd-\ for a list of available restarts.
> Type :? for other options.
1 > 

comment:12 Changed 3 years ago by rme

It looks like the version of CCL I submitted to the Mac App Store is not what I thought it was.

I made a test account on a new computer and downloaded CCL from the app store, and I found to my dismay that ASDF is pre-loaded in that version of CCL.

I must have uploaded the incorrect version to the app store. What a disaster. I will submit an updated build.

comment:13 Changed 3 years ago by rme

  • Owner set to rme
  • Status changed from new to assigned
  • Version changed from trunk to 1.11

I submitted an updated build to the Mac App Store. It will probably be several days before Apple approves it.

I apologize for the trouble. We found this very problem during testing, and I built a corrected version. I must have uploaded the incorrect binary to the store. With any luck, I'll get it right this time.

comment:14 Changed 3 years ago by ddmcdonald

A new version went up on the app store yesterday and I just pulled it over. However the problem is still there. In the ASDF code as before.

; Loading home .ccl-init file.
; Loading home .shared-lisp-init.lisp file.
> Error: Can't create directory "/Users/rme/".
> While executing: ensure-directories-exist, in process Listener(4).
> Type cmd-/ to continue, cmd-. to abort, cmd-\ for a list of available restarts.
> If continued: Skip loading init file.
> Type :? for other options.
1 >

comment:15 Changed 3 years ago by alms

The version that fixes this problem was just approved this afternoon. It's live in the store now. 1.11.1.

comment:16 Changed 3 years ago by rme

  • Resolution set to fixed
  • Status changed from assigned to closed

An updated Mac App Store version of CCL that should not exhibit this problem is now available from the store. The about box will show "Version 1.11.1 (16714)", and lisp-implementation-version will report "1.11-store-r16714".

I'm going to close this ticket now. Please re-open it if the problem is not solved.

Again, I apologize for accidentally uploading the wrong binary to the Mac App Store. Thank you for making a ticket to report the problem.

Note: See TracTickets for help on using tickets.