bug-grub
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #59195] Running grub-emu as root under Linux borks the machine requ


From: Dennis Filder
Subject: [bug #59195] Running grub-emu as root under Linux borks the machine requiring a reboot
Date: Sun, 27 Sep 2020 12:38:09 -0400 (EDT)
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0

URL:
  <https://savannah.gnu.org/bugs/?59195>

                 Summary: Running grub-emu as root under Linux borks the
machine requiring a reboot
                 Project: GNU GRUB
            Submitted by: dfilder
            Submitted on: Sun 27 Sep 2020 04:38:08 PM UTC
                Category: None
                Severity: Major
                Priority: 5 - Normal
              Item Group: None
                  Status: None
                 Privacy: Public
             Assigned to: None
         Originator Name: 
        Originator Email: 
             Open/Closed: Open
                 Release: 
                 Release: 2.02
         Discussion Lock: Any
         Reproducibility: Every Time
         Planned Release: None

    _______________________________________________________

Details:

Debian-BTS: #965026
<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=965026>
Architecture: x86_64-linux-gnu
Kernel: Debian 4.19.146-1 (2020-09-17)
Version: 2.02+dfsg1-20+deb10u2, but the latest git revision
(2df291226638261d50fadcab1f5edb6c12ab6cfd, 2020-07-31) shows exactly the same
behaviour (Configured with ./configure --enable-grub-emu-sdl=yes --with-SDL
--with-platform=emu and compiled against SDL 1.2.15+dfsg2-4).

== Description ==

A blind user reported that running grub-emu made his braille and speech
facilities stop and forced him to reboot.  I tried looking into this, and
every time I ran grub-emu as root (which I suspect he did, too) I had to
reboot my machine to make it usable again.  Running it under an unprivileged
user works fine, but only because the SDL backend is using the X server or (if
DISPLAY is unset) reusing the attached terminal (under X the menu is rendered
in the xterm, on console it is rendered onto the virtual console, i.e. copying
characters with GPM still works).

== Reproducer ==

As root:


grub-menu


== Diagnostics ==

For testing I added this menu stanza at the very beginning (with a 5 second
timeout):


menuentry "halt" {
    halt
}


When running unprivileged and not pressing any keys, grub-emu always exitted
gracefully and left the computer in a usable state regardless of how it was
run.  When run as root, even with this stanza in place and not pressing any
keys, the computer would always be rendered unusable until rebooted (with
Ctrl+Alt+Del), even though grub-emu exitted with 0 status code.  Neither of
the following recovery attempts worked:

* Alt-SysRq-K
* Alt-SysRq-R
* timed restart of the X server (hoping it would unbork the graphics setup)
* fbset with a known-to-work setting

The only diagnostically useful info I could come up with is this strace output
of ioctls taken with the "halt" stanza in place:
 

13049 execve("grub-core/grub-emu", ["grub-core/grub-emu"], 0x7ffebe520b78 /*
33 vars */) = 0
13049 ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
13049 ioctl(0, SNDCTL_TMR_START or TCSETS, {B38400 opost isig -icanon -echo
...}) = 0
13049 ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
13049 ioctl(1, TIOCGWINSZ, {ws_row=48, ws_col=170, ws_xpixel=0, ws_ypixel=0})
= 0
13049 ioctl(3, TUNSETIFF, 0x7fff38f678a0) = 0
13049 ioctl(6, FBIOGET_FSCREENINFO, 0x7fff38f673c0) = 0
13049 ioctl(6, FBIOGET_VSCREENINFO, 0x7fff38f67410) = 0
13049 ioctl(6, FBIOPUT_VSCREENINFO, 0x7fff38f67410) = 0
13049 ioctl(6, FBIOPUT_VSCREENINFO, 0x7fff38f67410) = -1 EINVAL (Invalid
argument)
13049 ioctl(7, VT_OPENQRY, 0x199e9f0)   = 0
13049 ioctl(8, TIOCNOTTY)               = 0
13049 ioctl(7, KDGKBMODE, 0x7fff38f67344) = 0
13049 ioctl(7, KDGKBENT, 0x7fff38f67344) = 0
13049 ioctl(7, VT_GETSTATE, 0x7fff38f672da) = 0
13049 ioctl(7, VT_ACTIVATE, 0x7)        = 0
13049 ioctl(7, VT_WAITACTIVE, 0x7)      = 0
13049 ioctl(7, TCGETS, {B38400 opost isig icanon echo ...}) = 0
13049 ioctl(7, KDGKBMODE, 0x199e9fc)    = 0
13049 ioctl(7, TCGETS, {B38400 opost isig icanon echo ...}) = 0
13049 ioctl(7, SNDCTL_TMR_CONTINUE or TCSETSF, {B38400 opost -isig -icanon
-echo ...}) = 0
13049 ioctl(7, TCGETS, {B38400 opost -isig -icanon -echo ...}) = 0
13049 ioctl(7, KDSKBMODE, 0x2)          = 0
13049 ioctl(7, KDSETMODE, 0x1)          = 0
13049 ioctl(7, VT_LOCKSWITCH, 0x1)      = 0
13049 ioctl(6, FBIOGET_VSCREENINFO, 0x7fff38f67350) = 0
13049 ioctl(6, FBIOPUT_VSCREENINFO, 0x7fff38f67350) = -1 EINVAL (Invalid
argument)
13049 ioctl(6, FBIOPUT_VSCREENINFO, 0x7fff38f67350) = 0
13049 ioctl(6, FBIOGET_FSCREENINFO, 0x7fff38f673f0) = 0
13049 ioctl(0, TCGETS, {B38400 opost isig -icanon -echo ...}) = 0
13049 ioctl(0, SNDCTL_TMR_START or TCSETS, {B38400 opost isig icanon echo
...}) = 0
13049 ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
13049 exit_group(0)                     = ?
13049 +++ exited with 0 +++


The only thing dubious I can spot here is the VT_LOCKSWITCH call which is
missing its corresponding VT_UNLOCKSWITCH call.  I don't know if this happens
in SDL or GRUB code.  Grepping for it in the GRUB codebase yielded nothing.

Let me know if I can add anything more.




    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?59195>

_______________________________________________
  Message sent via Savannah
  https://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]