fasheng / elfeed-protocol

Provide extra protocols to make like Fever, NewsBlur, Nextcloud/ownCloud News and Tiny Tiny RSS work with elfeed
GNU General Public License v3.0
97 stars 18 forks source link

[error]: elfeed-protocol-newsblur: no subfeed for feed id .... #24

Closed emacsomancer closed 4 years ago

emacsomancer commented 4 years ago

I'm having trouble using elfeed-protocol with my newsblur account (though it worked previously). (When I download the opml file from newsblur and load it manually in elfeed, it works fine.)

elfeed-log [2020-02-18 13:54:49] [debug]: elfeed-protocol-newsblur: update feed list

[2020-02-18 13:54:51] [debug]: elfeed-protocol-newsblur: update entries with action init, arg nil

[2020-02-18 13:54:56] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 0 [2020-02-18 13:54:56] [error]: elfeed-protocol-newsblur: no subfeed for feed id 5843473 [2020-02-18 13:54:56] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 0 [2020-02-18 13:54:56] [error]: elfeed-protocol-newsblur: no subfeed for feed id 4007198 [2020-02-18 13:54:56] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 0 [2020-02-18 13:54:56] [error]: elfeed-protocol-newsblur: no subfeed for feed id 5843473 [2020-02-18 13:54:56] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 0 [2020-02-18 13:54:56] [error]: elfeed-protocol-newsblur: no subfeed for feed id 5843473 [2020-02-18 13:54:56] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 0 [2020-02-18 13:54:56] [error]: elfeed-protocol-newsblur: no subfeed for feed id 5843473 [2020-02-18 13:54:56] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 0 [2020-02-18 13:54:56] [error]: elfeed-protocol-newsblur: no subfeed for feed id 5843473 [2020-02-18 13:54:56] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 0 [2020-02-18 13:54:56] [error]: elfeed-protocol-newsblur: no subfeed for feed id 4007198 [2020-02-18 13:54:56] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 0 [2020-02-18 13:54:56] [error]: elfeed-protocol-newsblur: no subfeed for feed id 5629449 [2020-02-18 13:54:56] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 0 [2020-02-18 13:54:56] [error]: elfeed-protocol-newsblur: no subfeed for feed id 4007198 [2020-02-18 13:54:56] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 0 [2020-02-18 13:54:56] [error]: elfeed-protocol-newsblur: no subfeed for feed id 2140 [2020-02-18 13:55:41] [debug]: elfeed-protocol-newsblur: update feed list

[2020-02-18 13:55:42] [debug]: elfeed-protocol-newsblur: update entries with action init, arg nil

[2020-02-18 13:55:49] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 0 [2020-02-18 13:55:49] [error]: elfeed-protocol-newsblur: no subfeed for feed id 5843473 [2020-02-18 13:55:49] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 0 [2020-02-18 13:55:49] [error]: elfeed-protocol-newsblur: no subfeed for feed id 2140 [2020-02-18 13:55:49] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 0 [2020-02-18 13:55:49] [error]: elfeed-protocol-newsblur: no subfeed for feed id 5843473 [2020-02-18 13:55:49] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 0 [2020-02-18 13:55:49] [error]: elfeed-protocol-newsblur: no subfeed for feed id 5843473 [2020-02-18 13:55:49] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 0 [2020-02-18 13:55:49] [error]: elfeed-protocol-newsblur: no subfeed for feed id 5843473 [2020-02-18 13:55:49] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 0 [2020-02-18 13:55:49] [error]: elfeed-protocol-newsblur: no subfeed for feed id 5843473 [2020-02-18 13:55:49] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 0 [2020-02-18 13:55:49] [error]: elfeed-protocol-newsblur: no subfeed for feed id 4007198 [2020-02-18 13:55:49] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 0 [2020-02-18 13:55:49] [error]: elfeed-protocol-newsblur: no subfeed for feed id 5843473 [2020-02-18 13:55:49] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 0 [2020-02-18 13:55:49] [error]: elfeed-protocol-newsblur: no subfeed for feed id 4007198 [2020-02-18 13:55:49] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 0 [2020-02-18 13:55:49] [error]: elfeed-protocol-newsblur: no subfeed for feed id 4007198

Please collect logs in buffer *elfeed-log* with the following config before reporting issues:

(setq elfeed-log-level 'debug)
(toggle-debug-on-error)

;; for more logs
(setq elfeed-protocol-log-trace t)
(setq elfeed-protocol-owncloud-maxsize 10)
(setq elfeed-protocol-ttrss-maxsize 10)
(setq elfeed-protocol-newsblur-maxpages 1)

error backtrace

elfeed-protocol config

(use-package elfeed-protocol
  :ensure t
  :config
  (elfeed-set-timeout 36000)
  (setq elfeed-db-directory "/tmp/elfeed")
  ;; setup extra protocol feeds
  (require 'elfeed-protocol)
  (setq elfeed-protocol-newsblur-maxpages 5)
  (setq elfeed-curl-extra-arguments '("-c" "/tmp/newsblur-cookie"
                                    "-b" "/tmp/newsblur-cookie"))
  (setq elfeed-feeds '(("newsblur+https://myusername:@newsblur.com"
                         :password "*****")))
  (setq elfeed-log-level 'debug)
  (elfeed-protocol-enable))
fasheng commented 4 years ago

Well, newsblur works fine for me just now. Could you post the detailed trace log here?

(setq elfeed-protocol-log-trace t)
(setq elfeed-protocol-newsblur-maxpages 1)
emacsomancer commented 4 years ago

Here's the emacs debug info:

Debugger entered--Lisp error: (wrong-type-argument stringp nil)
  string-match("::" nil 0)
  split-string(nil "::")
  (let ((list (split-string url "::"))) (if (eq 2 (length list)) (progn (elt list 1))))
  elfeed-protocol-subfeed-url(nil)
  (type-of (elfeed-protocol-subfeed-url url))
  (eq 'string (type-of (elfeed-protocol-subfeed-url url)))
  elfeed-protocol-subfeed-p(nil)
  elfeed-protocol-advice-feed-autotags(#f(compiled-function (url-or-feed) "Return tags to automatically apply to all entries from URL-OR-FEED." #<bytecode -0x1ec0d362f8637f25>) nil)
  apply(elfeed-protocol-advice-feed-autotags #f(compiled-function (url-or-feed) "Return tags to automatically apply to all entries from URL-OR-FEED." #<bytecode -0x1ec0d362f8637f25>) nil)
  elfeed-feed-autotags(nil)
  (let ((elfeed-feeds (elfeed-protocol-meta-autotags proto-id))) (elfeed-feed-autotags url-or-feed))
  elfeed-protocol-feed-autotags("newsblur+https//myusername:@newsblur.com" nil)
  elfeed-protocol-newsblur--parse-entries("https://myuser..." (... ... ... ... ... ... ...) t nil)
  #f(compiled-function (status) #<bytecode -0x8548c5c9b1a42b6>)(t)
  #f(compiled-function (status) #<bytecode -0x1ebb6f0c9f47e03d>)(t)
  #f(compiled-function () #<bytecode -0x1cc6b2424523b125>)()
  elfeed-curl--call-callback(#<buffer  *curl*> 0 "https://newsblur.com/reader/starred_stories?page=1" #f(compiled-function (status) #<bytecode -0x1ebb6f0c9f47e03d>))
  apply(elfeed-curl--call-callback (#<buffer  *curl*> 0 "https://newsblur.com/reader/starred_stories?page=1" #f(compiled-function (status) #<bytecode -0x1ebb6f0c9f47e03d>)))
  timer-event-handler([t 24141 31154 772195 nil elfeed-curl--call-callback (#<buffer  *curl*> 0 "https://newsblur.com/reader/starred_stories?page=1" #f(compiled-function (status) #<bytecode -0x1ebb6f0c9f47e03d>)) nil 787000])
fasheng commented 4 years ago

Hi, It's not the error backtrace log, it's the detailed trace log in elfeed-log with the following config:

(setq elfeed-protocol-log-trace t)
(setq elfeed-protocol-newsblur-maxpages 1)
emacsomancer commented 4 years ago

It seems to be related to this weird issue https://github.com/skeeto/elfeed/issues/277 but, having tested further, it only happens on one machine and not the other (using exactly the same emacs configuration).

I think it's related to that issue because I get the error:

Error running timer ‘elfeed-curl--call-callback’: (wrong-type-argument stringp nil)

I think the elfeed-log will just be a red herring in this case, and I will have to spend some time to sanitise it, but I can do so if you think it will be helpful.

This doesn't seem to occur (on the same machine) when I load Newsblour's opml file into elfeed directly (without using elfeed-protocol) though, so I don't quite understand the source of the issue.

fasheng commented 4 years ago

I see. At least newsblur works with elfeed 3.3.0 and elfeed-protocol 0.7.2 in my Linux Emacs 26.3.

And the first error no subfeed for feed id 5843473 means variable elfeed-protocol-newsblur-feeds is empty or didn't contains the special feed id.

If you don't want upload the detailed elfeed-log content, you could debug it yourself with the steps:

  1. check if the not found feed id 5843473 exists in detailed elfeed-log with config (setq elfeed-protocol-log-trace t), the prefer result looks like:
    [debug]: elfeed-protocol-newsblur: update feed list
    [debug]: ..."feeds": { "5843473": { ... } }...
  2. check if elfeed-protocol-newsblur-feeds contains feed items, the prefer result is it should contains multiple feed items.
  3. check if elfeed-protocol-newsblur-feeds contains special feed id, the prefer result is it should contains feed 5843473.

And if you could not reproduct the issue repeatly, maybe just a temporary curl network error, close the issue will be fine.

emacsomancer commented 4 years ago

It consistently occurs on my one machine (i.e. I can't get elfeed-protocol to work at all on this machine), despite sharing a configuration with a machine where elfeed-protocol works fine.

I'll investigate further and report any findings.

emacsomancer commented 4 years ago

Ok, now I'm getting the same behaviour on both machines.

This is the *elfeed-log*: https://filebin.ca/5EG9oqgTfWxD

fasheng commented 4 years ago

Thanks for your *elfeed-log*. I built a test case for your log, and it shows everything is fine. I will deploy same environment with you(emacs version: GNU Emacs 28.0.50, elfeed version: 20200209.1942) and test again.

fasheng commented 4 years ago

Well, I could not reproduce the issue on elfeed version 20200209.1942 either.

Flatpak don't provide emacs 28.0, could you reproduce it in another emacs version(for example 26.3)? Your log shows Newsblur return the correct data, and I have no idea for the issue now..

BTW: I use curl 7.65.3

emacsomancer commented 4 years ago

Thanks. I'm at a loss to understand what the issue would be. It worked fine for many months before this.

fasheng commented 4 years ago

I provide a workaround for unknown feed id in commit d081215. In theory it allows you read and mark Newsblur articles like before. And this issue need more information to debug it. Let's look at it later.

emacsomancer commented 4 years ago

Well, I could not reproduce the issue on elfeed version 20200209.1942 either.

Flatpak don't provide emacs 28.0, could you reproduce it in another emacs version(for example 26.3)? Your log shows Newsblur return the correct data, and I have no idea for the issue now..

BTW: I use curl 7.65.3

The elfeed log I sent actually came from a different machine, running Emacs 26.3, with curl 7.68.

emacsomancer commented 4 years ago

I provide a workaround for unknown feed id in commit d081215. In theory it allows you read and mark Newsblur articles like before. And this issue need more information to debug it. Let's look at it later.

Many thanks. I'll try this.

emacsomancer commented 4 years ago

Unfortunately with the new update, it now displays all Feed names as 'nil':

nil                            [us news,public health,o As Coronavirus infections near 100,000 worldwide, fear of mass deaths for the poor
nil                            [jfk,deepfakery,post,unr Audio deepfake: JFK tells Anakin the story of Darth Plagueis the Wise
nil                            [technology,tech news,te Clearview AI app was used by investors as powerful toy for spying on the public: Report
nil                            [world news,uk,scams,hea $1 million stolen in UK coronavirus scams
nil                            [releases,qtcreator,qt,d Qt Creator 4.12 Beta released
nil                            [tabletop gaming,magnets Hand of Glory offers modular, magnetic gaming miniatures
nil                            [msnbc,math is hard,bria MSNBC's Brian Williams is very bad at math
nil                            [plex,creative future,op Plex Slammed By Huge Copyright Coalition For Not Policing Pirates
nil                            [exercises,unread]       Squares Of A Sorted Array
nil                            [music,video,post,unread Ecce tympanista
nil                            [unread]                 Business Greetings
nil                            [shop,post,unread]       Kickstart your digital marketing career with this 100-hour training bundle
nil                            [orthography,unread]     Fancy diacritics
End of entries.

tail of *elfeed-log*:

[2020-03-06 06:44:06] [debug]: elfeed-protocol-newsblur: parsing entries, last-modified: 1581431339
[2020-03-06 06:44:06] [warn]: elfeed-protocol-newsblur: no subfeed for feed id 5843473, fallback to unknown feed
[2020-03-06 06:44:06] [warn]: elfeed-protocol-newsblur: no subfeed for feed id 5843473, fallback to unknown feed
[2020-03-06 06:44:06] [warn]: elfeed-protocol-newsblur: no subfeed for feed id 5843473, fallback to unknown feed
[2020-03-06 06:44:06] [warn]: elfeed-protocol-newsblur: no subfeed for feed id 5843473, fallback to unknown feed
[2020-03-06 06:44:06] [warn]: elfeed-protocol-newsblur: no subfeed for feed id 5859751, fallback to unknown feed
[2020-03-06 06:44:06] [warn]: elfeed-protocol-newsblur: no subfeed for feed id 5843473, fallback to unknown feed
[2020-03-06 06:44:06] [warn]: elfeed-protocol-newsblur: no subfeed for feed id 5843473, fallback to unknown feed
[2020-03-06 06:44:06] [warn]: elfeed-protocol-newsblur: no subfeed for feed id 2140, fallback to unknown feed
[2020-03-06 06:44:06] [warn]: elfeed-protocol-newsblur: no subfeed for feed id 7934, fallback to unknown feed
[2020-03-06 06:44:06] [warn]: elfeed-protocol-newsblur: no subfeed for feed id 5843473, fallback to unknown feed
[2020-03-06 06:44:06] [warn]: elfeed-protocol-newsblur: no subfeed for feed id 5994357, fallback to unknown feed
[2020-03-06 06:44:06] [warn]: elfeed-protocol-newsblur: no subfeed for feed id 5843473, fallback to unknown feed
[2020-03-06 06:44:06] [warn]: elfeed-protocol-newsblur: no subfeed for feed id 5629449, fallback to unknown feed
[2020-03-06 06:44:06] [debug]: elfeed-protocol-newsblur: parsed 13 entries with 0.084946s, last-modified: 1583501696
fasheng commented 4 years ago

Well, it should show Unknown Feed instead at least...

I think I find the reason, your elfeed-protocol-newsblur-feeds should be not empty, how ever the PROTO-ID(such as "newsblur+https://myusername@newsblur.com") is incorrect for some reason. could you paste the head part of your elfeed-protocol-newsblur-feeds here? For example:

#s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data
              ("newsblur+https://myusername@newsblur.com"
               ((\569
                 (subs . 18069)
                 (favicon_url . "https://s3.amazonaws.com/icons.newsblur.com/569.png")
                 (is_push . t)
                 (feed_opens . 3)
                 (id . 569)
                 (s3_icon . t)
                 (feed_link . "https://anildash.com/")
                 (updated_seconds_ago . 159)
                 (favicon_fetching . :json-false)
                 (ng . 0)
                 (favicon_border . "8b7875")
                 (last_story_date . "2019-12-23 22:21:36")
                 (nt . 0)
                 (not_yet_fetched . :json-false)
                 (updated . "2 minutes")
                 (average_stories_per_month . 3)
                 (ps . 0)
                 (feed_address . "http://feeds.dashes.com/AnilDash")
                 (feed_title . "Anil Dash")
                 (favicon_fade . "ddc4c0")
                 (is_newsletter . :json-false)
                 (last_story_seconds_ago . 6408735)
                 (favicon_color . "baa19d")
                 (stories_last_month . 0)
                 (active . t)
                 (fetched_once . t)
                 (favicon_text_color . "white")
                 (subscribed . t)
                 (num_subscribers . 18069)
                 (s3_page . :json-false)
                 (min_to_decay . 240)
                 (search_indexed . t))
...

And looks you put a colon after username. How about remove the colon? You could clean elfeed-db-directory and retry.

  (setq elfeed-feeds '(("newsblur+https://myusername:@newsblur.com"
                         :password "*****")))
emacsomancer commented 4 years ago

Well, it should show Unknown Feed instead at least...

Though 'unknown feed' isn't really helpful for reading through a feed either.

I think I find the reason, your elfeed-protocol-newsblur-feeds should be not empty, how ever the PROTO-ID(such as "newsblur+https://myusername@newsblur.com") is incorrect for some reason. could you paste the head part of your elfeed-protocol-newsblur-feeds here?

Here it is:

#s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data
              ("newsblur+https://emacsomancer@newsblur.com"
               ((\7575960
                 (subs . 1)
                 (favicon_url . "https://s3.amazonaws.com/icons.newsblur.com/7575960.png")
                 (is_push . :json-false)
                 (feed_opens . 3)
                 (id . 7575960)
                 (s3_icon . t)
                 (feed_link . "https://jdb1745.net/littlerebellions")
                 (updated_seconds_ago . 8214)
                 (favicon_fetching . :json-false)
                 (ng . 0)
                 (favicon_border . "484a43")
                 (last_story_date . "2019-12-19 22:32:06")
                 (nt . 0)
                 (not_yet_fetched . :json-false)
                 (updated . "2 hours")
                 (average_stories_per_month . 1)
                 (ps . 0)
                 (feed_address . "https://jdb1745.net/littlerebellions/feed/")
                 (feed_title . "Little Rebellions")
                 (favicon_fade . "83867d")
                 (is_newsletter . :json-false)
                 (last_story_seconds_ago . 6755895)
                 (favicon_color . "60635a")
                 (stories_last_month . 0)
                 (active . t)
                 (fetched_once . t)
                 (favicon_text_color . "white")
                 (subscribed . t)
                 (num_subscribers . 1)
                 (s3_page . :json-false)
                 (min_to_decay . 240)
                 (search_indexed . :json-false))

And looks you put a colon after username. How about remove the colon? You could clean elfeed-db-directory and retry.

I don't in reality. I just messed up my copy-and-paste into Github originally.

fasheng commented 4 years ago

Thanks your quick feedback. I mean it not display Unknown Feed as title shows something is wrong, maybe the same reason with feed not found.

How about the expressions result in your side:

(elfeed-db-get-feed "newsblur+https://emacsomancer@newsblur.com::unknown-feed")
(elfeed-protocol-newsblur--get-subfeed-url "https://emacsomancer@newsblur.com" 5843473) ; reported not found in elfeed-log
(elfeed-protocol-newsblur--get-subfeed-url "https://emacsomancer@newsblur.com" 7575960) ; confirmed exists in elfeed-protocol-newsblur-feeds
fasheng commented 4 years ago

Besides, move curse to one entry in elfeed-search view that title is nil, then Alt-: eval (elfeed-search-selected), and paste the result in message buffer. Hope the entry object will show some information.

emacsomancer commented 4 years ago

Thanks your quick feedback. I mean it not display Unknown Feed as title shows something is wrong, maybe the same reason with feed not found.

How about the expressions result in your side:

(elfeed-db-get-feed "newsblur+https://emacsomancer@newsblur.com::unknown-feed")
(elfeed-protocol-newsblur--get-subfeed-url "https://emacsomancer@newsblur.com" 5843473) ; reported not found in elfeed-log
(elfeed-protocol-newsblur--get-subfeed-url "https://emacsomancer@newsblur.com" 7575960) ; confirmed exists in elfeed-protocol-newsblur-feeds

Here is what I get for these:

(elfeed-db-get-feed "newsblur+https://emacsomancer@newsblur.com::unknown-feed");
#s(elfeed-feed "newsblur+https://emacsomancer@newsblur.com::unknown-feed" nil nil nil nil)

(elfeed-protocol-newsblur--get-subfeed-url "https://emacsomancer@newsblur.com" 5843473);
"unknown-feed"

(elfeed-protocol-newsblur--get-subfeed-url "https://emacsomancer@newsblur.com" 7575960); 
"unknown-feed"
emacsomancer commented 4 years ago

Besides, move curse to one entry in elfeed-search view that title is nil, then Alt-: eval (elfeed-search-selected), and paste the result in message buffer. Hope the entry object will show some information.

Picking a random entry, for this I get:

(#s(elfeed-entry ("unknown-feed" . "6918b5") "Friday Squid Blogging: The Effect of Noise on Squid" "https://www.schneier.com/blog/archives/2020/03/friday_squid_bl_719.html" 1583532385 #s(elfeed-ref "63f230bc61f6825ace582d6366511454f7e1859e") html nil (squid unread) "newsblur+https://emacsomancer@newsblur.com::unknown-feed" (:author "Bruce Schneier" :protocol-id "newsblur+https://emacsomancer@newsblur.com" :id "5882445:6918b5" :guid-hash "6918b5" :feed-id 5882445)))
fasheng commented 4 years ago

Something must wrong.

  1. elfeed-db-get-feed should return unknown feed correctly, I added it before any update operation, you can also search elfeed-db's index file to find it.
    (elfeed-protocol-add-unknown-feed proto-id) ; proto-id here is "newsblur+https://emacsomancer@newsblur.com"
  2. elfeed-protocol-newsblur--get-subfeed-url even don't depends on elfeed-db, once elfeed-protocol-newsblur-feeds is correctly, it should return the correct value. This function is not complicated, could you help me debug it? https://github.com/fasheng/elfeed-protocol/blob/master/elfeed-protocol-newsblur.el#L159
emacsomancer commented 4 years ago

Something must wrong.

You'll obviously know more than I here, but the two things I can think of are:

  1. One of my RSS subscriptions in Newsblur does something expected, that none of your feeds does, and it ends up messing up a bunch of things.

  2. Newer versions of curl changed something.

1. `elfeed-db-get-feed` should return unknown feed correctly, I added it before any update operation, you can also search elfeed-db's `index` file to find it.
   ```emacs-lisp
   (elfeed-protocol-add-unknown-feed proto-id) ; proto-id here is "newsblur+https://emacsomancer@newsblur.com"
   ```

Yes, well, (elfeed-protocol-add-unknown-feed "newsblur+https://emacsomancer@newsblur.com") returns "Unknown Feed".

2. `elfeed-protocol-newsblur--get-subfeed-url` even don't depends on elfeed-db, once `elfeed-protocol-newsblur-feeds` is correctly, it should return the correct value. This function is not complicated, could you help me debug it?
   https://github.com/fasheng/elfeed-protocol/blob/master/elfeed-protocol-newsblur.el#L159

I looked at the function itself, but I haven't had a chance to try debugging in my Emacs setup. I'll have to wait a bit until I get a block of time I can dedicate to it.

Vietoonet commented 4 years ago

Hi, I have the same issue with Newsblur I get an unknown feed for id xxxxxx...

fasheng commented 4 years ago

@Vietoonet Please paste your environment information(OS version, emacs version, etc). And do you have the problem frequently?

Vietoonet commented 4 years ago

GNU Emacs 27.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.21, cairo version 1.16.0) of 2020-08-13 Linux Calculate (Gentoo based) v20.4

fasheng commented 4 years ago

Thanks @emacsomancer and @Vietoonet. Finally this issue was solved, which was caused by the changed behavior of map-elt after emacs 27. Please update and have a try.