Powerline: Sudo vim - Disk space error

Created on 29 Jul 2013  ·  9Comments  ·  Source: powerline/powerline

When I run vim with powerline installed as my normal user it runs fine. When I sudo su to root it runs fine but when I'm on my normal user and I do sudo vim I get the following error:

ERROR:vim:Failed to create renderer: [Errno 28] No space left on device
Error detected while processing VimEnter Auto commands for "*":
Traceback (most recent call last):
Error detected while processing VimEnter Auto commands for "*":
  File "/usr/local/lib/python2.7/dist-packages/powerline/__init__.py", line 361, in update_rendererError detected while processing VimEnter Auto commands for "*":
    self.create_renderer(**create_renderer_kwargs)
Error detected while processing VimEnter Auto commands for "*":
  File "/usr/local/lib/python2.7/dist-packages/powerline/__init__.py", line 207, in create_renderer
Error detected while processing VimEnter Auto commands for "*":
    self.renderer_options['local_themes'] = self.get_local_themes(self.ext_config.get('local_themes'))
Error detected while processing VimEnter Auto commands for "*":
  File "/usr/local/lib/python2.7/dist-packages/powerline/vim.py", line 75, in get_local_themes
Error detected while processing VimEnter Auto commands for "*":
    for key, val in local_themes.items()))
Error detected while processing VimEnter Auto commands for "*":
  File "/usr/local/lib/python2.7/dist-packages/powerline/vim.py", line 75, in <genexpr>
Error detected while processing VimEnter Auto commands for "*":
    for key, val in local_themes.items()))
Error detected while processing VimEnter Auto commands for "*":
  File "/usr/local/lib/python2.7/dist-packages/powerline/vim.py", line 66, in load_theme_config

I don't have any .pyc files in my powerline repo and the result of df -i is

Filesystem                     Inodes    IUsed     IFree IUse% Mounted on
/dev/mapper/it12--0391-root  14991360   421921  14569439    3% /
none                           500539        1    500538    1% /sys/fs/cgroup
udev                           498075      516    497559    1% /dev
tmpfs                          500539      488    500051    1% /run
none                           500539        5    500534    1% /run/lock
none                           500539       13    500526    1% /run/shm
none                           500539       25    500514    1% /run/user
/dev/sda1                      124496      273    124223    1% /boot

So I shouldn't have any issue with running out of inodes.

cvim linux bug

Most helpful comment

I had same issue on Arch Linux, after searching a little, I found this nice guide:
https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers

_Note that arch command is different_

Here's what I was having:

vim
2016-03-14 20:38:59,911:ERROR:vim:powerline:Failed to create renderer: [Errno 28] No space left on deviceYou may need to increase the inotify limits on your system, via /proc/sys/fs/inotify/max_user_*
Traceback (most recent call last):
  File "/home/gableroux/.vim/bundle/powerline/powerline/__init__.py", line 842, in update_renderer
    self.create_renderer(**cr_kwargs)
  File "/home/gableroux/.vim/bundle/powerline/powerline/__init__.py", line 582, in create_renderer
    self.config_loader.set_watcher(self.common_config['watcher'])
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/config.py", line 84, in set_watcher
    self.watcher.transfer_calls(watcher)
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/config.py", line 49, in transfer_calls
    getattr(watcher, attr)(*args, **kwargs)
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/watcher/inotify.py", line 100, in watch
    self.handle_error()
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/inotify.py", line 138, in handle_error
    raise OSError(eno, self.os.strerror(eno) + str(extra))
OSError: [Errno 28] No space left on deviceYou may need to increase the inotify limits on your system, via /proc/sys/fs/inotify/max_user_*
Traceback (most recent call last):
  File "<string>", line 12, in <module>
  File "/home/gableroux/.vim/bundle/powerline/powerline/__init__.py", line 896, in setup
    self.do_setup(*args, **kwargs)
  File "/home/gableroux/.vim/bundle/powerline/powerline/vim.py", line 211, in do_setup
    self.update_renderer()
  File "/home/gableroux/.vim/bundle/powerline/powerline/__init__.py", line 842, in update_renderer
    self.create_renderer(**cr_kwargs)
  File "/home/gableroux/.vim/bundle/powerline/powerline/__init__.py", line 582, in create_renderer
    self.config_loader.set_watcher(self.common_config['watcher'])
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/config.py", line 84, in set_watcher
    self.watcher.transfer_calls(watcher)
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/config.py", line 49, in transfer_calls
    getattr(watcher, attr)(*args, **kwargs)
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/watcher/inotify.py", line 100, in watch
    self.handle_error()
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/inotify.py", line 138, in handle_error
    raise OSError(eno, self.os.strerror(eno) + str(extra))
OSError: [Errno 28] No space left on deviceYou may need to increase the inotify limits on your system, via /proc/sys/fs/inotify/max_user_*
An error occurred while importing powerline module.
This could be caused by invalid sys.path setting,
or by an incompatible Python version (powerline requires
Python 2.6, 2.7 or 3.2 and later to work). Please consult
the troubleshooting section in the documentation for
possible solutions.
Press ENTER or type command to continue

Informations:

df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
dev             978493    516  977977    1% /dev
run             979167    767  978400    1% /run
/dev/sda2      9175040 954797 8220243   11% /
tmpfs           979167    199  978968    1% /dev/shm
tmpfs           979167     12  979155    1% /sys/fs/cgroup
tmpfs           979167    537  978630    1% /tmp
/dev/sda1            0      0       0     - /boot/efi
tmpfs           979167     31  979136    1% /run/user/1000
tmpfs           979167     10  979157    1% /run/user/620
vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Mar  9 2016 16:25:55)
Included patches: 1-1529
Compiled by Arch Linux
Huge version without GUI.  Features included (+) or not (-):
+acl             +farsi           +mouse_netterm   +tag_binary
+arabic          +file_in_path    +mouse_sgr       +tag_old_static
+autocmd         +find_in_path    -mouse_sysmouse  -tag_any_white
-balloon_eval    +float           +mouse_urxvt     +tcl/dyn
-browse          +folding         +mouse_xterm     +terminfo
++builtin_terms  -footer          +multi_byte      +termresponse
+byte_offset     +fork()          +multi_lang      +textobjects
+channel         +gettext         -mzscheme        +title
+cindent         -hangul_input    +netbeans_intg   -toolbar
-clientserver    +iconv           +packages        +user_commands
-clipboard       +insert_expand   +path_extra      +vertsplit
+cmdline_compl   +job             +perl/dyn        +virtualedit
+cmdline_hist    +jumplist        +persistent_undo +visual
+cmdline_info    +keymap          +postscript      +visualextra
+comments        +langmap         +printer         +viminfo
+conceal         +libcall         +profile         +vreplace
+cryptv          +linebreak       +python/dyn      +wildignore
+cscope          +lispindent      +python3/dyn     +wildmenu
+cursorbind      +listcmds        +quickfix        +windows
+cursorshape     +localmap        +reltime         +writebackup
+dialog_con      +lua/dyn         +rightleft       -X11
+diff            +menu            +ruby/dyn        -xfontset
+digraphs        +mksession       +scrollbind      -xim
-dnd             +modify_fname    +signs           -xsmp
-ebcdic          +mouse           +smartindent     -xterm_clipboard
+emacs_tags      -mouseshape      +startuptime     -xterm_save
+eval            +mouse_dec       +statusline      -xpm
+ex_extra        +mouse_gpm       -sun_workshop    
+extra_search    -mouse_jsbterm   +syntax          
   system vimrc file: "/etc/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
  fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H   -D_FORTIFY_SOURCE=2  -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1      
Linking: gcc   -L. -Wl,-O1,--sort-common,--as-needed,-z,relro -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-E -Wl,-rpath,/usr/lib/perl5/core_perl/CORE  -Wl,-O1,--sort-common,--as-needed,-z,relro -L/usr/local/lib -Wl,--as-needed -o vim        -lm -lncurses -lelf -lnsl    -lacl -lattr -lgpm -ldl   -Wl,-E -Wl,-rpath,/usr/lib/perl5/core_perl/CORE -Wl,-O1,--sort-common,--as-needed,-z,relro -fstack-protector-strong -L/usr/local/lib  -L/usr/lib/perl5/core_perl/CORE -lperl -lpthread -lnsl -ldl -lm -lcrypt -lutil -lc   -L/usr/lib -ltclstub8.6 -ldl -lz -lpthread -lieee -lm     

Before I increase /proc/sys/fs/inotify/max_user_instances

tail /proc/sys/fs/inotify/*
==> /proc/sys/fs/inotify/max_queued_events <==
16384

==> /proc/sys/fs/inotify/max_user_instances <==
128

==> /proc/sys/fs/inotify/max_user_watches <==
8192

After

tail /proc/sys/fs/inotify/*
==> /proc/sys/fs/inotify/max_queued_events <==
16384

==> /proc/sys/fs/inotify/max_user_instances <==
128

==> /proc/sys/fs/inotify/max_user_watches <==
524288

Works fine now :)

All 9 comments

I use sudo vim all the time, but I've never had this issue. As you say it's probably not an inode issue, but it's also not a Powerline or Python issue since they use Linux libraries to write to disk. You should search for this issue as a Linux issue, and please post your solution here if you find it.

It may be an issue with running out of inotify watches.

Closing due to lack of feedback and being too outdated. Though I still think it is an issue with inotify watches, though you may try using different value in /proc/sys/fs/inotify/max_user_watches.

I had same issue on Arch Linux, after searching a little, I found this nice guide:
https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers

_Note that arch command is different_

Here's what I was having:

vim
2016-03-14 20:38:59,911:ERROR:vim:powerline:Failed to create renderer: [Errno 28] No space left on deviceYou may need to increase the inotify limits on your system, via /proc/sys/fs/inotify/max_user_*
Traceback (most recent call last):
  File "/home/gableroux/.vim/bundle/powerline/powerline/__init__.py", line 842, in update_renderer
    self.create_renderer(**cr_kwargs)
  File "/home/gableroux/.vim/bundle/powerline/powerline/__init__.py", line 582, in create_renderer
    self.config_loader.set_watcher(self.common_config['watcher'])
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/config.py", line 84, in set_watcher
    self.watcher.transfer_calls(watcher)
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/config.py", line 49, in transfer_calls
    getattr(watcher, attr)(*args, **kwargs)
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/watcher/inotify.py", line 100, in watch
    self.handle_error()
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/inotify.py", line 138, in handle_error
    raise OSError(eno, self.os.strerror(eno) + str(extra))
OSError: [Errno 28] No space left on deviceYou may need to increase the inotify limits on your system, via /proc/sys/fs/inotify/max_user_*
Traceback (most recent call last):
  File "<string>", line 12, in <module>
  File "/home/gableroux/.vim/bundle/powerline/powerline/__init__.py", line 896, in setup
    self.do_setup(*args, **kwargs)
  File "/home/gableroux/.vim/bundle/powerline/powerline/vim.py", line 211, in do_setup
    self.update_renderer()
  File "/home/gableroux/.vim/bundle/powerline/powerline/__init__.py", line 842, in update_renderer
    self.create_renderer(**cr_kwargs)
  File "/home/gableroux/.vim/bundle/powerline/powerline/__init__.py", line 582, in create_renderer
    self.config_loader.set_watcher(self.common_config['watcher'])
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/config.py", line 84, in set_watcher
    self.watcher.transfer_calls(watcher)
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/config.py", line 49, in transfer_calls
    getattr(watcher, attr)(*args, **kwargs)
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/watcher/inotify.py", line 100, in watch
    self.handle_error()
  File "/home/gableroux/.vim/bundle/powerline/powerline/lib/inotify.py", line 138, in handle_error
    raise OSError(eno, self.os.strerror(eno) + str(extra))
OSError: [Errno 28] No space left on deviceYou may need to increase the inotify limits on your system, via /proc/sys/fs/inotify/max_user_*
An error occurred while importing powerline module.
This could be caused by invalid sys.path setting,
or by an incompatible Python version (powerline requires
Python 2.6, 2.7 or 3.2 and later to work). Please consult
the troubleshooting section in the documentation for
possible solutions.
Press ENTER or type command to continue

Informations:

df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
dev             978493    516  977977    1% /dev
run             979167    767  978400    1% /run
/dev/sda2      9175040 954797 8220243   11% /
tmpfs           979167    199  978968    1% /dev/shm
tmpfs           979167     12  979155    1% /sys/fs/cgroup
tmpfs           979167    537  978630    1% /tmp
/dev/sda1            0      0       0     - /boot/efi
tmpfs           979167     31  979136    1% /run/user/1000
tmpfs           979167     10  979157    1% /run/user/620
vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Mar  9 2016 16:25:55)
Included patches: 1-1529
Compiled by Arch Linux
Huge version without GUI.  Features included (+) or not (-):
+acl             +farsi           +mouse_netterm   +tag_binary
+arabic          +file_in_path    +mouse_sgr       +tag_old_static
+autocmd         +find_in_path    -mouse_sysmouse  -tag_any_white
-balloon_eval    +float           +mouse_urxvt     +tcl/dyn
-browse          +folding         +mouse_xterm     +terminfo
++builtin_terms  -footer          +multi_byte      +termresponse
+byte_offset     +fork()          +multi_lang      +textobjects
+channel         +gettext         -mzscheme        +title
+cindent         -hangul_input    +netbeans_intg   -toolbar
-clientserver    +iconv           +packages        +user_commands
-clipboard       +insert_expand   +path_extra      +vertsplit
+cmdline_compl   +job             +perl/dyn        +virtualedit
+cmdline_hist    +jumplist        +persistent_undo +visual
+cmdline_info    +keymap          +postscript      +visualextra
+comments        +langmap         +printer         +viminfo
+conceal         +libcall         +profile         +vreplace
+cryptv          +linebreak       +python/dyn      +wildignore
+cscope          +lispindent      +python3/dyn     +wildmenu
+cursorbind      +listcmds        +quickfix        +windows
+cursorshape     +localmap        +reltime         +writebackup
+dialog_con      +lua/dyn         +rightleft       -X11
+diff            +menu            +ruby/dyn        -xfontset
+digraphs        +mksession       +scrollbind      -xim
-dnd             +modify_fname    +signs           -xsmp
-ebcdic          +mouse           +smartindent     -xterm_clipboard
+emacs_tags      -mouseshape      +startuptime     -xterm_save
+eval            +mouse_dec       +statusline      -xpm
+ex_extra        +mouse_gpm       -sun_workshop    
+extra_search    -mouse_jsbterm   +syntax          
   system vimrc file: "/etc/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
  fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H   -D_FORTIFY_SOURCE=2  -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1      
Linking: gcc   -L. -Wl,-O1,--sort-common,--as-needed,-z,relro -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-E -Wl,-rpath,/usr/lib/perl5/core_perl/CORE  -Wl,-O1,--sort-common,--as-needed,-z,relro -L/usr/local/lib -Wl,--as-needed -o vim        -lm -lncurses -lelf -lnsl    -lacl -lattr -lgpm -ldl   -Wl,-E -Wl,-rpath,/usr/lib/perl5/core_perl/CORE -Wl,-O1,--sort-common,--as-needed,-z,relro -fstack-protector-strong -L/usr/local/lib  -L/usr/lib/perl5/core_perl/CORE -lperl -lpthread -lnsl -ldl -lm -lcrypt -lutil -lc   -L/usr/lib -ltclstub8.6 -ldl -lz -lpthread -lieee -lm     

Before I increase /proc/sys/fs/inotify/max_user_instances

tail /proc/sys/fs/inotify/*
==> /proc/sys/fs/inotify/max_queued_events <==
16384

==> /proc/sys/fs/inotify/max_user_instances <==
128

==> /proc/sys/fs/inotify/max_user_watches <==
8192

After

tail /proc/sys/fs/inotify/*
==> /proc/sys/fs/inotify/max_queued_events <==
16384

==> /proc/sys/fs/inotify/max_user_instances <==
128

==> /proc/sys/fs/inotify/max_user_watches <==
524288

Works fine now :)

thanks @GabLeRoux , working

Thanks @GabLeRoux, it works great!

Thanks again @GabLeRoux for the detailed response, helped me on Fedora 27 today.

I had the same issue occurring after installing a backup tool, which was processing and uploading 183k+ files at the time, so this explains why I'm running out of inotify watches.
echo 524288 > /proc/sys/fs/inotify/max_user_watches fixed it.

@JensTimmerman Thanks for the suggestion. This worked for me on Ubuntu 16.04.

Only I had to:

$ sudo su
$ echo 524288 > /proc/sys/fs/inotify/max_user_watches
$ exit
Was this page helpful?
0 / 5 - 0 ratings