Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue with (lack.util:generate-random-id) #84

Closed
nerap528 opened this issue Apr 25, 2024 · 5 comments
Closed

Issue with (lack.util:generate-random-id) #84

nerap528 opened this issue Apr 25, 2024 · 5 comments

Comments

@nerap528
Copy link

I've deployed an app based on caveman, which has the following builder form:

(builder
 (:static
  :path (lambda (path)
          (if (ppcre:scan "^(?:/img/|/css/|/js/|/bootstrap-icons/|/robot\\.txt$|/favicon\\.ico$)" path)
              path
              nil))
  :root *static-directory*)
 (if (productionp)
     nil
     :accesslog)
 (if (getf (config) :error-log)
     `(:backtrace
       :output ,(getf (config) :error-log))
     nil)
 (:session
  :store (add-redis-store "session"))
 (if (productionp)
     nil
     (lambda (app)
       (lambda (env)
         (let ((datafly:*trace-sql* t))
           (funcall app env)))))
 *web*)

I regularly get the following error message, which breaks the app:

The value
  -1
is not of type
  (UNSIGNED-BYTE 64)
   [Condition of type TYPE-ERROR]

Restarts:
 0: [ABORT] abort thread (#<THREAD tid=177430 "hunchentoot-worker-127.0.0.1:39174" RUNNING {1001239CC3}>)

Backtrace:
  0: (CL-ISAAC:RAND64 #S(CL-ISAAC:ISAAC64-CTX :RANDCNT 0 :RANDRSL #(13215877931045572616 17298049149423105917 5875697471544487805 18220801150169168170 8730969987868738781 17791624900886399436 ...) :RANDMEM..
      Locals:
        CTX = #S(CL-ISAAC:ISAAC64-CTX ..)
  1: (CL-ISAAC:RAND-BITS-64 #S(CL-ISAAC:ISAAC64-CTX :RANDCNT 0 :RANDRSL #(13215877931045572616 17298049149423105917 5875697471544487805 18220801150169168170 8730969987868738781 17791624900886399436 ...) :R..
      Locals:
        CTX = #S(CL-ISAAC:ISAAC64-CTX ..)
        N = 160
  2: (LACK.UTIL:GENERATE-RANDOM-ID)
      [No Locals]
  3: ((LAMBDA (LACK.MIDDLEWARE.SESSION::ENV) :IN "/home/user/.roswell/lisp/quicklisp/dists/quicklisp/software/lack-20231021-git/src/middleware/session.lisp") (:REQUEST-METHOD :GET :SCRIPT-NAME "" :PATH-INF..
      Locals:
        LACK.MIDDLEWARE.SESSION::ENV = (:REQUEST-METHOD :GET :SCRIPT-NAME "" :PATH-INFO "/" ...)
  4: ((LAMBDA (LACK.MIDDLEWARE.BACKTRACE::ENV) :IN "/home/user/.roswell/lisp/quicklisp/dists/quicklisp/software/lack-20231021-git/src/middleware/backtrace.lisp") (:REQUEST-METHOD :GET :SCRIPT-NAME "" :PATH..
      Locals:
        LACK.MIDDLEWARE.BACKTRACE::ENV = (:REQUEST-METHOD :GET :SCRIPT-NAME "" :PATH-INFO "/" ...)
  5: ((:METHOD HUNCHENTOOT:ACCEPTOR-DISPATCH-REQUEST (CLACK.HANDLER.HUNCHENTOOT::CLACK-ACCEPTOR T)) #<CLACK.HANDLER.HUNCHENTOOT::CLACK-ACCEPTOR (host 127.0.0.1, port 5000)> #<HUNCHENTOOT:REQUEST {10015100E..
      Locals:
        CLACK.HANDLER.HUNCHENTOOT::ACCEPTOR = #<CLACK.HANDLER.HUNCHENTOOT::CLACK-ACCEPTOR (host 127.0.0.1, port 5000)>
        CLACK.HANDLER.HUNCHENTOOT::REQ = #<HUNCHENTOOT:REQUEST {10015100E3}>
  6: ((:METHOD HUNCHENTOOT:HANDLE-REQUEST (HUNCHENTOOT:ACCEPTOR HUNCHENTOOT:REQUEST)) #<CLACK.HANDLER.HUNCHENTOOT::CLACK-ACCEPTOR (host 127.0.0.1, port 5000)> #<HUNCHENTOOT:REQUEST {10015100E3}>) [fast-met..
      Locals:
        SB-C::.ANONYMOUS. = #<CLACK.HANDLER.HUNCHENTOOT::CLACK-ACCEPTOR (host 127.0.0.1, port 5000)>
        SB-C::.ANONYMOUS.#1 = #<HUNCHENTOOT:REQUEST {10015100E3}>
  7: ((:METHOD HUNCHENTOOT:PROCESS-REQUEST (T)) #<HUNCHENTOOT:REQUEST {10015100E3}>) [fast-method]
      Locals:
        SB-C::.ANONYMOUS. = #<HUNCHENTOOT:REQUEST {10015100E3}>
      Catch-tags:
        HUNCHENTOOT::HANDLER-DONE
        HUNCHENTOOT::REQUEST-PROCESSED
  8: (HUNCHENTOOT::DO-WITH-ACCEPTOR-REQUEST-COUNT-INCREMENTED #<CLACK.HANDLER.HUNCHENTOOT::CLACK-ACCEPTOR (host 127.0.0.1, port 5000)> #<FUNCTION (LAMBDA NIL :IN HUNCHENTOOT:PROCESS-CONNECTION) {10014AFF9B..
      Locals:
        SB-C::.ANONYMOUS. = #<CLACK.HANDLER.HUNCHENTOOT::CLACK-ACCEPTOR (host 127.0.0.1, port 5000)>
        FUNCTION = #<FUNCTION (LAMBDA () :IN HUNCHENTOOT:PROCESS-CONNECTION) {10014AFF9B}>
  9: ((:METHOD HUNCHENTOOT:PROCESS-CONNECTION (HUNCHENTOOT:ACCEPTOR T)) #<CLACK.HANDLER.HUNCHENTOOT::CLACK-ACCEPTOR (host 127.0.0.1, port 5000)> #<USOCKET:STREAM-USOCKET {10012AFA53}>) [fast-method]
      Locals:
        SB-C::.ANONYMOUS. = #<CLACK.HANDLER.HUNCHENTOOT::CLACK-ACCEPTOR (host 127.0.0.1, port 5000)>
        HUNCHENTOOT::LOCAL = ("127.0.0.1" 5000)
        HUNCHENTOOT::REMOTE = ("127.0.0.1" 39174)
        HUNCHENTOOT::SOCKET = #<USOCKET:STREAM-USOCKET {10012AFA53}>
        HUNCHENTOOT::SOCKET-STREAM = #<SB-SYS:FD-STREAM for "socket 127.0.0.1:5000, peer: 127.0.0.1:39174" {1001239933}>
 10: ((:METHOD HUNCHENTOOT:PROCESS-CONNECTION :AROUND (HUNCHENTOOT:ACCEPTOR T)) #<CLACK.HANDLER.HUNCHENTOOT::CLACK-ACCEPTOR (host 127.0.0.1, port 5000)> #<USOCKET:STREAM-USOCKET {10012AFA53}>) [fast-method..
      Locals:
        SB-C::.ANONYMOUS. = #<CLACK.HANDLER.HUNCHENTOOT::CLACK-ACCEPTOR (host 127.0.0.1, port 5000)>
        SB-PCL::.NEXT-METHOD-CALL. = #S(SB-PCL::FAST-METHOD-CALL :FUNCTION #<FUNCTION (SB-PCL::FAST-METHOD HUNCHENTOOT:PROCESS-CONNECTION (HUNCHENTOOT:ACCEPTOR T))> :PV NIL :NEXT-METHOD-CALL NIL :ARG-INFO (2))
        HUNCHENTOOT::SOCKET = #<USOCKET:STREAM-USOCKET {10012AFA53}>
 11: ((:METHOD HUNCHENTOOT:PROCESS-CONNECTION :AROUND (CLACK.HANDLER.HUNCHENTOOT::CLACK-ACCEPTOR T)) #<CLACK.HANDLER.HUNCHENTOOT::CLACK-ACCEPTOR (host 127.0.0.1, port 5000)> #<USOCKET:STREAM-USOCKET {10012..
      Locals:
        SB-PCL::.NEXT-METHOD-CALL. = #S(SB-PCL::FAST-METHOD-CALL ..)
        CLACK.HANDLER.HUNCHENTOOT::ACCEPTOR = #<CLACK.HANDLER.HUNCHENTOOT::CLACK-ACCEPTOR (host 127.0.0.1, port 5000)>
        CLACK.HANDLER.HUNCHENTOOT::SOCKET = #<USOCKET:STREAM-USOCKET {10012AFA53}>
 12: ((:METHOD HUNCHENTOOT::HANDLE-INCOMING-CONNECTION% (HUNCHENTOOT:ONE-THREAD-PER-CONNECTION-TASKMASTER T)) #<HUNCHENTOOT:ONE-THREAD-PER-CONNECTION-TASKMASTER {10079B58F3}> #<USOCKET:STREAM-USOCKET {1001..
      Locals:
        HUNCHENTOOT::SOCKET = #<USOCKET:STREAM-USOCKET {10012AFA53}>
        HUNCHENTOOT:TASKMASTER = #<HUNCHENTOOT:ONE-THREAD-PER-CONNECTION-TASKMASTER {10079B58F3}>
 13: ((LABELS BORDEAUX-THREADS::%BINDING-DEFAULT-SPECIALS-WRAPPER :IN BORDEAUX-THREADS::BINDING-DEFAULT-SPECIALS))
      [No Locals]
 14: ((FLET SB-UNIX::BODY :IN SB-THREAD::RUN))
 15: ((FLET "WITHOUT-INTERRUPTS-BODY-" :IN SB-THREAD::RUN))
 16: ((FLET SB-UNIX::BODY :IN SB-THREAD::RUN))
 17: ((FLET "WITHOUT-INTERRUPTS-BODY-" :IN SB-THREAD::RUN))
 18: (SB-THREAD::RUN)
 19: ("foreign function: call_into_lisp_")
 20: ("foreign function: funcall1")
@nerap528
Copy link
Author

There are massive issues with (lack.util:generate-random-id) on Debian (Linux 5.10)

File Edit Options Buffers Tools SLDB Presentations Help
Callback Error: the message-complete callback failed
  #<FLEXI-STREAMS::VECTOR-INPUT-STREAM {100708EEF3}> cannot be printed readably.
   [Condition of type FAST-HTTP.ERROR:CB-MESSAGE-COMPLETE]

Restarts:
 0: [ABORT] abort thread (#<THREAD tid=191236 "clack-handler-woo" RUNNING {1001228003}>)

Backtrace:
  0: (CL-ISAAC:RAND64 #S(CL-ISAAC:ISAAC64-CTX :RANDCNT 0 :RANDRSL #(17836357377385596082 12957892003282610769 1278280854280301195 5452824792191786772 9611507654064445638 12961598231781886226 ...) :RANDMEM ..
  1: (CL-ISAAC:RAND-BITS-64 #S(CL-ISAAC:ISAAC64-CTX :RANDCNT 0 :RANDRSL #(17836357377385596082 12957892003282610769 1278280854280301195 5452824792191786772 9611507654064445638 12961598231781886226 ...) :RA..
  2: (LACK.UTIL:GENERATE-RANDOM-ID)
  3: ((LAMBDA (LACK.MIDDLEWARE.SESSION::ENV) :IN "/home/user/.roswell/lisp/quicklisp/dists/quicklisp/software/lack-20231021-git/src/middleware/session.lisp") (:RAW-BODY #<FLEXI-STREAMS::VECTOR-INPUT-STREAM..
  4: ((LAMBDA (LACK.MIDDLEWARE.BACKTRACE::ENV) :IN "/home/user/.roswell/lisp/quicklisp/dists/quicklisp/software/lack-20231021-git/src/middleware/backtrace.lisp") (:RAW-BODY #<FLEXI-STREAMS::VECTOR-INPUT-ST..
  5: ((LAMBDA NIL :IN WOO::SETUP-PARSER))
  6: ((LAMBDA (FAST-HTTP.HTTP:HTTP) :IN FAST-HTTP:MAKE-PARSER) #<unused argument>)
  7: (FAST-HTTP.PARSER::PARSE-BODY #S(FAST-HTTP.HTTP:HTTP-REQUEST :METHOD :GET :MAJOR-VERSION 1 :MINOR-VERSION 0 :STATUS 0 :CONTENT-LENGTH NIL :CHUNKED-P NIL ...) #<unavailable argument> #<unavailable argu..
  8: (FAST-HTTP.PARSER:PARSE-REQUEST #S(FAST-HTTP.HTTP:HTTP-REQUEST :METHOD :GET :MAJOR-VERSION 1 :MINOR-VERSION 0 :STATUS 0 :CONTENT-LENGTH NIL :CHUNKED-P NIL ...) #S(FAST-HTTP.PARSER:CALLBACKS :MESSAGE-B..
  9: ((LAMBDA (FAST-HTTP::DATA &KEY :START :END) :IN FAST-HTTP:MAKE-PARSER) #(71 69 84 32 47 32 ...) :START #<unavailable argument> :END #<unavailable argument>)
 10: (WOO::READ-CB #S(WOO.EV.SOCKET:SOCKET :WATCHERS #(#<system area pointer: #X7F646C011640> #<system area pointer: #X7F646C001960> #<system area pointer: #X7F646C011600>) :LAST-ACTIVITY 1.714327324311712..
 11: ((LAMBDA (WOO.EV.TCP::EVLOOP WOO.EV.TCP::WATCHER WOO.EV.TCP::EVENTS) :IN "/home/user/.roswell/lisp/quicklisp/dists/quicklisp/software/woo-20231021-git/src/ev/tcp.lisp") #<unused argument> #<system are..
 12: ((LAMBDA (SB-ALIEN::ARGS-POINTER SB-ALIEN::RESULT-POINTER FUNCTION) :IN "/home/user/.roswell/lisp/quicklisp/dists/quicklisp/software/woo-20231021-git/src/ev/socket.lisp") #<unavailable argument> #<una..
 13: ("foreign function: funcall_alien_callback")
 14: ("foreign function: callback_wrapper_trampoline")
 15: ("foreign function: #x5000119C")
 16: (WOO:RUN #<FUNCTION (LAMBDA (LACK.MIDDLEWARE.BACKTRACE::ENV) :IN "/home/user/.roswell/lisp/quicklisp/dists/quicklisp/software/lack-20231021-git/src/middleware/backtrace.lisp") {100730915B}> :DEBUG T :..
 17: ((FLET BORDEAUX-THREADS-2::RUN-FUNCTION :IN BORDEAUX-THREADS-2::ESTABLISH-DYNAMIC-ENV))
 18: ((LABELS BORDEAUX-THREADS-2::%ESTABLISH-DYNAMIC-ENV-WRAPPER :IN BORDEAUX-THREADS-2::ESTABLISH-DYNAMIC-ENV))
 19: ((FLET SB-UNIX::BODY :IN SB-THREAD::RUN))
 20: ((FLET "WITHOUT-INTERRUPTS-BODY-" :IN SB-THREAD::RUN))
 21: ((FLET SB-UNIX::BODY :IN SB-THREAD::RUN))
 22: ((FLET "WITHOUT-INTERRUPTS-BODY-" :IN SB-THREAD::RUN))
 23: (SB-THREAD::RUN)
 24: ("foreign function: call_into_lisp_")
 25: ("foreign function: funcall1")

@nerap528
Copy link
Author

nerap528 commented May 1, 2024

I've fixed the issue by simply using ironclad instead of isaac:rand-bits-64 in util.lisp.
(ironclad:byte-array-to-hex-string (ironclad:random-data 20))

@fukamachi
Copy link
Owner

Same as #81 ?

@nerap528
Copy link
Author

Same as #81 ?

Yes, it's the same issue.

@fukamachi
Copy link
Owner

Okay, then it should be fixed now. (ref #82)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants