Created attachment 1837098 [details] evolution &> logfile seemed to catch the relevant problems When trying to send an email, no matter from what account, with what content and also with a freshly created user, I get a message popup like: Could not create message. You may need to select different mail options. Detailed error: RangeError: Maximum call stack size exceeded. or Could not save to autosave file “.evolution-composer.autosave-T5CZB1”. Error saving to autosave because “RangeError: Maximum call stack size exceeded.”. in the editor window and the mail is not sent. Version-Release number of selected component (if applicable): 3.42.0-1.fc35 Steps to Reproduce: 1. start evolution 2. click on New 3. enter recipient in To field 4. click on Send Actual results: Error message popup appears, editor window stays open, mail is not sent. Expected results: Editor window is closed and mail is sent. Additional info: The problem occurs on wayland with NVIDIA GeForce GTX 1650 using the nouveau and nvidia driver 470.74. The problem does not occur on my notebook with Fedora 35, wayland and Intel graphics.
Thanks for a bug report. I also cannot reproduce this. It looks like a WebKitGTK error. What is the webkit2gtk3 package version, please? Michael, is there an easy way to get the backtrace from the JavaScript call, please?
(In reply to Milan Crha from comment #1) > Thanks for a bug report. I also cannot reproduce this. It looks like a > WebKitGTK error. What is the webkit2gtk3 package version, please? Thanks for the quick response! The webkit2gtk3 version is 2.34.0-1.fc35
Good, I've the same version, but I do not have an NVidia card, thus I might be in the same group as your second machine. When you close Evolution and run: $ gsettings set org.gnome.evolution.shell webkit-developer-mode true in a terminal, then when you run Evolution again it'll contain a new item in the Help menu, something with "GPU" in the name, which will show, in the preview panel, the information provided by WebKit about the graphics drivers it uses. It seems there are also used WEBKIT_DISABLE_COMPOSITING_MODE=1 and WEBKIT_FORCE_COMPOSITING_MODE=0 in the WebKit sources, thus you can also try to run Evolution from the terminal, with those variables exported. The only thing is that I'd not expect these things influencing the Javascript call stack limits, but I do not know WebKit internals at all.
Created attachment 1837134 [details] WebKit GPU Information I've copied the text after executing gsettings set org.gnome.evolution.shell webkit-developer-mode true from the WebKit GPU Information frame
> > It seems there are also used WEBKIT_DISABLE_COMPOSITING_MODE=1 and > WEBKIT_FORCE_COMPOSITING_MODE=0 in the WebKit sources, thus you can also try > to run Evolution from the terminal, with those variables exported. > > The only thing is that I'd not expect these things influencing the > Javascript call stack limits, but I do not know WebKit internals at all. Thanks, starting evolution with: LC_ALL=C WEBKIT_FORCE_COMPOSITING_MODE=0 WEBKIT_DISABLE_COMPOSITING_MODE=1 evolution indeed does not help. With webkit-developer-mode=true, the log now also contains repeated lines with: CONSOLE JS ERROR RangeError: Maximum call stack size exceeded.
An upgrade to webkit2gtk3-2.34.1-2.fc35.x86_64 from updates-testing also did not resolve the issue.
(In reply to Marc K. from comment #5) > CONSOLE JS ERROR RangeError: Maximum call stack size exceeded. I've never seen this before. You need to get access to the Console tab in the web inspector to see what is going on. I think if you have a way to open the web inspector, then it should show more detail. It sounds like Evolution's webkit-developer-mode feature probably enables WebKit's enable-developer-extras setting. Try pressing Ctrl+Shift+I in your mail with that setting enabled to see if you can open the inspector. Will be interesting to see what's shown on the Console tab.
(In reply to Marc K. from comment #0) > Additional info: > The problem occurs on wayland with NVIDIA GeForce GTX 1650 using the nouveau > and nvidia driver 470.74. > The problem does not occur on my notebook with Fedora 35, wayland and Intel > graphics. There's no way this is related to graphics. Have you set any special resource limits on the affected computer? Maybe 'ulimit -s'? What happens if you run with the environment variable JavaScriptCoreUseJIT=0?
> Try pressing Ctrl+Shift+I in your mail with that setting enabled to see if you can open the inspector. Right, that works in a mail window (when double-clicking a message). When used in the mail view it opens a new assigned task window. Ctlr+Shift+D is an alternative shortcut for the inspector.
(In reply to Michael Catanzaro from comment #7) > (In reply to Marc K. from comment #5) > > CONSOLE JS ERROR RangeError: Maximum call stack size exceeded. > > I've never seen this before. You need to get access to the Console tab in > the web inspector to see what is going on. I think if you have a way to open > the web inspector, then it should show more detail. > > It sounds like Evolution's webkit-developer-mode feature probably enables > WebKit's enable-developer-extras setting. Try pressing Ctrl+Shift+I in your > mail with that setting enabled to see if you can open the inspector. Will be > interesting to see what's shown on the Console tab. After pressing Ctrl+Shift+I a couple of times, the Web-Inspector window opens, but is and stays absolutely empty.
(In reply to Michael Catanzaro from comment #8) > (In reply to Marc K. from comment #0) > > Additional info: > > The problem occurs on wayland with NVIDIA GeForce GTX 1650 using the nouveau > > and nvidia driver 470.74. > > The problem does not occur on my notebook with Fedora 35, wayland and Intel > > graphics. > > There's no way this is related to graphics. My first idea was that this was related to some outdated gtk or gnome theme, but it also happens with a fresh user; and also with Xorg. > > Have you set any special resource limits on the affected computer? Maybe > 'ulimit -s'? No, I don't think so, ulimit -s says unlimited. > > What happens if you run with the environment variable JavaScriptCoreUseJIT=0? Nothing changes. I think I have tried most WebKit environment variables by now.
I've now fully upgraded to updates-testing. Now, evolution crashes immediately on wayland with: evolution: ../src/wayland-thread.c:87: wlExternalApiLock: Assertion `!"failed to lock pthread mutex"' failed. Haven't tried Xorg, yet.
(In reply to Marc K. from comment #11) > > Have you set any special resource limits on the affected computer? Maybe > > 'ulimit -s'? > > No, I don't think so, ulimit -s says unlimited. Er... are you sure? When I run 'ulimit -s' I get 8192, so that's what I would have expected....
(In reply to Michael Catanzaro from comment #13) > (In reply to Marc K. from comment #11) > > > Have you set any special resource limits on the affected computer? Maybe > > > 'ulimit -s'? > > > > No, I don't think so, ulimit -s says unlimited. > > Er... are you sure? When I run 'ulimit -s' I get 8192, so that's what I > would have expected.... Yes, I had to change this for some other reasons (a heavy RocksDB application, I think). But indeed, I haven't tried to reproduce the bug on a clean install, yet.
Well that's probably somehow related. Try changing it back to a fixed value?
(In reply to Michael Catanzaro from comment #15) > Well that's probably somehow related. Try changing it back to a fixed value? Damn, that's right! ulimit -s 8192 fixes the problem completely. No more warnings at all. Thanks! Maybe the issue should nevertheless be reported for webkit2gtk3. Setting maximum stack size ulimit probably shouldn't have such an effect.
I agree, I think this is a bug in JSC::VM::updateStackLimits.
(In reply to Michael Catanzaro from comment #17) > I agree, I think this is a bug in JSC::VM::updateStackLimits. I guess StackBounds::currentThreadStackBoundsInternal is the root cause.
Ah, you're probably right, because I see getrlimit() there! So I was searching for the wrong function, and in the wrong place (I was only searching under JSC, but this is under WTF).
(In reply to Michael Catanzaro from comment #19) > Ah, you're probably right, because I see getrlimit() there! > Yes, getrlimit(RLIMIT_STACK) returns -1 for ulimit -s unlimited, which is not caught there. #include <sys/resource.h> #include <stdio.h> void main() { struct rlimit limit; if (getrlimit(RLIMIT_STACK , &limit) == 0) { rlim_t size = limit.rlim_cur; printf("stack size limit: %lld\n", size); } } > So I was searching for the wrong function, and in the wrong place (I was > only searching under JSC, but this is under WTF). You gave me the idea in the first place that unlimited is probably an uncaught -1 somewhere.
OK, thanks. Let's continue upstream: https://bugs.webkit.org/show_bug.cgi?id=232328