Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problem saving files with doas #1383

Closed
h4ckee opened this issue Sep 9, 2019 · 8 comments · Fixed by #1424
Closed

Problem saving files with doas #1383

h4ckee opened this issue Sep 9, 2019 · 8 comments · Fixed by #1424

Comments

@h4ckee
Copy link

h4ckee commented Sep 9, 2019

Description of the problem or steps to reproduce

Hello.
When I save a file which requires elevated rights (owned by root or has 555 permissions), sometimes this operation hang (but not always). Instead of 'sudo' I use 'doas':
"sucmd": "doas",
Below is the output I got using 'truss':
...
_umtx_op(0xf7e660,UMTX_OP_WAIT_UINT_PRIVATE,0x0,0x18,0xc00004be78) ERR#60 'Operation timed out'
_umtx_op(0xf7e660,UMTX_OP_WAIT_UINT_PRIVATE,0x0,0x18,0xc00004be78) ERR#60 'Operation timed out'
_umtx_op(0xf7e660,UMTX_OP_WAIT_UINT_PRIVATE,0x0,0x18,0xc00004be78) ERR#60 'Operation timed out'
_umtx_op(0xf7e660,UMTX_OP_WAIT_UINT_PRIVATE,0x0,0x18,0xc00004be78) ERR#60 'Operation timed out'
...

Best regards,
Sergey.

Specifications

You can use micro -version to get the commit hash.

Commit hash: 1856891
OS: FreeBSD 12.0-STABLE
Terminal: rxvt-unicode-9.22_1

@Mel34
Copy link

Mel34 commented Sep 12, 2019

I get that problem too and if I interrupt it when it hangs sometimes it wipes the contents of the file it tries to save.
Edit: forgot to mention, I'm using sudo

@h4ckee
Copy link
Author

h4ckee commented Sep 13, 2019

I get that problem too and if I interrupt it when it hangs sometimes it wipes the contents of the file it tries to save.
Edit: forgot to mention, I'm using sudo

Same here, If I interrupt with Ctrl+C, all new data is lost.

@Mel34
Copy link

Mel34 commented Oct 1, 2019

Any activity here? This is a pretty critical bug, if I lose contents of files in my /etc again due to it, I'll seriously start looking for a new text editor.

@zyedidia
Copy link
Owner

zyedidia commented Oct 1, 2019

The "save with sudo" feature is a bit of a hack because micro is not running with admin privileges, so it has to redirect to another program that is. I will try to look into this problem a little, but I might not be able to reproduce it. You can always run micro with sudo (or doas) when you start it and you won't have this problem.

@Mel34
Copy link

Mel34 commented Oct 1, 2019

Yes, that's always an option, thank you for pointing that out. I appreciate you taking the time to look into this. Micro is flawless otherwise, to the point where I removed all the usual text editors from my system.

@h4ckee
Copy link
Author

h4ckee commented Oct 2, 2019

Thanx Zyedidia for a feedback, that'd be great if you'll find the issue. Nonetheless, I agree with Mel34, micro is a Great! editor, one of a kind. Keep the good work up.

@craigbarnes
Copy link

You can always run micro with sudo (or doas) when you start it and you won't have this problem.

Or sudoedit (sudo -e), if you don't want the editor process to run as root.

estrogently pushed a commit to estrogently/micro that referenced this issue Dec 13, 2019
zyedidia added a commit that referenced this issue Dec 25, 2019
The code from the refactor that I have been working on is
now more or less ready to be merged. These changes make some
breaking changes, notably with regards to the plugin
interface. Once a lot more documentation has been written, I
will release this code as micro 2.0. There are a lot of new
features, and in the coming days I will try to go through
the open issues to see exactly which ones are addressed by
the new features, and write lots more documentation
regarding what has been implemented.

Some highlights include:

* Simple autocompletion.
    * Autocompletion (tab by default) will do a simple
      "buffer completion" which will autocomplete according
      to words used elsewhere in the buffer. In the future
      plugin support could be added along with support for
      interfacing with language-specific autocompletion
      tools.
* Automatic backups.
    * Backup files are stored in `~/.config/micro/backups`
      for every open buffer and are saved roughly every 8
      seconds if the buffer is being modified. Backups
      are removed when the buffer is closed, but if micro
      or the system crashes, any unsaved changes can be
      recovered by re-opening the file (micro will auto-
      recover) or by manually viewing the backup in the
      `~/.config/micro/backups` directory.
* Configurable statusline.
* Configurable linter plugin.
* Resizeable splits.
* Complete re-organization of the code to support better go
  modules and maintain a better directory structure.
* Better plugin interface with better access to the Go
  standard library and internal Micro functions (lots of
  documentation still needs to be written).
    * Documentation still needs to be written, but in the
      meantime please see the default plugins as examples
      as they have been converted from their old versions
      to be compatible with the new interface.
* Buffer synchronization when the same file is opened
  multiple times.
* Keybindings and mouse support in the command bar.
* Support for non-utf8 encodings.
* General QoL improvements and bug fixes.
    * Notably I believe the autoclose plugin crash issue is
      fixed.
* No more plugin manager.
    * Plugin installation will now be performed manually
      by git cloning into the `~/.config/micro/plug`
      directory. This may not be a highlight for some but
      I believe it is much simpler, and there is no need
      to have a heavyweight dependency manager. Perhaps
      in the future, a good command-line tool can be made
      to manage plugins if people would find it useful.
* Other features that I have forgotten.

Next I plan to write up more documentation for all the new
features, and make a "release candidate" for micro 2.0. I
will also be working to fix any bugs that come up (hopefully
not too many, but this is a big change and bound to have
some issues). After release I hope to focus more on
optimization (for example loading syntax files is currently
somewhat inefficient, and the bottleneck for startup time #1427).

Sorry for not being so active recently, but I hope merging
this big change can help me get back to more regular
development. Thanks to everyone for using micro and for
giving feedback and engaging with development online (even
if I don't always respond).

Merry Christmas!

Issues that are fixed/affected by this change:

Ref #1419 (configurable statusline)
Ref #1413 (cursor behaves better)
Ref #1401 (softwrap problems)
Ref #1383 (better save with sudo)
Ref #1424 (better save with sudo)
Ref #1382 (go modules)
Ref #1381 (install plugins from command line)
Ref #1357 (sorting -- textfilter)
Ref #1351 (custom linting)
Ref #1350 (sudo problem might be fixed)
Ref #1298 (readonly option)
Ref #1250 (autoclose bug)
Ref #1239 (go modules)
Ref #813  (autoclose bug)
Ref #812  (cursor sync across same buffers)
Ref #770  (resizeable panes)
Ref #635  (keybindings in infobar)
Ref #596  (disable builtin plugins)
Ref #550  (backups)
Ref #174  (autocompletion)
@zyedidia
Copy link
Owner

Should be fixed now. Please re-open or comment if you still experience the issue.

zyedidia pushed a commit that referenced this issue Jan 3, 2020
* Rewrite save with sudo (Fixes #1383)

* Combine overrideFile & overrideFileAsRoot into 1 function
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants