[osicat-devel] Unicode error for Clozure when calling osicat-posix:mkdir on existing directory

Vladimir Sedach vsedach at gmail.com
Sun Apr 15 23:29:46 UTC 2012


I get a strange error when calling osicat-posix:mkdir on an already
existing directory in Clozure.

(osicat-posix:mkdir "/this/directory/exists/" #o777)

An error is thrown:

--------------------------------------------

#<error printing EEXIST #x1985838E>
   [Condition of type OSICAT-POSIX:EEXIST]

Restarts:
 0: [RETRY] Retry SLIME REPL evaluation request.
 1: [*ABORT] Return to SLIME's top level.
 2: [ABORT-BREAK] Reset this thread
 3: [ABORT] Kill this thread

Backtrace:
  0: (OSICAT-POSIX:POSIX-ERROR 17 NIL OSICAT-POSIX:MKDIR)
  1: (CCL::CALL-CHECK-REGS OSICAT-POSIX:MKDIR #P"/home/viper/tmp/bar/" 511)
  2: (CCL::CHEAP-EVAL (OSICAT-POSIX:MKDIR (MERGE-PATHNAMES "bar/"
"/home/viper/tmp/") 511))
  3: (SWANK::EVAL-REGION "(osicat-posix:mkdir (merge-pathnames
\"bar/\" \"/home/viper/tmp/\") #o777)\n")

--------------------------------------------

Select restart 1 (abort), another error comes up:

--------------------------------------------

Illegal :UTF-8 character starting at position 0.
   [Condition of type BABEL-ENCODINGS:INVALID-UTF8-STARTER-BYTE]

Restarts:
 0: [*ABORT] Return to SLIME's top level.
 1: [ABORT-BREAK] Reset this thread
 2: [ABORT] Kill this thread

Backtrace:
  0: (BABEL-ENCODINGS::UTF-8-DECODER #<A Foreign Pointer
[stack-allocated] #x7F60D08> 0 3 "^@^@^@"  0)
  1: (CFFI:FOREIGN-STRING-TO-LISP #<A Foreign Pointer
[stack-allocated] #x7F60D08> :OFFSET 0 :COUNT NIL :MAX-CHARS 16777215
:ENCODING :UTF-8)
  2: (OSICAT-POSIX:STRERROR 17)
  3: ((:INTERNAL (PRINT-OBJECT (OSICAT-POSIX:POSIX-ERROR T))))
  4: (CCL::%PRINT-UNREADABLE-OBJECT #<EEXIST #<error printing
OSICAT-POSIX:EEXIST #x19797F2E> #<STRING-OUTPUT-STREAM  #x1979BB66> T
NIL #<COMPILED-LEXICAL-CLOSURE (:INTERNAL ..))
  5: (#<STANDARD-METHOD PRINT-OBJECT (OSICAT-POSIX:POSIX-ERROR T)>
#<EEXIST #<error printing OSICAT-POSIX:EEXIST #x19797F2E>
#<STRING-OUTPUT-STREAM  #x1979BB66>)
  6: (CCL::%CALL-NEXT-METHOD (NIL #<STANDARD-METHOD PRINT-OBJECT
(OSICAT-POSIX:POSIX-ERROR T)> . 4670269))
  7: (CCL::%%STANDARD-COMBINED-METHOD-DCODE
(#<CCL::STANDARD-KERNEL-METHOD PRINT-OBJECT :AROUND (T T)>
#<STANDARD-METHOD PRINT-OBJECT (OSICAT-POSIX:POSIX-ERROR T)>) 4670269)
  8: (NIL #<Unknown Arguments>)
  9: (CCL::WRITE-A-FROB #<EEXIST #<error printing OSICAT-POSIX:EEXIST
#x19797F2E> #<STRING-OUTPUT-STREAM  #x1979BB66> 536870911 NIL)
 10: (CCL::WRITE-INTERNAL #<STRING-OUTPUT-STREAM  #x1979BB66> #<EEXIST
#<error printing OSICAT-POSIX:EEXIST #x19797F2E> 536870911 NIL)
 11: (CCL::WRITE-1 #<EEXIST #<error printing OSICAT-POSIX:EEXIST
#x19797F2E> #<STRING-OUTPUT-STREAM  #x1979BB66> 536870911)
 12: (PRIN1 #<EEXIST #<error printing OSICAT-POSIX:EEXIST #x19797F2E>
#<STRING-OUTPUT-STREAM  #x1979BB66>)
 13: (PRIN1-TO-STRING #<EEXIST #<error printing OSICAT-POSIX:EEXIST #x19797F2E>)
 14: (SWANK:EVAL-FOR-EMACS (SWANK:LISTENER-EVAL "(osicat-posix:mkdir
(merge-pathnames \"bar/\" \"/home/viper/tmp/\") #o777)\n")
"COMMON-LISP-USER" 63)

--------------------------------------------

This doesn't come up in SBCL or CLISP - they both print the EEXIST
error normally.

The environment is Clozure Version 1.9-dev-r15251M  (LinuxX8632) on
SLIME on Ubuntu, both locale and ccl:*default-file-character-encoding*
are utf-8.

Vladimir




More information about the osicat-devel mailing list