Bug 160240 - [GTK] WebProcess from WebKitGtk+ 2.13.4 SIGTRAPs in _ZN7WebCore12GLContextGLX22defaultFrameBufferSizeEv () at Source/WebCore/platform/graphics/glx/GLContextGLX.cpp
Summary: [GTK] WebProcess from WebKitGtk+ 2.13.4 SIGTRAPs in _ZN7WebCore12GLContextGLX...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKitGTK (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on: 160389
Blocks:
  Show dependency treegraph
 
Reported: 2016-07-27 05:43 PDT by Andres Gomez Garcia
Modified: 2016-08-01 23:47 PDT (History)
2 users (show)

See Also:


Attachments
BT from gdb (67.52 KB, text/plain)
2016-07-27 05:43 PDT, Andres Gomez Garcia
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Andres Gomez Garcia 2016-07-27 05:43:27 PDT
Created attachment 284687 [details]
BT from gdb

I'm using WebKitGtk+ with my own JHBuild setting:
https://github.com/tanty/jhbuild-epiphany/tree/master

Epiphany 3.20.3 and WebKit 2.13.4

I'm running Epiphany with the dconf key:

"process-model" = "shared-secondary-process"

The compilation was done with CMake args:

'-DPORT=GTK -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS_RELEASE="-O0 -g1 -DNDEBUG -DG_DISABLE_CAST_CHECKS" -DCMAKE_CXX_FLAGS_RELEASE="-O0 -g1 -DNDEBUG -DG_DISABLE_CAST_CHECKS"'

After visiting several pages, eventually, WebKitWebProcess hits a SIGTRAP.

This bug is not reproducible in a predictable way.
Comment 1 Andres Gomez Garcia 2016-07-27 05:47:05 PDT
This was the message from epiphany's process:

ERROR: Connection::waitForSyncReply: Timed-out while waiting for reply, id = 6
/home/tanty/no-backup/personal/webkit/epiphany/jhbuild-checkout/webkitgtk-2.13.4/Source/WebKit2/Platform/IPC/Connection.cpp(590) : std::unique_ptr<IPC::MessageDecoder> IPC::Connection::waitForSyncReply(uint64_t, std::chrono::milliseconds, unsigned int)

(WebKitWebProcess:26585): Gdk-ERROR **: The program 'WebKitWebProcess' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadDrawable (invalid Pixmap or Window parameter)'.
  (Details: serial 43122 error_code 9 request_code 14 (core protocol) minor_code 0)
  (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 2 Carlos Garcia Campos 2016-07-27 06:05:32 PDT
So, DestroyNativeSurfaceForCompositing sync message is timing out. That explains why the UI process ends up destroying the native surface before the web process clears the context. The thing is why it timed out, it could be that it really took more than 1 second, or maybe there's a deadlock with the sync tasks in the threaded compositor.
Comment 3 Andres Gomez Garcia 2016-07-27 06:10:45 PDT
To end the process, I just deattach gdb from the WKWebProcess and, in ephy's UI, chose to "Quit". Ephy is still attached to a gdb session. This is ephy's output:

[New Thread 0x7fff557fa700 (LWP 6847)]
[Thread 0x7fff557fa700 (LWP 6847) exited]
[New Thread 0x7fff557fa700 (LWP 7536)]
[Thread 0x7fff557fa700 (LWP 7536) exited]
[New Thread 0x7fff557fa700 (LWP 9998)]
[Thread 0x7fff557fa700 (LWP 9998) exited]
ERROR: Connection::waitForSyncReply: Timed-out while waiting for reply, id = 7
/home/tanty/no-backup/personal/webkit/epiphany/jhbuild-checkout/webkitgtk-2.13.4/Source/WebKit2/Platform/IPC/Connection.cpp(590) : std::unique_ptr<IPC::MessageDecoder> IPC::Connection::waitForSyncReply(uint64_t,
 std::chrono::milliseconds, unsigned int)
ERROR: Connection::waitForSyncReply: Timed-out while waiting for reply, id = 8
/home/tanty/no-backup/personal/webkit/epiphany/jhbuild-checkout/webkitgtk-2.13.4/Source/WebKit2/Platform/IPC/Connection.cpp(590) : std::unique_ptr<IPC::MessageDecoder> IPC::Connection::waitForSyncReply(uint64_t,
 std::chrono::milliseconds, unsigned int)
ERROR: Connection::waitForSyncReply: Timed-out while waiting for reply, id = 9
/home/tanty/no-backup/personal/webkit/epiphany/jhbuild-checkout/webkitgtk-2.13.4/Source/WebKit2/Platform/IPC/Connection.cpp(590) : std::unique_ptr<IPC::MessageDecoder> IPC::Connection::waitForSyncReply(uint64_t,
 std::chrono::milliseconds, unsigned int)

...

ERROR: Connection::waitForSyncReply: Timed-out while waiting for reply, id = 51
/home/tanty/no-backup/personal/webkit/epiphany/jhbuild-checkout/webkitgtk-2.13.4/Source/WebKit2/Platform/IPC/Connection.cpp(590) : std::unique_ptr<IPC::MessageDecoder> IPC::Connection::waitForSyncReply(uint64_t, std::chrono::milliseconds, unsigned int)
ERROR: Connection::waitForSyncReply: Timed-out while waiting for reply, id = 52
/home/tanty/no-backup/personal/webkit/epiphany/jhbuild-checkout/webkitgtk-2.13.4/Source/WebKit2/Platform/IPC/Connection.cpp(590) : std::unique_ptr<IPC::MessageDecoder> IPC::Connection::waitForSyncReply(uint64_t, std::chrono::milliseconds, unsigned int)
ERROR: Connection::waitForSyncReply: Timed-out while waiting for reply, id = 53
/home/tanty/no-backup/personal/webkit/epiphany/jhbuild-checkout/webkitgtk-2.13.4/Source/WebKit2/Platform/IPC/Connection.cpp(590) : std::unique_ptr<IPC::MessageDecoder> IPC::Connection::waitForSyncReply(uint64_t, std::chrono::milliseconds, unsigned int)
[New Thread 0x7fff557fa700 (LWP 11595)]
[Thread 0x7fff6abfd700 (LWP 19602) exited]
[Thread 0x7fff6bbff700 (LWP 19598) exited]
[Thread 0x7fff8bffd700 (LWP 19586) exited]
[Thread 0x7fff88b72700 (LWP 19597) exited]
[Thread 0x7fff89373700 (LWP 19596) exited]
[Thread 0x7fffd6bff700 (LWP 19578) exited]
[Thread 0x7fff557fa700 (LWP 11595) exited]
[Thread 0x7fff567fc700 (LWP 4066) exited]
[Thread 0x7fffd4bfb700 (LWP 19585) exited]
[Thread 0x7fff6a3fc700 (LWP 26502) exited]
[Thread 0x7fff55ffb700 (LWP 4067) exited]
[Thread 0x7fff577fe700 (LWP 4068) exited]
[Thread 0x7fff57fff700 (LWP 20595) exited]
[Thread 0x7fffd5bfd700 (LWP 19580) exited]
[Thread 0x7fffd63fe700 (LWP 19579) exited]
[Thread 0x7fffd7bc0700 (LWP 19577) exited]
[Thread 0x7fffdc924700 (LWP 19575) exited]
[Thread 0x7fffdd125700 (LWP 19574) exited]
[Thread 0x7fffde744700 (LWP 19573) exited]
[Thread 0x7ffff7f0aac0 (LWP 19346) exited]
[Inferior 1 (process 19346) exited normally]
(gdb) [ERROR:flash/platform/pepper/common/pep_minithreads_posix.cpp(49)] NOTREACHED() reached
[ERROR:flash/platform/pepper/common/pep_minithreads_posix.cpp(59)] NOTREACHED() reached
[ERROR:flash/platform/pepper/common/pep_minithreads_posix.cpp(49)] NOTREACHED() reached
[ERROR:flash/platform/pepper/common/pep_minithreads_posix.cpp(59)] NOTREACHED() reached

(WebKitPluginProcess2:20594): GLib-CRITICAL **: g_hash_table_lookup: assertion 'hash_table != NULL' failed

(WebKitPluginProcess2:20594): GLib-CRITICAL **: g_hash_table_lookup: assertion 'hash_table != NULL' failed
[ERROR:flash/platform/pepper/common/pep_minithreads_posix.cpp(49)] NOTREACHED() reached
[ERROR:flash/platform/pepper/common/pep_minithreads_posix.cpp(59)] NOTREACHED() reached
ERROR: Exiting process early due to unacknowledged closed-connection
/home/tanty/no-backup/personal/webkit/epiphany/jhbuild-checkout/webkitgtk-2.13.4/Source/WebKit2/Shared/ChildProcess.cpp(58) : WebKit::didCloseOnConnectionWorkQueue(IPC::Connection*)::<lambda()>

(gdb)
Comment 4 Carlos Garcia Campos 2016-07-27 06:19:29 PDT
It's single process model, so using a shared thread, one possibility could be that other compositors are scheduling updates like crazy and it takes a bit longer until the destroy task is performed, maybe more than 1 second in total.
Comment 5 Carlos Garcia Campos 2016-08-01 23:47:48 PDT
This should no longer happen after r204013. Please reopen if you see this crash again. Thanks.