Evolution seems to be sending the wrong uri for application authorisation

Evolution 3.49.2-2 on debian.

Hi there. I seem to be having an issue with evolution that no matter how I try to search the web I’m getting no answers back.

My issue is that I am trying to add a gmail account and its failing. I have multiple gmail accounts already set up with no issues and all their secrets are nicely saved in the keyring (I can see them in seahorse).

I get the OAuth2 secret not found dialogue box, but instead (my memory is a little hazy here) of being able to click “next” on the embedded webpage dialogue and having it do stuff as I recall I now how to click the little droopy arrow above labeled “URL” which opens an authorization page in the web browser.

If I have the default web browser set to firefox then after clicking on “allow” it pauses for a while and then just goes to the “google.com” website and evolution fails to work.

If I change the default browser to chromium then after clicking on “allow” I get a dialogue box that says “failed to open URI” (that shows as application “exo open” when tabbing). The URI is long, and there is no way to select it and I’m unsure as to how much of that information displayed could be used to gain access… so this is the first part of the URI: “com.googleusercontent.apps.{big number}-{bignumber}oauth2redirect?{lotsofstuff}”

After a few seconds the browser again reverts to the google.com home page.

I’ve gone to the trouble of installing a different email client and then adding the account to that and it works as expected… A sign in followed by a “dialogue” style webpage asking for permissions that when clicked on finalizes the account creation; closes; and the email client works all hunkydory.

I’ve even created a totally new linux user, logged in to it, and then tried to setup the email in evolution and it also failed.

The only thing I have not yet tried is to set up an absolutely pristine OS install/user/evolution account (but I might try that in a VM while I await a response to this post).

**** edited to add ****
Further information. Have just booted a live debian 12 cd that was downloaded today (version 12.1.0) and booted it in a VM. This also has the same issue. Chromium requests xdg-open and when accepted produces the same error.

The only difference was that it asked (only the first time) for a new password to setup the default keyring.

Oddly enough it seems that trying send/receive again this time allows the sign in and password and authorisation from within the evolution window. Where as with my real debian evolution just hangs when I click on “next” in the evolution “web” window.

I’m wondering if the keyring on my live system has become corrupt. Something else I noted was on my real system the keyring is called “login” but its “default keyring” on the live dvd VM. I can unlock and lock it on my real system and all the other keys seem to be working (because the other gmail accounts are listed and working fine).

**** edited to add *****

Using a new linux account evolution is still hanging after trying to add the gmail account to evolution (with no existing keyring). After going through all the add email account the popup “web” form shows and after I enter the gmail account and press “next” at that point the url vanishes and it just hangs. I am currently using trixie (debian 13) so there are other differences between my real system (which doesn’t work) and the live dvd (which does work).

I guess, if no one replies with ideas, the next step is to create a virtual “real” trixie system and see if the problem persists. Which if it doesn’t might suggest that at after a debian 12 to 13 update something got glitched at the OS level and if the problem does persist then its a new-ish bug or may suggest its because I copied my homefolder when I got a new computer and there is something it really doesn’t like in that folder.

Any help much appreciated.

I get the OAuth2 secret not found dialogue box, but instead (my
memory is a little hazy here) of being able to click “next” on the
embedded webpage dialogue and having it do stuff as I recall I now
how to click the little droopy arrow above labeled “URL” which opens
an authorization page in the web browser.

Hi,

do you mean the embedded web view is not present in the dialog at all?
If it’s so, then it means your distro does not build the evolution-
data-server with WebKitGTK (it requires these two options:
-DENABLE_GTK=ON -DENABLE_OAUTH2_WEBKITGTK=ON). You might ask them to
reconsider it in that case. Otherwise, your version is new enough, thus
you might hopefully see any error message instead of a plain white box
in place the web page should be shown.

If I have the default web browser set to firefox then after clicking
on “allow” it pauses for a while and then just goes to the
google.com” website and evolution fails to work.

That’s all Google. The “little droopy arrow”, as you call it, allows to
open the wizard in an external browser, from which you can copy the
authentication code back to the Evolution’s window once you walk
through the OAuth2 wizard, but Google disabled this feature - they said
it’s insecure - thus the desktop users have bad luck when the embedded
web view does not work for any reason.

Bye,
Milan

Hi Milan,

do you mean the embedded web view is not present in the dialog at all?
If it’s so, then it means your distro does not build the evolution-

The webview within evolution is presented with no issues except after entering the email account and pressing “next” it just hangs. Tabbing to something else and returning to evolution causes the webview to blank out and also the url is blanked. Interestingly the url is blanked the moment the webview hangs.

If I blank the email the evolution webview says it must be entered, but entering the email or just some random garbage@gmail.com email causes the webview to hang.

That’s all Google. The “little droopy arrow”, as you call it, allows to
open the wizard in an external browser … google has disabled this.

Thats good to know. So the issue with trying to use the external web browser is that its not allowed. So I can totally ignore that.

A further update.

Setting up a complete new debian trixie vm and then adding the email account to evolution allows it to progress a bit further.

The embedded webview allows the email address and pressing “next” requests the password. Entering that then goes to the next page which is the authorization requests (wants to access) and pressing ok then shows “url: non-local://” and the webview shows “Requesting access token, please wait…” and it just hangs there doing nothing.

I guess that is progress of a kind. There seems to be a bug in the latest version of evolution on a brand new trixie but also that there is some conflict somewhere on my real system.

Hi,
it looks like a bug on the WebKitGTK side. Could you try to run
Evolution from a terminal like this, please:

export WEBKIT_FORCE_SANDBOX=0
export WEBKIT_DISABLE_SANDBOX_THIS_IS_DANGEROUS=1
evolution

It will disable sandboxing on the WebKitGTK side, which sometimes
helps, but not always. There is also some environment variable to
disable hardware acceleration, but I do not have its name handy, I’m
sorry. As you use the development version of the Evolution, I guess you
use also the development version of the WebKitGTK.

I tried to reproduce this with webkit2gtk4.1-2.41.6-4.fc39.x86_64 , but
no luck, I can confirm the email address (by pressing Next button in
the Wizard), after which I’m asked for the password, which is then
followed by a consent prompt. No hang for any of these steps of the
Google’s OAuth2 wizard.
Bye,
Milan

Hi,
this is expected, the OAuth2 wizard finished properly and then it’s
time to get the authorization token, which is out of the Google’s
OAuth2 wizard, hence that “non-local://” URL. This access token request
is meant to be lightning fast, thus there’s some trouble to access the
Google server. By any chance, did you enable any proxy settings either
in the system or in Edit->Preferences->Network Settings in Evolution?
I’ve been playing with that part recently and left it enabled
accidentally, then I did not know why Evolution cannot connect my
account.

I also had similar problems when I had enabled IPv6, it was due to some
routing issues or something, I do not recall precisely, I’m sorry. What
helped was to disable IPv6 completely.

You can run Evolution from a terminal as:

OAUTH2_DEBUG=1 evolution

but I cannot tell whether it’ll help in this specific situation
(unresponsive server). Definitely do not share the log anywhere, it
contains tokens, which grant access to the server with your name. You
can look what it is trying to do at least.
Bye,
Milan

I tried the sandbox settings you suggested and got:

evolution
src/nv_gbm.c:100: GBM-DRV error (nv_gbm_bo_create): DRM_IOCTL_NVIDIA_GEM_ALLOC_NVKMS_MEMORY failed (ret=-1)

I’ll have to get back to you on the clean VM version as its having other problems beyond not getting the token (not saving keys to the keyring) and at this point my head is mush after setting up and tearing down VM’s and trying the same things multiple times!

I should also note, seeing as how the error seems to be about the nvidia driver somehow, that I’m using xfce on debian on a laptop configured to use nvidia prime with nvidia as the prime and amd as the modesetting with the laptop (amd) display off and the nvidia hdmi connected directly to the screen I’m currently typing on.

Thanks for your help so far :slight_smile:

Please report this error on WebKit Bugzilla, WebKitGTK component. Please load webkit://gpu and copy the debug information from that page into your bug report. That contains most of the information needed to investigate. More things to do:

  • Run with WEBKIT_DISABLE_COMPOSITING_MODE=1 and verify the bug goes away (it should). Mention whether this environment variable “fixes” the issue in your bug report.
  • Run ls /dev/dri and copy the output into your bug report.
  • Of course, copy the error message into your bug report

Ideally it would be possible to get to webkit://gpu using Evolution itself to guarantee the output is correct, but that might be difficult as Evolution doesn’t expose a nice way to change the page’s URL, so you might need to use MiniBrowser or Epiphany to do it. Just make sure you’re using the exact same version of WebKitGTK that Evolution uses. That is, if you’re using the Debian package, use Debian’s Epiphany or MiniBrowser. If you’re using Flatpak, use the MiniBrowser from the Flatpak environment. If you use a different build of WebKitGTK than is used by Evolution, the output will be misleading rather than helpful.

Hi,
that can be done when running from a terminal:

gsettings set org.gnome.evolution.shell webkit-developer-mode true

or if it’s Flatpak, then in the sandbox terminal, aka after:

flatpak run --command=sh org.gnome.Evolution

Then start Evolution, say in the Mail view, make sure the preview panel
is turned on, then open Help->Show WebKit GPU Information menu option.
It’ll fill the visible preview panel with it.

Bye,
Milan
1 Like

Hi Michael,

I have filed a bug report: 260343 – segfault in evolution during gmail add new account oauth2 request

The webkit info was extracted from evolution using the method Milan gave.

Sorry it took so long as I first had to downgrade my laptop to make sure it wasn’t because I was running it slightly out of spec (32G instead of 16G max according to HP).

Hi Milan, thanks for that. I was just going to ask how I would get the webkit information but luckily you beat me to the “I have no idea how to do that” post.

I’m going to leave off testing under the VM for now as apart from not being able to add the new email account its working for all the existing ones so will wait to see if the bug report offers any fixes.

Thank you for your help. Much appreciated.

Hm, I didn’t realize it was crashing because I didn’t read this discussion fully. I’ve asked for a bit more info in the bug report.

Notably, I notice you didn’t mention the graphics problem in your bug report:

evolution
src/nv_gbm.c:100: GBM-DRV error (nv_gbm_bo_create): DRM_IOCTL_NVIDIA_GEM_ALLOC_NVKMS_MEMORY failed (ret=-1)

So that won’t be investigated.

No problems. Have attached the crashdump and bt full trace to the report.

Sorry if the issue was something else and not webkitgtk so not your domain. As a user not a developer I didn’t even know you could get crashdumps or stack traces and how to enable them. It just seemed the issue was with the embedded web page. So if nothing else I’ve learned something new.

I guess the issue needs to be reported to who ever does the libgbm.so.1 stuff… which I’m guessing my best bet is to file a bug report with debian itself and let them pass it up/down to whoever the issue belongs with.

No, WebKit Bugzilla is the right place for the issue report. A bug in GBM is unlikely. WebKit is more likely misusing it somehow.

1 Like

Good to know.

I think I’ve managed to get the backtrace to work now so have added that to the bug report for completeness.

This is all quite a learning experience.

I “play” with pico development in c but am so new c and gdb that I have to google things as simple as “how to pass a pointer to a function” and “what is a pointer to a struct” when its anything more complex than cutting, pasting, and modifying simple example code. And the tools such as CMake are another level of “what on earth, why isn’t this so much more complex than BBC micro basic” :wink:

This topic was automatically closed 45 days after the last reply. New replies are no longer allowed.