You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by jeking3 <gi...@git.apache.org> on 2018/03/01 03:28:04 UTC

[GitHub] thrift issue #1412: [THRIFT-82] Add Common Lisp support

Github user jeking3 commented on the issue:

    https://github.com/apache/thrift/pull/1412
  
    Best I can tell there seems to be some sort of timing or logic error.  Builds will randomly fail after writing a fasl, apparently renaming it, then being unable to find it.  This is the "ubsan" build job which runs "make precross":
    
    https://api.travis-ci.org/v3/job/347498508/log.txt
    
    ```
    ; compiling (DEF-STRUCT "structb" ...)
    ; compiling (DEF-SERVICE "ThriftTest" ...)
    ; compiling (DEF-SERVICE "SecondService" ...)
    ; /root/.cache/common-lisp/sbcl-1.3.14.debian-linux-x64/thrift/src/test/cl/gen-cl/ThriftTest/ThriftTest-types-TMP.fasl written
    ; compilation finished in 0:00:06.905
    ```
    
    then immediately after:
    ```
    Unhandled SB-INT:SIMPLE-FILE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING
                                                    {1001E066F3}>:
      Failed to find the TRUENAME of /root/.cache/common-lisp/sbcl-1.3.14.debian-linux-x64/thrift/src/test/cl/gen-cl/ThriftTest/ThriftTest-types-TMP.fasl:
        No such file or directory
    
    Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {1001E066F3}>
    0: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<SB-INT:SIMPLE-FILE-ERROR "~@<~?: ~2I~_~A~:>" {1002AFF8E3}> #<unavailable argument>)
    1: (SB-DEBUG::RUN-HOOK *INVOKE-DEBUGGER-HOOK* #<SB-INT:SIMPLE-FILE-ERROR "~@<~?: ~2I~_~A~:>" {1002AFF8E3}>)
    2: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-FILE-ERROR "~@<~?: ~2I~_~A~:>" {1002AFF8E3}>)
    3: (ERROR SB-INT:SIMPLE-FILE-ERROR :PATHNAME #P"/root/.cache/common-lisp/sbcl-1.3.14.debian-linux-x64/thrift/src/test/cl/gen-cl/ThriftTest/ThriftTest-types-TMP.fasl" :FORMAT-CONTROL "~@<~?: ~2I~_~A~:>" :FORMAT-ARGUMENTS ("Failed to find the TRUENAME of ~A" (#P"/root/.cache/common-lisp/sbcl-1.3.14.debian-linux-x64/thrift/src/test/cl/gen-cl/ThriftTest/ThriftTest-types-TMP.fasl") "No such file or directory"))
    4: ((LABELS SB-IMPL::RESOLVE-PROBLEMATIC-SYMLINK :IN SB-IMPL::QUERY-FILE-SYSTEM) NIL)
    5: (SB-IMPL::QUERY-FILE-SYSTEM #P"/root/.cache/common-lisp/sbcl-1.3.14.debian-linux-x64/thrift/src/test/cl/gen-cl/ThriftTest/ThriftTest-types-TMP.fasl" :TRUENAME T)
    6: (TRUENAME #P"/root/.cache/common-lisp/sbcl-1.3.14.debian-linux-x64/thrift/src/test/cl/gen-cl/ThriftTest/ThriftTest-types-TMP.fasl")
    7: (RENAME-FILE #P"/root/.cache/common-lisp/sbcl-1.3.14.debian-linux-x64/thrift/src/test/cl/gen-cl/ThriftTest/ThriftTest-types-TMP.fasl" #P"/root/.cache/common-lisp/sbcl-1.3.14.debian-linux-x64/thrift/src/test/cl/gen-cl/ThriftTest/ThriftTest-types.fasl")
    8: (UIOP/LISP-BUILD:COMPILE-FILE* #P"/thrift/src/test/cl/gen-cl/ThriftTest/ThriftTest-types.lisp" :OUTPUT-FILE #P"/root/.cache/common-lisp/sbcl-1.3.14.debian-linux-x64/thrift/src/test/cl/gen-cl/ThriftTest/ThriftTest-types.fasl" :EXTERNAL-FORMAT :UTF-8 :WARNINGS-FILE NIL)
    9: (ASDF/LISP-ACTION:PERFORM-LISP-COMPILATION #<ASDF/LISP-ACTION:COMPILE-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "thrift-gen-thrifttest" "ThriftTest-types">)
    10: ((SB-PCL::EMF ASDF/ACTION:PERFORM) #<unavailable argument> #<unavailable argument> #<ASDF/LISP-ACTION:COMPILE-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "thrift-gen-thrifttest" "ThriftTest-types">)
    11: ((:METHOD ASDF/ACTION:PERFORM-WITH-RESTARTS :AROUND (T T)) #<ASDF/LISP-ACTION:COMPILE-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "thrift-gen-thrifttest" "ThriftTest-types">) [fast-method]
    12: ((:METHOD ASDF/PLAN:PERFORM-PLAN (LIST)) ((#1=#<ASDF/LISP-ACTION:COMPILE-OP > . #<ASDF/SYSTEM:SYSTEM "puri">) (#1# . #<ASDF/SYSTEM:SYSTEM "split-sequence">) (#1# . #<ASDF/SYSTEM:SYSTEM "closer-mop">) (#1# . #<ASDF/SYSTEM:SYSTEM "trivial-utf-8">) (#1# . #<ASDF/SYSTEM:SYSTEM "ieee-floats">) (#1# . #<ASDF/SYSTEM:SYSTEM "trivial-gray-streams">) (#1# . #<ASDF/SYSTEM:SYSTEM "alexandria">) (#1# . #<ASDF/SYSTEM:SYSTEM "thrift">) (#2=#<ASDF/LISP-ACTION:PREPARE-OP > . #<ASDF/SYSTEM:SYSTEM #3="thrift-gen-thrifttest">) (#2# . #4=#<ASDF/LISP-ACTION:CL-SOURCE-FILE #3# "ThriftTest-types">) (#1# . #4#) (#<ASDF/LISP-ACTION:LOAD-OP > . #4#) ...) :FORCE NIL) [fast-method]
    13: ((FLET SB-C::WITH-IT :IN SB-C::%WITH-COMPILATION-UNIT))
    14: ((:METHOD ASDF/PLAN:PERFORM-PLAN :AROUND (T)) ((#1=#<ASDF/LISP-ACTION:COMPILE-OP > . #<ASDF/SYSTEM:SYSTEM "puri">) (#1# . #<ASDF/SYSTEM:SYSTEM "split-sequence">) (#1# . #<ASDF/SYSTEM:SYSTEM "closer-mop">) (#1# . #<ASDF/SYSTEM:SYSTEM "trivial-utf-8">) (#1# . #<ASDF/SYSTEM:SYSTEM "ieee-floats">) (#1# . #<ASDF/SYSTEM:SYSTEM "trivial-gray-streams">) (#1# . #<ASDF/SYSTEM:SYSTEM "alexandria">) (#1# . #<ASDF/SYSTEM:SYSTEM "thrift">) (#2=#<ASDF/LISP-ACTION:PREPARE-OP > . #<ASDF/SYSTEM:SYSTEM #3="thrift-gen-thrifttest">) (#2# . #4=#<ASDF/LISP-ACTION:CL-SOURCE-FILE #3# "ThriftTest-types">) (#1# . #4#) (#<ASDF/LISP-ACTION:LOAD-OP > . #4#) ...)) [fast-method]
    15: ((FLET SB-C::WITH-IT :IN SB-C::%WITH-COMPILATION-UNIT))
    16: ((:METHOD ASDF/PLAN:PERFORM-PLAN :AROUND (T)) #<ASDF/PLAN:SEQUENTIAL-PLAN {1001E5AF13}>) [fast-method]
    17: ((:METHOD ASDF/OPERATE:OPERATE (ASDF/OPERATION:OPERATION ASDF/COMPONENT:COMPONENT)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/SYSTEM:SYSTEM "thrift-gen-thrifttest">) [fast-method]
    18: ((SB-PCL::EMF ASDF/OPERATE:OPERATE) #<unused argument> #<unused argument> #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/SYSTEM:SYSTEM "thrift-gen-thrifttest">)
    19: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
    20: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/SYSTEM:SYSTEM "thrift-gen-thrifttest">) [fast-method]
    21: ((SB-PCL::EMF ASDF/OPERATE:OPERATE) #<unused argument> #<unused argument> ASDF/LISP-ACTION:LOAD-OP :THRIFT-GEN-THRIFTTEST)
    22: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
    23: (ASDF/CACHE:CALL-WITH-ASDF-CACHE #<CLOSURE (LAMBDA NIL :IN ASDF/OPERATE:OPERATE) {1001E5664B}> :OVERRIDE NIL :KEY NIL)
    24: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) ASDF/LISP-ACTION:LOAD-OP :THRIFT-GEN-THRIFTTEST) [fast-method]
    25: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) ASDF/LISP-ACTION:LOAD-OP :THRIFT-GEN-THRIFTTEST) [fast-method]
    26: (ASDF/OPERATE:LOAD-SYSTEM :THRIFT-GEN-THRIFTTEST)
    27: (SB-INT:SIMPLE-EVAL-IN-LEXENV (ASDF/OPERATE:LOAD-SYSTEM :THRIFT-GEN-THRIFTTEST) #<NULL-LEXENV>)
    28: (EVAL-TLF (ASDF/OPERATE:LOAD-SYSTEM :THRIFT-GEN-THRIFTTEST) 6 NIL)
    29: ((LABELS SB-FASL::EVAL-FORM :IN SB-INT:LOAD-AS-SOURCE) (ASDF/OPERATE:LOAD-SYSTEM :THRIFT-GEN-THRIFTTEST) 6)
    30: ((LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-INT:LOAD-AS-SOURCE) (ASDF/OPERATE:LOAD-SYSTEM :THRIFT-GEN-THRIFTTEST) :CURRENT-INDEX 6)
    31: (SB-C::%DO-FORMS-FROM-INFO #<CLOSURE (LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-INT:LOAD-AS-SOURCE) {1001E1A35B}> #<SB-C::SOURCE-INFO {1001E1A313}> SB-C::INPUT-ERROR-IN-LOAD)
    32: (SB-INT:LOAD-AS-SOURCE #<SB-SYS:FD-STREAM for "file /thrift/src/test/cl/make-test-client.lisp" {1001E0EBE3}> :VERBOSE NIL :PRINT NIL :CONTEXT "loading")
    33: ((FLET SB-FASL::LOAD-STREAM :IN LOAD) #<SB-SYS:FD-STREAM for "file /thrift/src/test/cl/make-test-client.lisp" {1001E0EBE3}> NIL)
    34: (LOAD #<SB-SYS:FD-STREAM for "file /thrift/src/test/cl/make-test-client.lisp" {1001E0EBE3}> :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :DEFAULT)
    35: ((FLET SB-IMPL::LOAD-SCRIPT :IN SB-IMPL::PROCESS-SCRIPT) #<SB-SYS:FD-STREAM for "file /thrift/src/test/cl/make-test-client.lisp" {1001E0EBE3}>)
    36: ((FLET #:WITHOUT-INTERRUPTS-BODY-146 :IN SB-IMPL::PROCESS-SCRIPT))
    37: (SB-IMPL::PROCESS-SCRIPT "make-test-client.lisp")
    38: (SB-IMPL::TOPLEVEL-INIT)
    39: ((FLET #:WITHOUT-INTERRUPTS-BODY-77 :IN SAVE-LISP-AND-DIE))
    40: ((LABELS SB-IMPL::RESTART-LISP :IN SAVE-LISP-AND-DIE))
    
    unhandled condition in --disable-debugger mode, quitting
    ; 
    ; compilation unit aborted
    ;   caught 2 fatal ERROR conditions
    Makefile:635: recipe for target 'TestClient' failed
    make[2]: *** [TestClient] Error 1
    make[2]: Leaving directory '/thrift/src/test/cl'
    ```
    
    Is it possible that the RENAME implementation in sbcl is buggy when the source and destination are the same, and perhaps it exhibits some undefined behavior?  Just a wild guess...


---