alphapapa / ement.el

A Matrix client for GNU Emacs
GNU General Public License v3.0
475 stars 44 forks source link

Lisp error signing into Beeper/Matrix via Pantalaimon #263

Closed jonathanwilner closed 4 months ago

jonathanwilner commented 4 months ago

OS/platform

MacOS 14.3

Emacs version and provenance

GNU Emacs 29.2 (build 1, aarch64-apple-darwin23.3.0, NS appkit-2487.40 Version 14.3 (Build 23D56))

Built on the machine via Nix

Emacs command

open /Applications/Nix\ Apps/Emacs.app/ --args --debug-init

Emacs frame type

GUI

Ement package version and provenance

Git: origin/master cd25c8264a4e2fb05377131f025e38eebc84dea6

Actions taken

Executed (ement-connect :uri-prefix "http://x.x.x.x:8009")

entered login, entered password

Observed results

Ement: Logging in with password... Ement: Sync request sent. Waiting for response... Ement: Response arrived after 7.79 seconds. Reading 14M JSON response... Ement: Reading JSON took 0.23 seconds Ement: Reading events... Entering debugger...

Expected results

Receive room list, be able to view & interact with rooms.

Backtrace

Debugger entered--Lisp error: (args-out-of-range "" 6 15)
  match-string(1 "")
  (setq server-name (match-string 1 uri))
  (progn (setq server-name (match-string 1 uri)) (setq media-id (match-string 2 uri)))
  (progn (string-match "mxc://\\([^/]+\\)/\\([^z-a]+\\)" uri) (progn (setq server-name (match-string 1 uri)) (setq media-id (match-string 2 uri))) (format "%s/_matrix/media/r0/download/%s/%s" uri-prefix server-name media-id))
  (let* ((server-name) (media-id)) (progn (string-match "mxc://\\([^/]+\\)/\\([^z-a]+\\)" uri) (progn (setq server-name (match-string 1 uri)) (setq media-id (match-string 2 uri))) (format "%s/_matrix/media/r0/download/%s/%s" uri-prefix server-name media-id)))
  (let ((uri-prefix x415)) (let* ((server-name) (media-id)) (progn (string-match "mxc://\\([^/]+\\)/\\([^z-a]+\\)" uri) (progn (setq server-name (match-string 1 uri)) (setq media-id (match-string 2 uri))) (format "%s/_matrix/media/r0/download/%s/%s" uri-prefix server-name media-id))))
  (let* ((x415 (aref server 2))) (let ((uri-prefix x415)) (let* ((server-name) (media-id)) (progn (string-match "mxc://\\([^/]+\\)/\\([^z-a]+\\)" uri) (progn (setq server-name (match-string 1 uri)) (setq media-id (match-string 2 uri))) (format "%s/_matrix/media/r0/download/%s/%s" uri-prefix server-name media-id)))))
  (progn (ignore (progn (and (memq (type-of server) cl-struct-ement-server-tags) t))) (let* ((x415 (aref server 2))) (let ((uri-prefix x415)) (let* ((server-name) (media-id)) (progn (string-match "mxc://\\([^/]+\\)/\\([^z-a]+\\)" uri) (progn (setq server-name (match-string 1 uri)) (setq media-id (match-string 2 uri))) (format "%s/_matrix/media/r0/download/%s/%s" uri-prefix server-name media-id))))))
  (let ((server x416)) (progn (ignore (progn (and (memq (type-of server) cl-struct-ement-server-tags) t))) (let* ((x415 (aref server 2))) (let ((uri-prefix x415)) (let* ((server-name) (media-id)) (progn (string-match "mxc://\\([^/]+\\)/\\([^z-a]+\\)" uri) (progn (setq server-name ...) (setq media-id ...)) (format "%s/_matrix/media/r0/download/%s/%s" uri-prefix server-name media-id)))))))
  (let* ((x416 (aref session 2))) (let ((server x416)) (progn (ignore (progn (and (memq (type-of server) cl-struct-ement-server-tags) t))) (let* ((x415 (aref server 2))) (let ((uri-prefix x415)) (let* ((server-name) (media-id)) (progn (string-match "mxc://\\([^/]+\\)/\\([^z-a]+\\)" uri) (progn ... ...) (format "%s/_matrix/media/r0/download/%s/%s" uri-prefix server-name media-id))))))))
  (progn (ignore (progn (and (memq (type-of session) cl-struct-ement-session-tags) t))) (let* ((x416 (aref session 2))) (let ((server x416)) (progn (ignore (progn (and (memq ... cl-struct-ement-server-tags) t))) (let* ((x415 (aref server 2))) (let ((uri-prefix x415)) (let* (... ...) (progn ... ... ...))))))))
  ement--mxc-to-url("" #s(ement-session :user ... :server ... :token "syt_a3J1c3R5a2..." :transaction-id 2592355926 :rooms ... :next-batch nil :device-id "74c5d07038239b..." :initial-device-display-name "Ement.el: jona..." :has-synced-p nil :account-data ... :events #<hash-table equal 9787/12466 0x485064bb>))
  #f(compiled-function (event room session) "`ement-' handler function for m.room.avatar events." #<bytecode -0x1b8afea069c13bf6>)(#s(ement-event :id "$lvzJY7YK6Nu5L..." :sender ... :content ... :origin-server-ts 1685079956201 :type "m.room.avatar" :unsigned ... :state-key "" :receipts nil :local nil) #s(ement-room :id "!jhX1TzvrOfoGZ..." :display-name nil :prev-batch "e1070096" :summary ... :state ... :timeline ... :ephemeral nil :account-data ... :unread-notifications ... :latest-ts 1706492354000 :topic "This is the of..." :canonical-alias nil :avatar nil :status join ...) #s(ement-session :user ... :server ... :token "syt_a3J1c3R5a2..." :transaction-id 2592355926 :rooms ... :next-batch nil :device-id "74c5d07038239b..." :initial-device-display-name "Ement.el: jona..." :has-synced-p nil :account-data ... :events #<hash-table equal 9787/12466 0x485064bb>))
  ement--process-event(#s(ement-event :id "$lvzJY7YK6Nu5L..." :sender ... :content ... :origin-server-ts 1685079956201 :type "m.room.avatar" :unsigned ... :state-key "" :receipts nil :local nil) #s(ement-room :id "!jhX1TzvrOfoGZ..." :display-name nil :prev-batch "e1070096" :summary ... :state ... :timeline ... :ephemeral nil :account-data ... :unread-notifications ... :latest-ts 1706492354000 :topic "This is the of..." :canonical-alias nil :avatar nil :status join ...) #s(ement-session :user ... :server ... :token "syt_a3J1c3R5a2..." :transaction-id 2592355926 :rooms ... :next-batch nil :device-id "74c5d07038239b..." :initial-device-display-name "Ement.el: jona..." :has-synced-p nil :account-data ... :events #<hash-table equal 9787/12466 0x485064bb>))
  run-hook-with-args(ement--process-event #s(ement-event :id "$lvzJY7YK6Nu5L..." :sender ... :content ... :origin-server-ts 1685079956201 :type "m.room.avatar" :unsigned ... :state-key "" :receipts nil :local nil) #s(ement-room :id "!jhX1TzvrOfoGZ..." :display-name nil :prev-batch "e1070096" :summary ... :state ... :timeline ... :ephemeral nil :account-data ... :unread-notifications ... :latest-ts 1706492354000 :topic "This is the of..." :canonical-alias nil :avatar nil :status join ...) #s(ement-session :user ... :server ... :token "syt_a3J1c3R5a2..." :transaction-id 2592355926 :rooms ... :next-batch nil :device-id "74c5d07038239b..." :initial-device-display-name "Ement.el: jona..." :has-synced-p nil :account-data ... :events #<hash-table equal 9787/12466 0x485064bb>))
  ement--push-joined-room-events(#s(ement-session :user ... :server ... :token "syt_a3J1c3R5a2..." :transaction-id 2592355926 :rooms ... :next-batch nil :device-id "74c5d07038239b..." :initial-device-display-name "Ement.el: jona..." :has-synced-p nil :account-data ... :events #<hash-table equal 9787/12466 0x485064bb>) (!jhX1TzvrOfoGZfp8E2a8:beeper.local ... ... ... ... ... ... ... ...))
  apply(ement--push-joined-room-events (... ...))
  #f(compiled-function (&rest args2) #<bytecode -0xade4cd90e3138f0>)((!jhX1TzvrOfoGZfp8E2a8:beeper.local ... ... ... ... ... ... ... ...))
  mapc(#f(compiled-function (&rest args2) #<bytecode -0xade4cd90e3138f0>) (... ... ... ... ... ... ... ... ... ... ... ... ... ... ...))
  ement--sync-callback(#s(ement-session :user ... :server ... :token "syt_a3J1c3R5a2..." :transaction-id 2592355926 :rooms ... :next-batch nil :device-id "74c5d07038239b..." :initial-device-display-name "Ement.el: jona..." :has-synced-p nil :account-data ... :events #<hash-table equal 9787/12466 0x485064bb>) (... ... ... ... ...))
  apply(ement--sync-callback (... ...))
  #f(compiled-function (&rest args2) #<bytecode -0xade4cd967a378f0>)((... ... ... ... ...))
  #f(compiled-function () #<bytecode 0x8ca565e9190f320>)()
  plz--respond(#<process plz-request-curl> #<buffer  *plz-request-curl*-122741> "finished\n")
  apply(plz--respond (#<process plz-request-curl> #<buffer  *plz-request-curl*-122741> "finished\n"))
  timer-event-handler([t 26051 57233 316742 nil plz--respond (#<process plz-request-curl> #<buffer  *plz-request-curl*-122741> "finished\n") nil 0 nil])

Etc.

No response

alphapapa commented 4 months ago

Hm, that's an unusual bug. I'll see if I can figure it out. Thanks.

By the way, did you manually evaluate the function ement--mxc-to-url? Because it appears in the backtrace to be interpreted, which could suggest that the package wasn't installed correctly.

jonathanwilner commented 4 months ago

I didn't manually evaluate any functions. All I did was (ement-connect :uri-prefix "http://x.x.x.x:8009")

alphapapa commented 4 months ago

How did you install the package?

jonathanwilner commented 4 months ago

It's installed from source via straight-use-package.

alphapapa commented 4 months ago

Well, I try not to disparage Straight, but lately I have been getting a lot of bug reports from Straight users reporting weird problems that don't seem to be present when installed with package-install.

I would appreciate it if you would try to reproduce this problem on a clean Emacs install without using Straight. You can use my script: https://github.com/alphapapa/with-emacs.sh It runs Emacs in a clean, separate configuration directory and automatically deletes it when done. So, e.g. run with-emacs.sh -i ement, then M-x toggle-debug-on-error, and then try to connect as you did here.

jonathanwilner commented 4 months ago

This was NOT a bug - it was my error, bringing in an older version of ement via nix packages & possibly loading on top of it. Thank you for pointing me in the right direction and apologies for the wild goose chase!

alphapapa commented 4 months ago

Ok, thanks.