启动错误信息 (error "Hash table data is not a list of even length")


#1

本人在windows10子系统下运行emacs gui但是,每次启动总有这个报错,下面是截图

真的甚是烦人啊,有类似情况的大佬吗?


#2

好奇问下什么情况会触发这个错误信息,起初我以为 hash table 键值数量不同,但试了下报的是

#s(hash-table data (x))
(error "Odd number of elements in hash table data")

#3

一般情况下是你的 pyim dcache 不知道什么原因挂了,以前FangQ同学给我提过这个问题。。。


#4

以前 我也是老碰到这个问题,tumashu大佬以前也是告诉我是cache挂了, 但是我从来没有手动编辑过cache文件,因此不存在我自己的编辑错误,后来我发现是因为关Emacs的时候,cache的自动保存hook在写入文件时候发生的括号匹配问题,但是我看了下pyim的相关代码,保存逻辑没有问题,所以我怀疑是Emacs没有正常关闭导致的。

还有就是如果两个session共用一个cache文件的时候,依次关闭他们,下回再用这个cache的时候也会发生这个问题。

因此我觉得是否添加一个feature,给当前cache备份,然后如果读取错误那么启用备份。


#5

QiangF 同学也提到过这个自动备份feature,但我估摸了一下,感觉这个feature想要较好的实现,似乎也不太简单,所以一直没动手。。。 :slight_smile:


#6

大佬, 不过我的问题好像不是这个cache的问题,我的问题感觉在前面Faild to load breakpoints,现在我把dap-mode这个package注释掉了,现在启动就没有这个error。


#7

你把你cache的那个文件夹下dap-breakpoints那个文件删了,不用注释整个dap mode,试一下,我觉得是那个文件的问题


#8

我不打算折腾了,因为我就算删了还是会出现之前的问题,反正现在我用单元测试基本用不到debug,还是谢谢老铁


#9

27改了报错信息而已

in 26.2

ELISP> #s(hash-table data (x))
*** Read error ***  Odd number of elements in hash table data

in 27.0.5

ELISP> #s(hash-table  data (x ) )
*** Read error ***  Hash table data is not a list of even length

估计odd number of elements in hash table data会被误认为hashtable里有奇数个元素对。


#10

我用过dap,觉得暂时还是很难用


#11

嗯嗯,我现在如果要debug就用一下pycharm,反正两个换着用,挺好的


#12

看了下pyim分离了cache后端,我打算用KV database替换纯文本serialize试试 :smiling_imp:


#13

这个算需求吗


#14

关你屁事,我爱做就做。不需要你天天给我指手画脚。像个跟屁虫一样盯我发帖有意思?


#15

有 意 思 。


#16

可以试试 :slight_smile:


#17

是指sql-lite之类的?


你 心 态 挺 好 的 。


#18

原来是想用NoSQL的,现在发现SQL可能更好


#19

哦对KV是nosql