DisposableVM Crashes After Opening Terminal / File Manager

I want to create a Fedora based disposable AppVM. Creation is not the problem. However, after a few seconds the disp AppVM crashes.
Creating disp AppVM’s based on Debian or Whonix isn’t a problem. Only Fedora makes problems.
Please help.

When i first tested Qubes OS R4.0.3 i had the same problem. Somehow i managed to create a Fedora 32 DVM with gnome-terminal in XFCE-menu instead of xterm. Each time i fired up gnome-terminal it would close immediately after a quick popup and halt the DVM. But starting the DVM with Firefox or Files worked fine (nautilus let’s you open a gnome-terminal but it was still buggy though). I saw this problem somewhere else described too, i think in qubes-users mailling list IIRC.

1 Like

When I start files on my fedora-32-dvm, there is no dispXXXX.
When I start Firefox on my fedora-32-dvm, it starts as a dispXXXX.
Same disposable template. Something is broke with the fedora template. The same bug was on fedora-31.

I have experienced the same thing as @Johnboy is describing and this bug has existed for some years now (I think). I remember Marek saying it had something to do with they way qubes detects application being closed (the terminal probably forks or something).
But I’m not sure it is the same one as @wilsonb’s.

What do you mean with “there is no dispXXXX”? Doesn’t it show a notification “dispXXXX” is starting; “dispXXXX has halted”.

just so its clear, when you run apps for a [new] dispvm, dom0 will kill the vm when the app stops. the vm isnt crashing.

its not the same for non-dispvms. you control when the vm dies

you can hack your .desktop shortcut for the dvm to make gnome-terminal be blocking mode and then the vm wont die fast

pretend your dvm is called fedora-31-dvm and there is the fedora-31-dvm: Run Terminal menu option

  1. in dom0 go to ~/.local/applications

  2. there will be the file: fedora-31-dvm-qubes-run-terminal.desktop

  3. you will see inside this file:

    Exec=qvm-run -q -a --service --dispvm=fedora-31-dvm -- qubes.StartApp+qubes-run-terminal
    
  4. replace with:

    Exec=qvm-run -q -a --dispvm=fedora-31-dvm 'gnome-terminal --wait'
    

now clicking on the shortcut will keep gnome terminal open. when that term is killed the vm will kill even if you started other apps from the term

Found the issue on github. @wilsonb

tl;dr there is a reason why UX-term/Xterm is the default terminal for dispVMs. Use that one instead.

A user is having the same issue

Only Qubes 4.1 (the upcoming version) will have this fixed. But that release is still far into the future. So for now, the solution is the following:

Opening a Terminal in DisposableVM (permanent solution)

A user suggested a solution that solves the issue permanently (i.e. one can directly start gnome-terminal – the terminal application).

But that may be too advanced for some. See bellow for an easier workaround:

Opening a Terminal in DisposableVM (workaround)

Open the xterm application (instead of the gnome-terminal). And you can use that. However, it is a bit more limited as a terminal. So you can open the gnome-terminal from there by typing gnome-terminal Enter from there.

Opening File Manager in DisposableVM

open xterm application and type nautilus Enter.

2 Likes

@deeplow Thanks for your guidance, to point me to this thread! With xterm everything works just fine. If i may ask: in which VM should i find the /usr/share/applications/org.gnome.Terminal.desktop file?

1 Like

On the AppVM:

I just tried to edit /usr/share/applications/org.gnome.Terminal.desktop file. Unfortunately i still can’t make it to work.

Just to be clear:
I’ve created a debian disposable VM followed the fedora disp VM >> i’ve created a VM (think it’s called an AppVM) from the Debian 10 Template, and under the advanced settings of that VM ticked the option: Disposable Template VM. Let’s call this VM debian-10-dvm. So now i have a Disposable: debian-10-VM. If i want to not halt this disp VM at the moment when the gnome terminal is starting i have to edit the org.gnome.Terminal.desktop file in the debian-10-dvm (AppVM). So i run this command in the Dom0 terminal: qvm-run debain-10-dvm gnome-terminal. When the terminal is opened i can edit the file: sudo nano /usr/share/applications/org.gnome.Terminal.desktop. Searching for the line starting with Exec. I think i’ve found it under the line starting with TryExec. The original Exec line is this:
Exec=gnome-terminal, i have to change it to Exec=sh -c "gnome-terminal && systemctl --user start --wait gnome-terminal-server". Saving the file with ctrl+o enter, ctrl+x to exit. Am i correct till this point? Because if i power off the AppVM (debian-10-dvm) and starting a disposable debian vm the gnome terminal is just halting again after starting. I checked again the desktop file and the Exec line is gnome-terminal again, like if i couldn’t save the file. Or i’m completely on the wrong road?

This aspect of Qubes is a bit confusing, but once you tick the box “DisposableVM Template” when you start any application via the menu it will start instead a dispVM based on it (you can confirm this by seeing the started VM is named dispXXXX).

In order to edit that file permanently you need to uncheck Disposable VM Template, then start the terminal, edit the .desktop file. Then shut it down and re-enable the DisposableVM template.

I don’t think this is the problem, because onequbesuser started the qube
correctly from the dom0 command line.
More likely issue is that
/usr/share/applications/org.gnome.Terminal.desktop is a file in the
root fs, and so changes are lost on shutting down debian-10-dvm.
To edit that file you must do it in the template, then shut down the
template, and you will see the change reflected in debian-10-dvm and all
disposableVMs spawned from it.

@deeplow & @unman

Thanks for your answers! unman’s answer was the right one. I think i had some trouble with the terminology, and at first i didn’t understand what a Template VM is. I thought it is the disposable VM. Now if i open a terminal in the disp VM it doesn’t halt right away. Unfortunately if i open a terminal in the file manager (Files) and closing the terminal, the whole disp VM gonna shutting down. The EXEC method should work for this type of usage too, sholuldn’t it?

@deeplow : i have to admit, as a newbie a lot of stuff is confusing with qubes OS right now, i hope some day i can use it without too much questions.

1 Like

It can be confusing - at a minimum read

I think i understand the concept of the Template VM, still I’m not sure why, but if i saw the world Template VM somehow my brain translated it to Temporary VM :joy:. My bad…

Don’t worry about being a “newbie”. We all passed through that. Just focus on the learning and keep your questions coming (after you’ve read the docs :wink: )

1 Like

Hello!

I just wanted to make an offline disposable qube based on debian-10-minimal. Unfortunately the gnome-terminal is still crashing, even if i edit the /usr/share/applications/org.gnome.Terminal.desktop file. If qube is based on a full template ,like debian-10 and editing the .desktop file, it is working as it should be. I’m not sure if anything is missing from the minimal debian template. This is what and how i installed into the template:
qvm-clone debian-10-minimal debian-10-min-offline-dvm

qvm-run --pass-io -u root debian-10-min-offline-dvm "apt install --no-install-recommends gnome-terminal qubes-core-agent-nautilus nautilus zenity gnome-keyring policykit-1 libblockdev-crypto2 pulseaudio-qubes firefox-esr qubes-usb-proxy gedit gnome-calculator -y && poweroff"

I made an AppVM based on the template, and made it to be a disposable VM, and set networking to none.

After the installation i started the gnome-terminal of the Template VM:
qvm-run debian-10-min-offline-dvm gnome-terminal

And edited the /usr/share/applications/org.gnome.Terminal.desktop file:
exec=sh -c "gnome-terminal && systemctl --user start --wait gnome-terminal-server"

And if i want to start the gnome-terminal as a disposable app, it is crashing as when the exec line is not edited.

If anyone would be any idea i would appriciate it!

Thanks any help!

This is fixed in 4.1 but not back ported to 4.0.
Just call “gnome-terminal --wait”

2 Likes

Awesome! Can’t wait to get 4.1!