After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 773302 - WebKitWebProcess crash due to X error
WebKitWebProcess crash due to X error
Status: RESOLVED NOTGNOME
Product: evolution
Classification: Applications
Component: Composer
3.22.x (obsolete)
Other Linux
: High critical
: ---
Assigned To: Tomas Popela
Evolution QA team
Depends on:
Blocks:
 
 
Reported: 2016-10-21 08:10 UTC by Jura
Modified: 2016-10-31 13:19 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
out.txt (1.68 KB, application/x-xz)
2016-10-21 15:41 UTC, Jura
Details
gdb2.txt (856 bytes, application/x-xz)
2016-10-21 16:13 UTC, Jura
Details
console.out (6.09 KB, text/plain)
2016-10-21 16:15 UTC, Jura
Details

Description Jura 2016-10-21 08:10:11 UTC
After uptade from 3.22.0 to 3.22.1 I can't read mail :( Mail body do not displayed

Screenshot: http://i.imgur.com/oCPqc9i.png

log:

(WebKitWebProcess:30258): Gdk-ERROR **: The program 'WebKitWebProcess' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadValue (integer parameter out of range for operation)'.
  (Details: serial 171 error_code 2 request_code 153 (GLX) minor_code 24)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the GDK_SYNCHRONIZE environment
   variable to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

(evolution:30236): camel-WARNING **: Didn't get valid response from ntlm_auth helper

(WebKitWebProcess:30319): Gdk-ERROR **: The program 'WebKitWebProcess' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadValue (integer parameter out of range for operation)'.
  (Details: serial 171 error_code 2 request_code 153 (GLX) minor_code 24)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the GDK_SYNCHRONIZE environment
   variable to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

(WebKitWebProcess:30360): Gdk-ERROR **: The program 'WebKitWebProcess' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadValue (integer parameter out of range for operation)'.
  (Details: serial 171 error_code 2 request_code 153 (GLX) minor_code 24)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the GDK_SYNCHRONIZE environment
   variable to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)
Comment 1 Milan Crha 2016-10-21 11:46:11 UTC
Thanks for a bug report. I would simply suggest to follow the instructions from the error message, but I see that this crashed in the WebKitWebProcess, something what is run on its own. But maybe trying with it anyway would help a bit, thus, please run the evolution as:

   $ GDK_SYNCHRONIZE=1 evolution

and see what it'll do. Having a backtrace, with debug info packages installed for the evolution and evolution-data-server, will help to narrow where the issue happened and possibly also why. If you have and crash catcher in your system, which would record the backtrace, then it'll be useful.

There are other options too, but they are very techy.
Comment 2 Michael Catanzaro 2016-10-21 11:58:20 UTC
(In reply to Milan Crha from comment #1)
> Thanks for a bug report. I would simply suggest to follow the instructions
> from the error message, but I see that this crashed in the WebKitWebProcess,
> something what is run on its own. But maybe trying with it anyway would help
> a bit, thus, please run the evolution as:
> 
>    $ GDK_SYNCHRONIZE=1 evolution
> 
> and see what it'll do.

Yes, that should work. We need a web process backtrace taken with GDK_SYNCHRZONIZE=1. In general, you should never report crashes on Bugzilla without a backtrace since there's nothing we can do without one. The backtrace will most likely indicate this is a bug in WebKit; we can give you instructions for reporting a WebKit bug once we have a high-quality backtrace here.

We also need to know the exact version of WebKitGTK+. A similar issue was fixed in 2.14.1, the latest version, so if you're still on 2.14.0 then it's probably already fixed. If you've already upgraded to 2.14.1, then we'd like a WebKit bug report.

Canned reply about getting a backtrace:

Thanks for taking the time to report this.
Without a stack trace from the crash it's very hard to determine what caused it.
Can you get us a stack trace? Please see https://wiki.gnome.org/Community/GettingInTouch/Bugzilla/GettingTraces for more information on how to do so. When pasting a stack trace in this bug report, please reset the status of this bug report from NEEDINFO to its previous status. Thanks in advance!
Comment 3 Jura 2016-10-21 12:00:14 UTC
# export GDK_SYNCHRONIZE=1
# GDK_SYNCHRONIZE=1 evolution
Same error:
(WebKitWebProcess:1654): Gdk-ERROR **: The program 'WebKitWebProcess' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadValue (integer parameter out of range for operation)'.
  (Details: serial 212 error_code 2 request_code 153 (GLX) minor_code 24)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the GDK_SYNCHRONIZE environment
   variable to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

(evolution:1632): camel-WARNING **: Didn't get valid response from ntlm_auth helper

(WebKitWebProcess:1707): Gdk-ERROR **: The program 'WebKitWebProcess' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadValue (integer parameter out of range for operation)'.
  (Details: serial 228 error_code 2 request_code 153 (GLX) minor_code 24)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the GDK_SYNCHRONIZE environment
   variable to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

(WebKitWebProcess:1730): Gdk-ERROR **: The program 'WebKitWebProcess' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadValue (integer parameter out of range for operation)'.
  (Details: serial 212 error_code 2 request_code 153 (GLX) minor_code 24)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the GDK_SYNCHRONIZE environment
   variable to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

(WebKitWebProcess:1745): Gdk-ERROR **: The program 'WebKitWebProcess' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadValue (integer parameter out of range for operation)'.
  (Details: serial 212 error_code 2 request_code 153 (GLX) minor_code 24)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the GDK_SYNCHRONIZE environment
   variable to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)
Comment 4 Michael Catanzaro 2016-10-21 12:23:34 UTC
(In reply to Michael Catanzaro from comment #2)
> Thanks for taking the time to report this.
> Without a stack trace from the crash it's very hard to determine what caused
> it.
> Can you get us a stack trace? Please see
> https://wiki.gnome.org/Community/GettingInTouch/Bugzilla/GettingTraces for
> more information on how to do so. When pasting a stack trace in this bug
> report, please reset the status of this bug report from NEEDINFO to its
> previous status. Thanks in advance!
Comment 5 Jura 2016-10-21 13:04:32 UTC
I just update webkit-grk from 2.14.0 to 2.14.1
Recompile evolution-data-server-3.22.1 and evolution 3.22.1

Problem still exists :(

I make stack trace later
Comment 6 Jura 2016-10-21 15:40:48 UTC
# export CFLAGS="-march=native -O2 -ggdb"
# export CXXFLAGS="${CFLAGS}"
compile evolution manually and install
gdb /usr/local/bin/evolutione
>> Type "apropos word" to search for commands related to "word"...
>> Reading symbols from /usr/local/bin/evolution...done.

(gdb) set logging on
Copying output to gdb.txt.

(gdb) run
Starting program: /usr/local/bin/evolution
.......

ctrl+c
(gdb) thread apply all bt
retun, return, return... quit
Comment 7 Jura 2016-10-21 15:41:23 UTC
Created attachment 338197 [details]
out.txt
Comment 8 Michael Catanzaro 2016-10-21 15:58:52 UTC
Please take the backtrace with 'bt full' instead of just 'bt'. Also, and very importantly, don't Ctrl+C since we don't need a backtrace to your Ctrl+C, we need a backtrace to the X error. Just run Evolution normally and try to reproduce the error.
Comment 9 Jura 2016-10-21 16:13:10 UTC
(gdb) set logging on
>> Copying output to gdb.txt.
(gdb) bt full
>> No stack.
(gdb) run
>> Starting program: /usr/local/bin/evolution

Evolution opened, http://i.imgur.com/mooAGYm.png

ctrl+c
(gdb) bt full


Right? Sorry for bad english
Comment 10 Jura 2016-10-21 16:13:38 UTC
Created attachment 338198 [details]
gdb2.txt
Comment 11 Jura 2016-10-21 16:15:13 UTC
Created attachment 338199 [details]
console.out
Comment 12 Michael Catanzaro 2016-10-21 16:27:30 UTC
No Ctrl+C :)

I see the problem, you're running Evolution in gdb, but the Evolution process is not crashing. You need to get a backtrace from the WebKitWebProcess that is crashing. It's hard to get a backtrace for this manually. You should either use a distro bug report tool, like apport (Ubuntu) or ABRT (Fedora), or you should use coredumpctl: https://wiki.archlinux.org/index.php/Core_dump#Using_systemd
Comment 13 Jura 2016-10-24 10:50:13 UTC
I find problem:
my nvidia-drivers have been updated, but I don't reload kernel module.
I stop X, rmmod/modprobe nvidia kernel module, start X and problem disapper.

sorry for bad english
Comment 14 Michael Catanzaro 2016-10-24 13:31:21 UTC
OK then, no problem.
Comment 15 Milan Crha 2016-10-24 20:33:16 UTC
I have a reproducer, reliable (here), where the evolution crashes in an X error with the below backtrace. My steps are unusual for regular users, but maybe it'll shed some light on the issue.

I run evolution under gdb and press Ctrl+C do set my breakpoints and so on after it is loaded. As soon as do that I get the crash of the evolution as shown below. The backtrace mentions "WebKit::WebPageProxy::processDidCrash()", thus it looked like the WebKitWebPorcess crashed for some reason, thus I re-tried and I first attached another gdb to the running WebKitWebProcess and then repeated the Ctrl+C thing. It surprised me that the gdb of the WebKitWebProcess stopped too in the gdb prompt. I issues "c" command and everything went as it should. From that it seems to me that you pass really everything to the WebKitWebProcess, including the Ctrl+C, which just stops (crashes) the process when there is nothing on top of it, like gdb, which handles the interrupt request.

The backtrace on the evolution side with webkitgtk4-2.14.1-2.fc25.x86_64 (I'm sorry, no debug info for webkitgtk+, too large, but the steps should be better than the backtrace, I hope):

(gdb) bt
  • #0 gdk_x_error
  • #1 _XError
  • #2 handle_error
  • #3 handle_response
  • #4 _XReply
  • #5 XSync
  • #6 _XSyncFunction
  • #7 WebKit::AcceleratedBackingStoreX11::update(WebKit::LayerTreeContext const&)
  • #8 webkitWebViewBasePageClosed(_WebKitWebViewBase*) [clone .localalias.174]
  • #9 WebKit::AcceleratedDrawingAreaProxy::exitAcceleratedCompositingMode()
  • #10 WebKit::AcceleratedDrawingAreaProxy::~AcceleratedDrawingAreaProxy()
  • #11 WebKit::DrawingAreaProxyImpl::~DrawingAreaProxyImpl()
  • #12 WebKit::WebPageProxy::resetState(WebKit::WebPageProxy::ResetStateReason)
  • #13 WebKit::WebPageProxy::resetStateAfterProcessExited()
  • #14 WebKit::WebPageProxy::processDidCrash()
  • #15 WebKit::WebProcessProxy::didClose(IPC::Connection&)
  • #16 WTF::RunLoop::performWork()
  • #17 WTF::RunLoop::RunLoop()::{lambda(void*)#1}::_FUN(void*)
  • #18 g_main_context_dispatch
  • #19 g_main_context_iterate.isra
  • #20 g_main_loop_run
  • #21 gtk_main
  • #22 main
    at main.c line 659

Comment 16 Michael Catanzaro 2016-10-25 19:18:48 UTC
Hm, I'm not so concerned about the processDidCrash signal... it's going to be triggered whenever the pipe to the web process is broken; I guess running under gdb could trigger that if one side is stalled for too long.

But the X error should never happen. It's odd that the reproducer requires gdb, but I think that's OK. Please go ahead and file a WebKit bug.
Comment 17 Milan Crha 2016-10-31 13:19:11 UTC
Okay, filled https://bugs.webkit.org/show_bug.cgi?id=164221