Isopolito/gNordVPN-Local

Desktop still getting blocked after PR #67

Closed this issue · 13 comments

Hi!

I was looking forward to your development on the async calls to be able actually to use this extension. I was happy when I saw this last PR and pulled the master branch immediately. But it seems that the problem is still there for me. My whole desktop keeps getting completely blocked every time I connect / disconnect / change servers! :(

To Reproduce

  1. Enable the extension
  2. Change the connection status by connecting, disconnecting or changing servers. Either from the extension or directly from nordvpn CLI on the terminal.
  3. Click on the extension
  4. The entire desktop blocks for around 1 min.

Expected behavior
Extension waiting for async response should not block the entire desktop.

Desktop:

  • OS: Fedora Linux 38 (Workstation Edition) x86_64
  • GNOME Shell 44.5
  • gNordVPN-Local on commit d78aaee (branch master)
  • nordvpn CLI version 3.16.6 (repo: repo.nordvpn.com_yum_nordvpn_centos_x86_64)

I'll be happy to try anything you need in order to provide you with more information on the issue.

Thanks!

Hi @carlescn, I will download a fedora VM for gnome 44.5 and try to replicate it there. Thanks for the heads up, I'll update here once I get the changes merged into master.

Can you run "journalctl -f -e -o cat /usr/bin/gnome-shell" when you replicate the issue and send me the relevant log output please?

Also, @carlescn, will you confirm you are running the latest version? It will have a new preferencea ui. If you open up settings you should see icons in the tab names...

Hi @carlescn, I will download a fedora VM for gnome 44.5 and try to replicate it there. Thanks for the heads up, I'll update here once I get the changes merged into master.

Can you run "journalctl -f -e -o cat /usr/bin/gnome-shell" when you replicate the issue and send me the relevant log output please?

Hi @Isopolito! I just tried this again and I think I have more details (I updated the first message).

  • After changing status with the extension, "nordvpn status" reflects the change immediately and the desktop keeps working.
  • Once I click on the extension, then it locks for 1 to 2 minutes.
  • It seems like disabling the killswitch helps, I guess because nordvpn when it's on it sometimes messes with my connection, and then becomes slow to connect.

Here is the relevant log output of journalctl -f -e -o cat /usr/bin/gnome-shell:

Just after enabling the extension:

Window manager warning: Buggy client sent a _NET_ACTIVE_WINDOW message with a timestamp of 0 for 0x3800004
Window manager warning: Buggy client sent a _NET_ACTIVE_WINDOW message with a timestamp of 0 for 0x3800004

After disconnecting, then clicking on the extension (it locks):

Can't update stage views actor <unnamed>[<MetaWindowActorX11>:0x5603f9e3a510] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaSurfaceActorX11>:0x5603f603c1d0] is on because it needs an allocation.
Unhandled promise rejection. To suppress this warning, add an error handler to your promise chain with .catch() or a try-catch block around your await expression. Stack trace of the failed promise:
  _disconnect@/home/carles/.local/share/gnome-shell/extensions/gnordvpn-local@isopolito/extension.js:181:26
  activate@resource:///org/gnome/shell/ui/popupMenu.js:202:14
  vfunc_button_release_event@resource:///org/gnome/shell/ui/popupMenu.js:146:14

After connecting to a server again, then clicking on the extension (it locks again):

Unhandled promise rejection. To suppress this warning, add an error handler to your promise chain with .catch() or a try-catch block around your await expression. Stack trace of the failed promise:
  _connect@/home/carles/.local/share/gnome-shell/extensions/gnordvpn-local@isopolito/extension.js:174:23
  activate@resource:///org/gnome/shell/ui/popupMenu.js:202:14
  vfunc_button_release_event@resource:///org/gnome/shell/ui/popupMenu.js:146:14

Also, @carlescn, will you confirm you are running the latest version? It will have a new preferencea ui. If you open up settings you should see icons in the tab names...

Yes, I can see the icons. I'm running the latest version on the master branch. git log latest commit is:

commit d78aaeee1a4cc7983a3c2ad5da9ad8783a8dff5d (HEAD -> master, origin/master, origin/HEAD)
Merge: 493358c 8a86211
Author: Austin <Isopolito@users.noreply.github.com>
Date:   Sun Oct 1 12:51:05 2023 -0600

    Merge pull request #67 from Isopolito/getStatusStability
    
    Make long running vpn calls async to not block UI thread

Thank you @carlescn for all the details. This week I will start work on replicating and fixing this. I'll keep you posted

Hi @carlescn, I'm still trying to replicate all of those issues. I have a gnome shell 44 fedora vm running. I produced the try/catch errors. I fixed the ones I could find. I have not been able to replicate the long freezes. I'll keep working on that.

In the meantime do you want to try out the latest from master and see if that helps?

Also, can you copy/paste in what the output of this command is?

nordvpn settings

Hi @Isopolito! I pulled your changes but it still freezes. It seems that it happens every time it calls nordvpn cli. For example, it also occurs when I push the apply button on the settings window, even if nothing changed. So it isn't only related to the connection status change, as I thought before...

I tried uninstalling and reinstalling norvpn cli just in case, but nothing changed.

Mi nordvpn settings are:

Technology: NORDLYNX
Firewall: enabled
Firewall Mark: 0xe1f1
Routing: enabled
Analytics: disabled
Kill Switch: enabled
Threat Protection Lite: enabled
Notify: disabled
Auto-connect: enabled
IPv6: disabled
Meshnet: disabled
DNS: disabled
LAN Discovery: disabled
Allowlisted subnets:
  [I don't think you need this :)]

If I have a moment I'll try resetting to the default settings and trying again "from scratch". I'll report back.

Thank you!

Hi @carlescn, I've been meaning to switch to fedora as my daily driver for a while now. I used this as the motivator to do so, now I'm running fedora 38 with gnome-shell 44.5 on my machine, using X11 instead of wayland fwiw.

I'm still not able to reproduce the freezes running the latest from master. Can you do me a favor. Can you disable the extension completely and use nordvpn cli to change connections, etc and see if it still hangs?

Hi @Isopolito! I'm glad this brought some positive change at least :). Last year I switch to Fedora after many years of using Debian and I'm happy with the change.

About the nordvpn cli, yes, it's working fine. I'm sorry I took it for granted. I should have been more specific about that.

Actually, I only wanted to use the extension as a visual reference to confirm that the VPN is on. The rest of options (which are great, don't get me wrong) I guess are convenient, but I'm already used to interact with it through the command line.

I see you reference you are using X11. I'm using Wayland. Maybe there's something there? Or maybe there's something wrong with my system... I'll try it on my laptop next week, see if it works on there.

Hi @carlescn, I've been meaning to switch to fedora as my daily driver for a while now. I used this as the motivator to do so, now I'm running fedora 38 with gnome-shell 44.5 on my machine, using X11 instead of wayland fwiw.

By the way, I compiled this (not comprehensive) guides for setting up some things after installing Fedora on my system. It was intended as a reference for myself but maybe you find something useful:

https://gist.github.com/carlescn/44ad070d51612956f05e246410925926

Sorry for messing the thread! I couldn't find another way to message you :)

Thanks @carlescn I'll check that out!

The next thing I'm going to try is to recreate the problems using Wayland. Other than that I am running out of ideas of what can be different on your system

Hi @Isopolito!

I think I was able to narrow down the problem to a dconf setting. I opened a new issue with a more specific case and I'm closing this one.

I was having the same problem with my laptop so I tried compare both systems / configurations to try to come up with something that may bring some information. During this comparison I reset the whole configuration for the extension using dconf on my laptop, and it started to work well. So, from there, I checked one by one every setting that was different from the default on my desktop, and found that after resetting the option countries-selected-for-servers, it stopped behaving badly! 😮

I looked into your code, but I never used JS and I'm a little lost, so I couldn't figure out where the problem is. The gschema looks OK.

I'm sure now that I narrowed it down it will be easier for you to find the cause! Meanwhile, I think I can now use the extension safely! It's been working OK for at least 30 min and 3 or 4 disconnect / connect cycles now. 😀

Awesome thanks so much @carlescn! Great work tracking that down, that will make it a lot easier to fix.