vim-go 导致大量 /tmp/go-buildXXX 的目录

151 views
Skip to first unread message

Zhang Cheng

unread,
Mar 29, 2017, 4:03:20 AM3/29/17
to golang...@googlegroups.com
我平时使用 vim + vim-go 插件写代码,发现使用一段时间后,/tmp/ 下会有一大堆 go-buildXXXX 的目录,形似这样:

​$ ls -1d /tmp/go-build*
/tmp/go-build007212783
/tmp/go-build112288518
/tmp/go-build130292819
/tmp/go-build769072003

时间久了就会非常多,刚才看了一下,开机一周多,有5万多个这样的目录。我在网上搜了一下,似乎没有人反馈这样的问题(可能是我没有用对关键字)。

初步确定应该是由 vim-go 导致的。我做了一下实验, watch -n1 'ls -1d /tmp/go-build* | wc -l',然后 vim 打开一个 go 文件,保存,保存后,会多出两个目录,之后很快又消失。但是如果快速多次保存,那么就会多出很多目录来。猜测问题应该是在保存时 vim-go 执行了一些 go 相关的命令,这些命令正常退出时应该会删除 go-buildXXX 这样的临时目录,但如果快速保存,vim-go 就会杀掉尚未结束的 go 的相关命令并启动一个新的,导致之前的的 go-buildXXX 不被删除。除了快速多次保存以外,我估计应该还有其他操作会导致这样的情况发生(我日常并没有连续多次保存的习惯,一周产生5万多这样的目录,肯定还有其他因素)。

不知各位有没有碰到过这样的问题,有没有什么解决的思路?


--
Cheng,
Best Regards

Hyacinthus

unread,
Mar 29, 2017, 4:41:08 AM3/29/17
to golang...@googlegroups.com
我也有用vim-go   没有发现这个问题。。。

Zhang Cheng <steph...@gmail.com>于2017年3月29日周三 下午4:03写道:
--
--
官网: http://golang-china.org/
IRC: irc.freenode.net #golang-china
@golangchina
---
您收到此邮件是因为您订阅了Google网上论坛上的“Golang-China”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到golang-china...@googlegroups.com
要在网络上查看此讨论,请访问https://groups.google.com/d/msgid/golang-china/CA%2B6e6OhcEZV2gk5E2XNqC%3DrWe11BvC4850hy2ZS6sGC2G2ehQQ%40mail.gmail.com
要查看更多选项,请访问https://groups.google.com/d/optout

Zhang Cheng

unread,
Mar 29, 2017, 5:34:51 AM3/29/17
to golang...@googlegroups.com
对了,补充一下,我的系统是 Debian testing,go 版本是 go1.7.4,从官网下载tar包安装的。很久没在Mac下做开发,倒是没有注意过Mac下是否有此现象。

刚才进一步测试了一下,禁用vim-go插件后,就无法复现这个问题(快速连续保存,不会生成/tmp/go-buildXXX目录)。重新启用vim-go插件后,就稳定复现这个现象。

vim 版本为 8.0 (Debian testing仓库中安装),vim-go 版本为 master 分支最新(实际上这个问题已经发现了至少3个月以上了,只不过之前没有在意,也没有定位问题可能是谁的)。

2017-03-29 16:40 GMT+08:00 Hyacinthus <hyaci...@gmail.com>:
我也有用vim-go   没有发现这个问题。。。

Zhang Cheng <steph...@gmail.com>于2017年3月29日周三 下午4:03写道:
我平时使用 vim + vim-go 插件写代码,发现使用一段时间后,/tmp/ 下会有一大堆 go-buildXXXX 的目录,形似这样:

​$ ls -1d /tmp/go-build*
/tmp/go-build007212783
/tmp/go-build112288518
/tmp/go-build130292819
/tmp/go-build769072003

时间久了就会非常多,刚才看了一下,开机一周多,有5万多个这样的目录。我在网上搜了一下,似乎没有人反馈这样的问题(可能是我没有用对关键字)。

初步确定应该是由 vim-go 导致的。我做了一下实验, watch -n1 'ls -1d /tmp/go-build* | wc -l',然后 vim 打开一个 go 文件,保存,保存后,会多出两个目录,之后很快又消失。但是如果快速多次保存,那么就会多出很多目录来。猜测问题应该是在保存时 vim-go 执行了一些 go 相关的命令,这些命令正常退出时应该会删除 go-buildXXX 这样的临时目录,但如果快速保存,vim-go 就会杀掉尚未结束的 go 的相关命令并启动一个新的,导致之前的的 go-buildXXX 不被删除。除了快速多次保存以外,我估计应该还有其他操作会导致这样的情况发生(我日常并没有连续多次保存的习惯,一周产生5万多这样的目录,肯定还有其他因素)。

不知各位有没有碰到过这样的问题,有没有什么解决的思路?


--
Cheng,
Best Regards

--
--
官网: http://golang-china.org/
IRC: irc.freenode.net #golang-china
@golangchina
---
您收到此邮件是因为您订阅了Google网上论坛上的“Golang-China”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到golang-china+unsubscribe@googlegroups.com

--
--
官网: http://golang-china.org/
IRC: irc.freenode.net #golang-china
@golangchina
---
您收到此邮件是因为您订阅了Google网上论坛上的“Golang-China”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到golang-china+unsubscribe@googlegroups.com
要在网络上查看此讨论,请访问https://groups.google.com/d/msgid/golang-china/CAMuho7hz%3DQpd7R-sHCadCcgpSiGmccoGKMrK8uP_-_wchWYO_w%40mail.gmail.com
要查看更多选项,请访问https://groups.google.com/d/optout



--
Cheng,
Best Regards

Hyacinthus

unread,
Mar 29, 2017, 6:45:38 AM3/29/17
to golang...@googlegroups.com
你先去vim-go的issue里搜一下,没有的话自己提一个呗。 我是ubuntu 16.04 vim8.0 没问题。

Zhang Cheng <steph...@gmail.com>于2017年3月29日周三 下午5:34写道:
我也有用vim-go   没有发现这个问题。。。

要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到golang-china...@googlegroups.com

--
--
官网: http://golang-china.org/
IRC: irc.freenode.net #golang-china
@golangchina
---
您收到此邮件是因为您订阅了Google网上论坛上的“Golang-China”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到golang-china...@googlegroups.com



--
Cheng,
Best Regards

--
--
官网: http://golang-china.org/
IRC: irc.freenode.net #golang-china
@golangchina
---
您收到此邮件是因为您订阅了Google网上论坛上的“Golang-China”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到golang-china...@googlegroups.com
要在网络上查看此讨论,请访问https://groups.google.com/d/msgid/golang-china/CA%2B6e6Oh-bRdkcVB3JzGycGNRoJraQUn9NSAyuy0K2dqkcTzw2w%40mail.gmail.com
要查看更多选项,请访问https://groups.google.com/d/optout

Zhang Cheng

unread,
Mar 29, 2017, 7:05:25 AM3/29/17
to golang...@googlegroups.com

2017-03-29 18:45 GMT+08:00 Hyacinthus <hyaci...@gmail.com>:
你先去vim-go的issue里搜一下,没有的话自己提一个呗。 我是ubuntu 16.04 vim8.0 没问题。

​我刚才已经建了,多谢建议!​



--
Cheng,
Best Regards

yegle

unread,
Mar 29, 2017, 12:51:15 PM3/29/17
to golang中文小组
Link?应该很多人会感兴趣

--
--
官网: http://golang-china.org/
IRC: irc.freenode.net #golang-china
@golangchina
---
您收到此邮件是因为您订阅了Google网上论坛上的“Golang-China”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到golang-china+unsubscribe@googlegroups.com
要在网络上查看此讨论,请访问https://groups.google.com/d/msgid/golang-china/CA%2B6e6OgRyQk1dQT0G4KZJs9hm5fqskMUKUAMKRaK1moMEbhoEg%40mail.gmail.com
要查看更多选项,请访问https://groups.google.com/d/optout



--

Zhang Cheng

unread,
Mar 29, 2017, 8:49:08 PM3/29/17
to golang...@googlegroups.com

2017-03-30 0:50 GMT+08:00 yegle <cny...@gmail.com>:
Link?应该很多人会感兴趣


几分钟前上游直接Close了,说应该是其他插件导致的。我再测试一次吧,这次把其他插件全部禁掉,单独开这个vim-go看看是否有问题。昨天测试时,只是对比了启用、禁用vim-go的情况,前面有位兄弟说他无法复现,我估计可能是vim-go跟其他插件有冲突吧。


--
Cheng,
Best Regards

Zhang Cheng

unread,
Mar 29, 2017, 9:05:09 PM3/29/17
to golang...@googlegroups.com

2017-03-30 8:49 GMT+08:00 Zhang Cheng <steph...@gmail.com>:

几分钟前上游直接Close了,说应该是其他插件导致的。我再测试一次吧,这次把其他插件全部禁掉,单独开这个vim-go看看是否有问题。昨天测试时,只是对比了启用、禁用vim-go的情况,前面有位兄弟说他无法复现,我估计可能是vim-go跟其他插件有冲突吧。

​刚才把所有插件都禁用(pathogen除外),然后​进行以下测试:

* 只启用 ALE (https://github.com/w0rp/ale),没有问题
* 只启用 vim-go,没有问题
* 同时启用 ALE 和 vim-go,有问题

然后把所有插件全启用,即回到最初的状态,接着再测试:

* 单独禁用 vim-go ,没有问题
* 单独禁用 ale,没有问题

​看起来应该是 vim-go 和 ale 之间的冲突导致了问题。​

我来找找文档看看有没有什么相关的设定。

--
Cheng,
Best Regards

Hyacinthus

unread,
Mar 29, 2017, 11:42:57 PM3/29/17
to golang...@googlegroups.com
哈哈  好洋气,我还没用过ale

Zhang Cheng <steph...@gmail.com>于2017年3月30日周四 上午9:05写道:
--
--
官网: http://golang-china.org/
IRC: irc.freenode.net #golang-china
@golangchina
---
您收到此邮件是因为您订阅了Google网上论坛上的“Golang-China”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到golang-china...@googlegroups.com
要在网络上查看此讨论,请访问https://groups.google.com/d/msgid/golang-china/CA%2B6e6OgJiE3kTf27kwSZCGKgsyZ%3DE1bYY777oEir_3%2BPbQGACQ%40mail.gmail.com
要查看更多选项,请访问https://groups.google.com/d/optout

Zhang Cheng

unread,
Mar 30, 2017, 12:36:24 AM3/30/17
to golang...@googlegroups.com
​之前一直用的 syntastic,syntastic用着一直挺好的,后来发现了 ale,ale 可以异步检查(不用保存就可以检查报错),所以就换了 ale 了。​

刚才调了一下 ale 的设置。ale 默认对go文件启用了4个linter:go fmt, go vet golint, go build,我把 go build 禁用了,观察了半天,发现没有 /tmp/go-buildXXX 的文件了。看来这个锅得 ale 来背,而不是 vim-go 背。
​我后来又尝试了一下,只启用 ale(有go build这个linter)、不启用 vim-go,​快速多次保存不会产生临时文件,但是使用半天还是会有一堆,所以这个问题应该就确认了跟vim-go无关了。

Hyacinthus

unread,
Mar 30, 2017, 2:06:37 AM3/30/17
to golang...@googlegroups.com
ale的issues里本来就有这个。。。

Zhang Cheng <steph...@gmail.com>于2017年3月30日周四 下午12:36写道:
--
--
官网: http://golang-china.org/
IRC: irc.freenode.net #golang-china
@golangchina
---
您收到此邮件是因为您订阅了Google网上论坛上的“Golang-China”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到golang-china...@googlegroups.com

Zhang Cheng

unread,
Mar 30, 2017, 2:33:12 AM3/30/17
to golang...@googlegroups.com

2017-03-30 14:06 GMT+08:00 Hyacinthus <hyaci...@gmail.com>:
ale的issues里本来就有这个。。。

​是说这两个吗?


这两个都是3天前刚刚创建的。

我很早就碰到了问题,但是只知道现象(/tmp/下面有一堆临时目录),一直没花时间去定位问题(当时甚至不确定是vim的问题),到昨天偶然发现/tmp/下居然有5万多个目录,我觉得不能忍了,就找了一下,初步确定是vim的问题,但还没有定位到具体的插件。今天才刚刚定位到是ale的lint相关的问题。所以我一开始搜索只知道搜 “/tmp/go-build”,并没有目的性的去搜。昨天定位时又阴差阳错的挑了vim-go,恰好我用的复现方法在禁用vim-go之后就不能复现了,所以这锅就甩给vim-go了。


--
Cheng,
Best Regards
Reply all
Reply to author
Forward
0 new messages