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...
---