Summary: | [GTK] Hangs when showing Google search results | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Bastien Nocera <bugzilla> | ||||||
Component: | WebKitGTK | Assignee: | Nobody <webkit-unassigned> | ||||||
Status: | RESOLVED FIXED | ||||||||
Severity: | Normal | CC: | achristensen, andersca, bugs-noreply, cgarcia, commit-queue, Hironori.Fujii, mcatanzaro | ||||||
Priority: | P2 | ||||||||
Version: | Other | ||||||||
Hardware: | Unspecified | ||||||||
OS: | Unspecified | ||||||||
Attachments: |
|
Description
Bastien Nocera
2017-02-21 18:13:42 PST
We'd really need a backtrace with member variables to see what messages are being sent to do anything about this. Also please try again with 2.15.90 and let us know if it's still broken there. No, I don't need a more details bt, it's easy to know that it's blocked in WebProcess::singleton().parentProcessConnection()->sendSync(Messages::StorageManager::GetValues(m_storageMapID, m_currentSeed), Messages::StorageManager::GetValues::Reply(values), 0); What I need is a bt of the UI process too, to know why it's not responding to the sync message. Full bt: Thread 18 (Thread 0x7f77dffff700 (LWP 3831)): #0 0x00007f7869f4029d in poll () at ../sysdeps/unix/syscall-template.S:84 #1 0x00007f786a255449 in g_main_context_poll (priority=<optimized out>, n_fds=2, fds=0x7f77bc001370, timeout=<optimized out>, context=0x7f77bc000900) at gmain.c:4228 #2 0x00007f786a255449 in g_main_context_iterate (context=0x7f77bc000900, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3924 #3 0x00007f786a2557e2 in g_main_loop_run (loop=0x7f77bc001240) at gmain.c:4125 #4 0x00007f786b2c90c0 in WTF::RunLoop::run() () at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/glib/RunLoopGLib.cpp:94 #5 0x00007f786b2c7f11 in WTF::WorkQueue::<lambda()>::operator() (__closure=0x7f77dfffeb30) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:44 #6 0x00007f786b2c7f11 in std::_Function_handler<void(), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/7/bits/std_function.h:316 #7 0x00007f786b2a10c5 in std::function<void ()>::operator()() const (this=0x7f77dfffeb30) at /usr/include/c++/7/bits/std_function.h:669 #8 0x00007f786b2a10c5 in WTF::threadEntryPoint(void*) (contextData=0x7f77f3108140) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/Threading.cpp:88 #9 0x00007f786b2c6b1a in WTF::wtfThreadEntryPoint(void*) (param=0x7f785d9f9f60) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/ThreadingPthreads.cpp:168 #10 0x00007f78694c75bd in start_thread (arg=0x7f77dffff700) at pthread_create.c:456 #11 0x00007f7869f4bc3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97 Thread 17 (Thread 0x7f77c37fe700 (LWP 3747)): #0 0x00007f7869f4029d in poll () at ../sysdeps/unix/syscall-template.S:84 #1 0x00007f786a255449 in g_main_context_poll (priority=<optimized out>, n_fds=2, fds=0x7f77b0001370, timeout=<optimized out>, context=0x7f77b0000900) at gmain.c:4228 #2 0x00007f786a255449 in g_main_context_iterate (context=0x7f77b0000900, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3924 #3 0x00007f786a2557e2 in g_main_loop_run (loop=0x7f77b0001240) at gmain.c:4125 #4 0x00007f786b2c90c0 in WTF::RunLoop::run() () at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/glib/RunLoopGLib.cpp:94 #5 0x00007f786b2c7f11 in WTF::WorkQueue::<lambda()>::operator() (__closure=0x7f77c37fdb30) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:44 #6 0x00007f786b2c7f11 in std::_Function_handler<void(), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/7/bits/std_function.h:316 #7 0x00007f786b2a10c5 in std::function<void ()>::operator()() const (this=0x7f77c37fdb30) at /usr/include/c++/7/bits/std_function.h:669 #8 0x00007f786b2a10c5 in WTF::threadEntryPoint(void*) (contextData=0x7f785d9f3910) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/Threading.cpp:88 #9 0x00007f786b2c6b1a in WTF::wtfThreadEntryPoint(void*) (param=0x7f785d9f98e0) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/ThreadingPthreads.cpp:168 #10 0x00007f78694c75bd in start_thread (arg=0x7f77c37fe700) at pthread_create.c:456 #11 0x00007f7869f4bc3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97 Thread 16 (Thread 0x7f77dcfaa700 (LWP 3739)): #0 0x00007f7869f4029d in poll () at ../sysdeps/unix/syscall-template.S:84 #1 0x00007f786a255449 in g_main_context_poll (priority=<optimized out>, n_fds=2, fds=0x7f77c8001370, timeout=<optimized out>, context=0x7f77c8000900) at gmain.c:4228 #2 0x00007f786a255449 in g_main_context_iterate (context=0x7f77c8000900, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3924 #3 0x00007f786a2557e2 in g_main_loop_run (loop=0x7f77c8001240) at gmain.c:4125 #4 0x00007f786b2c90c0 in WTF::RunLoop::run() () at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/glib/RunLoopGLib.cpp:94 #5 0x00007f786b2c7f11 in WTF::WorkQueue::<lambda()>::operator() (__closure=0x7f77dcfa9b30) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:44 #6 0x00007f786b2c7f11 in std::_Function_handler<void(), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/7/bits/std_function.h:316 #7 0x00007f786b2a10c5 in std::function<void ()>::operator()() const (this=0x7f77dcfa9b30) at /usr/include/c++/7/bits/std_function.h:669 #8 0x00007f786b2a10c5 in WTF::threadEntryPoint(void*) (contextData=0x7f785d9f3730) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/Threading.cpp:88 #9 0x00007f786b2c6b1a in WTF::wtfThreadEntryPoint(void*) (param=0x7f785d9f9790) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/ThreadingPthreads.cpp:168 #10 0x00007f78694c75bd in start_thread (arg=0x7f77dcfaa700) at pthread_create.c:456 #11 0x00007f7869f4bc3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97 Thread 15 (Thread 0x7f77ddffb700 (LWP 3725)): #0 0x00007f7869f4029d in poll () at ../sysdeps/unix/syscall-template.S:84 #1 0x00007f786a255449 in g_main_context_poll (priority=<optimized out>, n_fds=2, fds=0x7f77d0001370, timeout=<optimized out>, context=0x7f77d0000900) at gmain.c:4228 #2 0x00007f786a255449 in g_main_context_iterate (context=0x7f77d0000900, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3924 #3 0x00007f786a2557e2 in g_main_loop_run (loop=0x7f77d0001240) at gmain.c:4125 #4 0x00007f786b2c90c0 in WTF::RunLoop::run() () at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/glib/RunLoopGLib.cpp:94 #5 0x00007f786b2c7f11 in WTF::WorkQueue::<lambda()>::operator() (__closure=0x7f77ddffab30) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:44 #6 0x00007f786b2c7f11 in std::_Function_handler<void(), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/7/bits/std_function.h:316 #7 0x00007f786b2a10c5 in std::function<void ()>::operator()() const (this=0x7f77ddffab30) at /usr/include/c++/7/bits/std_function.h:669 #8 0x00007f786b2a10c5 in WTF::threadEntryPoint(void*) (contextData=0x7f785d9f3550) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/Threading.cpp:88 #9 0x00007f786b2c6b1a in WTF::wtfThreadEntryPoint(void*) (param=0x7f785d9f9640) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/ThreadingPthreads.cpp:168 #10 0x00007f78694c75bd in start_thread (arg=0x7f77ddffb700) at pthread_create.c:456 #11 0x00007f7869f4bc3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97 Thread 14 (Thread 0x7f77de7fc700 (LWP 3724)): #0 0x00007f7869f4029d in poll () at ../sysdeps/unix/syscall-template.S:84 #1 0x00007f786ded7d6c in poll (__timeout=-1, __nfds=1, __fds=0x7f77de7fb7c0) at /usr/include/bits/poll2.h:46 #2 0x00007f786ded7d6c in IPC::Connection::sendOutgoingMessage(std::unique_ptr<IPC::Encoder, std::default_delete<IPC::Encoder> >) (this=this@entry=0x7f785d9ecc00, encoder=std::unique_ptr<IPC::Encoder> containing 0x7f77b516bc80) at /usr/src/debug/webkitgtk-2.15.4/Source/WebKit2/Platform/IPC/unix/ConnectionUnix.cpp:515 #3 0x00007f786dc8c00f in IPC::Connection::sendOutgoingMessages() (this=0x7f785d9ecc00) at /usr/src/debug/webkitgtk-2.15.4/Source/WebKit2/Platform/IPC/Connection.cpp:825 #4 0x00007f786b2a04be in WTF::Function<void ()>::operator()() const (this=<synthetic pointer>) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/Function.h:50 #5 0x00007f786b2a04be in WTF::RunLoop::performWork() (this=0x7f77f3198168) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/RunLoop.cpp:105 #6 0x00007f786b2c8839 in WTF::RunLoop::<lambda(gpointer)>::operator() (__closure=0x0, userData=<optimized out>) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/glib/RunLoopGLib.cpp:66 #7 0x00007f786b2c8839 in WTF::RunLoop::<lambda(gpointer)>::_FUN(gpointer) () at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/glib/RunLoopGLib.cpp:68 #8 0x00007f786a255127 in g_main_dispatch (context=0x7f77cc000900) at gmain.c:3203 #9 0x00007f786a255127 in g_main_context_dispatch (context=context@entry=0x7f77cc000900) at gmain.c:3856 #10 0x00007f786a2554c8 in g_main_context_iterate (context=0x7f77cc000900, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3929 #11 0x00007f786a2557e2 in g_main_loop_run (loop=0x7f77cc001240) at gmain.c:4125 #12 0x00007f786b2c90c0 in WTF::RunLoop::run() () at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/glib/RunLoopGLib.cpp:94 #13 0x00007f786b2c7f11 in WTF::WorkQueue::<lambda()>::operator() (__closure=0x7f77de7fbb30) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:44 #14 0x00007f786b2c7f11 in std::_Function_handler<void(), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/7/bits/std_function.h:316 #15 0x00007f786b2a10c5 in std::function<void ()>::operator()() const (this=0x7f77de7fbb30) at /usr/include/c++/7/bits/std_function.h:669 #16 0x00007f786b2a10c5 in WTF::threadEntryPoint(void*) (contextData=0x7f785d9f3500) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/Threading.cpp:88 #17 0x00007f786b2c6b1a in WTF::wtfThreadEntryPoint(void*) (param=0x7f785d9f9540) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/ThreadingPthreads.cpp:168 #18 0x00007f78694c75bd in start_thread (arg=0x7f77de7fc700) at pthread_create.c:456 #19 0x00007f7869f4bc3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97 Thread 13 (Thread 0x7f77df7fe700 (LWP 3714)): #0 0x00007f7869f4029d in poll () at ../sysdeps/unix/syscall-template.S:84 #1 0x00007f786a255449 in g_main_context_poll (priority=<optimized out>, n_fds=2, fds=0x7f77d4001370, timeout=<optimized out>, context=0x7f77d4000900) at gmain.c:4228 #2 0x00007f786a255449 in g_main_context_iterate (context=0x7f77d4000900, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3924 #3 0x00007f786a2557e2 in g_main_loop_run (loop=0x7f77d4001240) at gmain.c:4125 #4 0x00007f786b2c90c0 in WTF::RunLoop::run() () at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/glib/RunLoopGLib.cpp:94 #5 0x00007f786b2c7f11 in WTF::WorkQueue::<lambda()>::operator() (__closure=0x7f77df7fdb30) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:44 #6 0x00007f786b2c7f11 in std::_Function_handler<void(), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/7/bits/std_function.h:316 #7 0x00007f786b2a10c5 in std::function<void ()>::operator()() const (this=0x7f77df7fdb30) at /usr/include/c++/7/bits/std_function.h:669 #8 0x00007f786b2a10c5 in WTF::threadEntryPoint(void*) (contextData=0x7f785d9f34b0) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/Threading.cpp:88 #9 0x00007f786b2c6b1a in WTF::wtfThreadEntryPoint(void*) (param=0x7f785d9f93c0) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/ThreadingPthreads.cpp:168 #10 0x00007f78694c75bd in start_thread (arg=0x7f77df7fe700) at pthread_create.c:456 #11 0x00007f7869f4bc3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97 Thread 12 (Thread 0x7f77f12ed700 (LWP 3710)): #0 0x00007f7869f4029d in poll () at ../sysdeps/unix/syscall-template.S:84 #1 0x00007f786a255449 in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7f77d8001370, timeout=<optimized out>, context=0x7f77d8000900) at gmain.c:4228 #2 0x00007f786a255449 in g_main_context_iterate (context=0x7f77d8000900, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3924 #3 0x00007f786a2557e2 in g_main_loop_run (loop=0x7f77d8001240) at gmain.c:4125 #4 0x00007f786b2c90c0 in WTF::RunLoop::run() () at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/glib/RunLoopGLib.cpp:94 #5 0x00007f786b2c7f11 in WTF::WorkQueue::<lambda()>::operator() (__closure=0x7f77f12ecb30) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:44 #6 0x00007f786b2c7f11 in std::_Function_handler<void(), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/7/bits/std_function.h:316 #7 0x00007f786b2a10c5 in std::function<void ()>::operator()() const (this=0x7f77f12ecb30) at /usr/include/c++/7/bits/std_function.h:669 #8 0x00007f786b2a10c5 in WTF::threadEntryPoint(void*) (contextData=0x7f785d9f3410) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/Threading.cpp:88 #9 0x00007f786b2c6b1a in WTF::wtfThreadEntryPoint(void*) (param=0x7f785d9f9370) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/ThreadingPthreads.cpp:168 #10 0x00007f78694c75bd in start_thread (arg=0x7f77f12ed700) at pthread_create.c:456 #11 0x00007f7869f4bc3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97 Thread 11 (Thread 0x7f77f1aee700 (LWP 3709)): #0 0x00007f7869f4029d in poll () at ../sysdeps/unix/syscall-template.S:84 #1 0x00007f786a255449 in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7f77e4001370, timeout=<optimized out>, context=0x7f77e4000900) at gmain.c:4228 #2 0x00007f786a255449 in g_main_context_iterate (context=0x7f77e4000900, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3924 #3 0x00007f786a2557e2 in g_main_loop_run (loop=0x7f77e4001240) at gmain.c:4125 #4 0x00007f786b2c90c0 in WTF::RunLoop::run() () at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/glib/RunLoopGLib.cpp:94 #5 0x00007f786b2c7f11 in WTF::WorkQueue::<lambda()>::operator() (__closure=0x7f77f1aedb30) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:44 #6 0x00007f786b2c7f11 in std::_Function_handler<void(), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/7/bits/std_function.h:316 #7 0x00007f786b2a10c5 in std::function<void ()>::operator()() const (this=0x7f77f1aedb30) at /usr/include/c++/7/bits/std_function.h:669 #8 0x00007f786b2a10c5 in WTF::threadEntryPoint(void*) (contextData=0x7f785d9f33c0) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/Threading.cpp:88 #9 0x00007f786b2c6b1a in WTF::wtfThreadEntryPoint(void*) (param=0x7f785d9f9350) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/ThreadingPthreads.cpp:168 #10 0x00007f78694c75bd in start_thread (arg=0x7f77f1aee700) at pthread_create.c:456 #11 0x00007f7869f4bc3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97 Thread 10 (Thread 0x7f77f22ef700 (LWP 3708)): #0 0x00007f7869f4029d in poll () at ../sysdeps/unix/syscall-template.S:84 #1 0x00007f786a255449 in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7f77e0001370, timeout=<optimized out>, context=0x7f77e0000900) at gmain.c:4228 #2 0x00007f786a255449 in g_main_context_iterate (context=0x7f77e0000900, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3924 #3 0x00007f786a2557e2 in g_main_loop_run (loop=0x7f77e0001240) at gmain.c:4125 #4 0x00007f786b2c90c0 in WTF::RunLoop::run() () at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/glib/RunLoopGLib.cpp:94 #5 0x00007f786b2c7f11 in WTF::WorkQueue::<lambda()>::operator() (__closure=0x7f77f22eeb30) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:44 #6 0x00007f786b2c7f11 in std::_Function_handler<void(), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/7/bits/std_function.h:316 #7 0x00007f786b2a10c5 in std::function<void ()>::operator()() const (this=0x7f77f22eeb30) at /usr/include/c++/7/bits/std_function.h:669 #8 0x00007f786b2a10c5 in WTF::threadEntryPoint(void*) (contextData=0x7f785d9f3370) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/Threading.cpp:88 #9 0x00007f786b2c6b1a in WTF::wtfThreadEntryPoint(void*) (param=0x7f785d9f9320) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/ThreadingPthreads.cpp:168 #10 0x00007f78694c75bd in start_thread (arg=0x7f77f22ef700) at pthread_create.c:456 #11 0x00007f7869f4bc3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97 Thread 9 (Thread 0x7f77f3bff700 (LWP 3706)): #0 0x00007f7869f465d9 in syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38 #1 0x00007f786a29a76f in g_cond_wait (cond=cond@entry=0x56536d18b458, mutex=mutex@entry=0x56536d18b450) at gthread-posix.c:1395 #2 0x00007f786a229b8b in g_async_queue_pop_intern_unlocked (queue=queue@entry=0x56536d18b450, wait=wait@entry=1, end_time=end_time@entry=-1) at gasyncqueue.c:419 #3 0x00007f786a229fb7 in g_async_queue_pop (queue=0x56536d18b450) at gasyncqueue.c:453 #4 0x00007f7873bba0d1 in run_history_service_thread () at /usr/lib64/epiphany/libephymisc.so #5 0x00007f786a27c6d6 in g_thread_proxy (data=0x56536d033990) at gthread.c:784 #6 0x00007f78694c75bd in start_thread (arg=0x7f77f3bff700) at pthread_create.c:456 #7 0x00007f7869f4bc3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97 Thread 8 (Thread 0x7f78013fe700 (LWP 3698)): #0 0x00007f7869f4029d in poll () at ../sysdeps/unix/syscall-template.S:84 #1 0x00007f786a255449 in g_main_context_poll (priority=<optimized out>, n_fds=2, fds=0x7f77f8001370, timeout=<optimized out>, context=0x7f77f8000900) at gmain.c:4228 #2 0x00007f786a255449 in g_main_context_iterate (context=0x7f77f8000900, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3924 #3 0x00007f786a2557e2 in g_main_loop_run (loop=0x7f77f8001240) at gmain.c:4125 #4 0x00007f786b2c90c0 in WTF::RunLoop::run() () at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/glib/RunLoopGLib.cpp:94 #5 0x00007f786b2c7f11 in WTF::WorkQueue::<lambda()>::operator() (__closure=0x7f78013fdb30) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:44 #6 0x00007f786b2c7f11 in std::_Function_handler<void(), WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/7/bits/std_function.h:316 #7 0x00007f786b2a10c5 in std::function<void ()>::operator()() const (this=0x7f78013fdb30) at /usr/include/c++/7/bits/std_function.h:669 #8 0x00007f786b2a10c5 in WTF::threadEntryPoint(void*) (contextData=0x7f785d9f3230) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/Threading.cpp:88 #9 0x00007f786b2c6b1a in WTF::wtfThreadEntryPoint(void*) (param=0x7f785d9f9060) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/ThreadingPthreads.cpp:168 #10 0x00007f78694c75bd in start_thread (arg=0x7f78013fe700) at pthread_create.c:456 #11 0x00007f7869f4bc3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97 Thread 7 (Thread 0x7f78027ff700 (LWP 3696)): #0 0x00007f78694cdfd6 in futex_abstimed_wait_cancelable (private=<optimized out>, abstime=0x7f78027fe7d0, expected=0, futex_word=0x7f785d95b3a0) at ../sysdeps/unix/sysv/linux/futex-internal.h:205 #1 0x00007f78694cdfd6 in __pthread_cond_wait_common (abstime=0x7f78027fe7d0, mutex=0x7f785d95b350, cond=0x7f785d95b378) at pthread_cond_wait.c:539 #2 0x00007f78694cdfd6 in __pthread_cond_timedwait (cond=0x7f785d95b378, mutex=0x7f785d95b350, abstime=0x7f78027fe7d0) at pthread_cond_wait.c:667 #3 0x00007f786b2c710a in WTF::ThreadCondition::timedWait(WTF::Mutex&, double) (this=this@entry=0x7f785d95b378, mutex=..., absoluteTime=1487774716.346159) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/ThreadingPthreads.cpp:386 #4 0x00007f786b29e23b in WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, WTF::TimeWithDynamicClockType const&) (address=address@entry=0x7f78027fe90f, validation=..., beforeSleep=..., timeout=...) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/ParkingLot.cpp:597 #5 0x00007f786b29032d in WTF::ParkingLot::parkConditionally<bool WTF::ConditionBase::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)::{lambda()#1}, bool WTF::ConditionBase::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)::{lambda()#2}>(void const*, bool WTF::ConditionBase::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)::{lambda()#1} const&, bool WTF::ConditionBase::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)::{lambda()#2} const&, WTF::TimeWithDynamicClockType const&) (timeout=..., beforeSleep=..., validation=..., address=0x7f78027fe90f) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/ParkingLot.h:85 #6 0x00007f786b29032d in WTF::ConditionBase::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&) (timeout=..., lock=..., this=0x7f78027fe90f) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/Condition.h:77 #7 0x00007f786b29032d in WTF::ConditionBase::waitFor<WTF::Lock>(WTF::Lock&, WTF::Seconds) (relativeTimeout=..., lock=..., this=0x7f78027fe90f) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/Condition.h:117 #8 0x00007f786b29032d in WTF::sleep(double) (value=<optimized out>) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/CurrentTime.cpp:343 #9 0x00007f786df31f2d in WebKit::MemoryPressureMonitor::<lambda()>::operator() (__closure=<optimized out>) at /usr/src/debug/webkitgtk-2.15.4/Source/WebKit2/UIProcess/linux/MemoryPressureMonitor.cpp:254 #10 0x00007f786df31f2d in std::_Function_handler<void(), WebKit::MemoryPressureMonitor::MemoryPressureMonitor()::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/7/bits/std_function.h:316 #11 0x00007f786b2a10c5 in std::function<void ()>::operator()() const (this=0x7f78027feb30) at /usr/include/c++/7/bits/std_function.h:669 #12 0x00007f786b2a10c5 in WTF::threadEntryPoint(void*) (contextData=0x7f785d9f31e0) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/Threading.cpp:88 #13 0x00007f786b2c6b1a in WTF::wtfThreadEntryPoint(void*) (param=0x7f785d9f9040) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/ThreadingPthreads.cpp:168 #14 0x00007f78694c75bd in start_thread (arg=0x7f78027ff700) at pthread_create.c:456 #15 0x00007f7869f4bc3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97 Thread 6 (Thread 0x7f7803b4a700 (LWP 3693)): #0 0x00007f78694cda2b in futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x7f77f3db21c4) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 0x00007f78694cda2b in __pthread_cond_wait_common (abstime=0x0, mutex=0x7f77f3db2170, cond=0x7f77f3db2198) at pthread_cond_wait.c:502 #2 0x00007f78694cda2b in __pthread_cond_wait (cond=0x7f77f3db2198, mutex=0x7f77f3db2170) at pthread_cond_wait.c:655 #3 0x00007f786b2c713b in WTF::ThreadCondition::timedWait(WTF::Mutex&, double) (this=this@entry=0x7f77f3db2198, mutex=..., absoluteTime=inf) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/ThreadingPthreads.cpp:375 #4 0x00007f786b29e23b in WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, WTF::TimeWithDynamicClockType const&) (address=address@entry=0x7f785d9e8093, validation=..., beforeSleep=..., timeout=...) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/ParkingLot.cpp:597 #5 0x00007f786e7a13a9 in WTF::ParkingLot::parkConditionally<bool WTF::ConditionBase::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)::{lambda()#1}, bool WTF::ConditionBase::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)::{lambda()#2}>(void const*, bool WTF::ConditionBase::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)::{lambda()#1} const&, bool WTF::ConditionBase::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&)::{lambda()#2} const&, WTF::TimeWithDynamicClockType const&) (timeout=..., beforeSleep=..., validation=..., address=0x7f785d9e8093) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/ParkingLot.h:85 #6 0x00007f786e7a13a9 in WTF::ConditionBase::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&) (timeout=..., lock=..., this=0x7f785d9e8093) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/Condition.h:77 #7 0x00007f786e7a13a9 in WTF::ConditionBase::wait<WTF::Lock>(WTF::Lock&) (lock=..., this=0x7f785d9e8093) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/Condition.h:123 #8 0x00007f786e7a13a9 in WebCore::IconDatabase::syncThreadMainLoop() (this=this@entry=0x7f785d9e8000) at /usr/src/debug/webkitgtk-2.15.4/Source/WebCore/loader/icon/IconDatabase.cpp:1426 #9 0x00007f786e7a2d48 in WebCore::IconDatabase::iconDatabaseSyncThread() (this=0x7f785d9e8000) at /usr/src/debug/webkitgtk-2.15.4/Source/WebCore/loader/icon/IconDatabase.cpp:1028 #10 0x00007f786b2a10c5 in std::function<void ()>::operator()() const (this=0x7f7803b49b30) at /usr/include/c++/7/bits/std_function.h:669 #11 0x00007f786b2a10c5 in WTF::threadEntryPoint(void*) (contextData=0x7f785d9f3190) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/Threading.cpp:88 #12 0x00007f786b2c6b1a in WTF::wtfThreadEntryPoint(void*) (param=0x7f785d9f9010) at /usr/src/debug/webkitgtk-2.15.4/Source/WTF/wtf/ThreadingPthreads.cpp:168 #13 0x00007f78694c75bd in start_thread (arg=0x7f7803b4a700) at pthread_create.c:456 #14 0x00007f7869f4bc3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97 Thread 5 (Thread 0x7f7855a56700 (LWP 3692)): #0 0x00007f7869f4029d in poll () at ../sysdeps/unix/syscall-template.S:84 #1 0x00007f786a255449 in g_main_context_poll (priority=<optimized out>, n_fds=7, fds=0x7f784c002fc0, timeout=<optimized out>, context=0x7f7850014340) at gmain.c:4228 #2 0x00007f786a255449 in g_main_context_iterate (context=0x7f7850014340, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3924 #3 0x00007f786a2557e2 in g_main_loop_run (loop=0x7f7850013e00) at gmain.c:4125 #4 0x00007f786b7f77a6 in gdbus_shared_thread_func (user_data=0x7f7850014310) at gdbusprivate.c:247 #5 0x00007f786a27c6d6 in g_thread_proxy (data=0x56536c8bd320) at gthread.c:784 #6 0x00007f78694c75bd in start_thread (arg=0x7f7855a56700) at pthread_create.c:456 #7 0x00007f7869f4bc3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97 Thread 4 (Thread 0x7f7856257700 (LWP 3691)): #0 0x00007f7869f4029d in poll () at ../sysdeps/unix/syscall-template.S:84 #1 0x00007f786a255449 in g_main_context_poll (priority=<optimized out>, n_fds=2, fds=0x7f78480008c0, timeout=<optimized out>, context=0x7f7850013af0) at gmain.c:4228 #2 0x00007f786a255449 in g_main_context_iterate (context=context@entry=0x7f7850013af0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3924 #3 0x00007f786a25555c in g_main_context_iteration (context=0x7f7850013af0, may_block=may_block@entry=1) at gmain.c:3990 #4 0x00007f786a2555a1 in glib_worker_main (data=<optimized out>) at gmain.c:5783 #5 0x00007f786a27c6d6 in g_thread_proxy (data=0x56536c8bd2d0) at gthread.c:784 #6 0x00007f78694c75bd in start_thread (arg=0x7f7856257700) at pthread_create.c:456 #7 0x00007f7869f4bc3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97 Thread 3 (Thread 0x7f7856a58700 (LWP 3690)): #0 0x00007f7869f4029d in poll () at ../sysdeps/unix/syscall-template.S:84 #1 0x00007f786a255449 in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x7f78500010e0, timeout=<optimized out>, context=0x56536c8c2bc0) at gmain.c:4228 #2 0x00007f786a255449 in g_main_context_iterate (context=context@entry=0x56536c8c2bc0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3924 #3 0x00007f786a25555c in g_main_context_iteration (context=0x56536c8c2bc0, may_block=1) at gmain.c:3990 #4 0x00007f7856a5ff3d in dconf_gdbus_worker_thread () at /usr/lib64/gio/modules/libdconfsettings.so #5 0x00007f786a27c6d6 in g_thread_proxy (data=0x56536c8bccf0) at gthread.c:784 #6 0x00007f78694c75bd in start_thread (arg=0x7f7856a58700) at pthread_create.c:456 #7 0x00007f7869f4bc3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97 Thread 2 (Thread 0x7f785e207700 (LWP 3689)): #0 0x00007f78694cda2b in futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x7f786b4d14b4 <bmalloc::PerProcess<bmalloc::Heap>::s_memory+3124>) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 0x00007f78694cda2b in __pthread_cond_wait_common (abstime=0x0, mutex=0x56536c8a4ae0, cond=0x7f786b4d1488 <bmalloc::PerProcess<bmalloc::Heap>::s_memory+3080>) at pthread_cond_wait.c:502 #2 0x00007f78694cda2b in __pthread_cond_wait (cond=0x7f786b4d1488 <bmalloc::PerProcess<bmalloc::Heap>::s_memory+3080>, mutex=0x56536c8a4ae0) at pthread_cond_wait.c:655 #3 0x00007f7868fe87bc in std::condition_variable::wait(std::unique_lock<std::mutex>&) () at /lib64/libstdc++.so.6 #4 0x00007f786b2ceaa7 in std::_V2::condition_variable_any::wait<std::unique_lock<bmalloc::Mutex> >(std::unique_lock<bmalloc::Mutex>&) (__lock=<synthetic pointer>..., this=<optimized out>) at /usr/include/c++/7/condition_variable:251 #5 0x00007f786b2ceaa7 in std::_V2::condition_variable_any::wait<std::unique_lock<bmalloc::Mutex>, bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::threadRunLoop()::{lambda()#1}>(std::unique_lock<bmalloc::Mutex>&, bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::threadRunLoop()::{lambda()#1}) (__p=..., __lock=..., this=<optimized out>) at /usr/include/c++/7/condition_variable:260 #6 0x00007f786b2ceaa7 in bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::threadRunLoop() (this=0x7f786b4d1480 <bmalloc::PerProcess<bmalloc::Heap>::s_memory+3072>) at /usr/src/debug/webkitgtk-2.15.4/Source/bmalloc/bmalloc/AsyncTask.h:130 #7 0x00007f786b2cebe9 in bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>::threadEntryPoint(bmalloc::AsyncTask<bmalloc::Heap, void (bmalloc::Heap::*)()>*) (asyncTask=<optimized out>) at /usr/src/debug/webkitgtk-2.15.4/Source/bmalloc/bmalloc/AsyncTask.h:110 #8 0x00007f7868feeaaf in () at /lib64/libstdc++.so.6 #9 0x00007f78694c75bd in start_thread (arg=0x7f785e207700) at pthread_create.c:456 #10 0x00007f7869f4bc3f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97 Thread 1 (Thread 0x7f7873eed680 (LWP 3686)): #0 0x00007f7869f4029d in poll () at ../sysdeps/unix/syscall-template.S:84 #1 0x00007f786a255449 in g_main_context_poll (priority=<optimized out>, n_fds=5, fds=0x56536c934b90, timeout=<optimized out>, context=0x56536c8ac250) at gmain.c:4228 #2 0x00007f786a255449 in g_main_context_iterate (context=context@entry=0x56536c8ac250, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3924 #3 0x00007f786a25555c in g_main_context_iteration (context=context@entry=0x56536c8ac250, may_block=may_block@entry=1) at gmain.c:3990 #4 0x00007f786b7ca45d in g_application_run (application=0x56536c933200 [EphyShell], argc=<optimized out>, argv=<optimized out>) at gapplication.c:2381 #5 0x000056536c317888 in main () For som reason the thread we use to send/receive IPC messages is blocked sending a message, because sendmsg returned EAGAIN or EWOULDBLOCK and the poll never returns. That's why the UI process doesn't reply to the sync message from the web process. I don't know why poll never returns, but we should probably pass a timeout. I see the same problem in WebKit PS4 port. Bastien didn't show all threads of web process in Comment 0. I guess ReceiveQueue thread of web process is also blocked in the poll in which UI process is. If receive buffers of both processes become full, and ReceiveQueue threads of both processes is trying to send, both threads will be blocked and won't read the data. Easy workaround is enlarging receive buffers with setsockopt(SO_RCVBUF). I think there are two choices of solutions: 1) Separate receiving and sending threads 2) Polling POLLIN and POLLOUT if sendmsg returns EWOULDBLOCK or EAGAIN in ReceiveQueue thread Created attachment 302509 [details]
Patch
Attachment 302509 [details] did not pass style-queue:
ERROR: Source/WebKit2/Platform/IPC/glib/GSocketMonitor.cpp:45: Extra space before ( in function call [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/glib/GSocketMonitor.h:46: Extra space before ( in function call [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/glib/GSocketMonitor.h:54: Extra space before ( in function call [whitespace/parens] [4]
Total errors found: 3 in 8 files
If any of these errors are false positives, please file a bug against check-webkit-style.
Comment on attachment 302509 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=302509&action=review > Source/WebKit2/ChangeLog:13 > + socket monitor as readSocketMonitor and adds another one for polling output. When sendsmg fails with s/sendsmg/sendmsg/ > Source/WebKit2/Platform/IPC/unix/ConnectionUnix.cpp:365 > +bool Connection::sendOutputMessage(UnixMessage& outputMessage) Mac port uses unique_ptr. You don't use unique_ptr<UnixMessage> for outputMessage for performance? > Source/WebKit2/Platform/IPC/unix/ConnectionUnix.cpp:458 > + sendOutputMessage(*message); You don't need to check the return value of sendOutputMessage? > Source/WebKit2/Platform/IPC/unix/UnixMessage.h:66 > +class AttachmentInfo { You don't need to move AttachmentInfo, too. > Source/WebKit2/Platform/IPC/unix/UnixMessage.h:114 > + memcpy(m_body, other.m_body, m_messageInfo.bodySize()); You don't need to copy the body if m_messageInfo.isMessageBodyIsOutOfLine(). (In reply to comment #8) > Comment on attachment 302509 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=302509&action=review Thanks for the review Fuji! > > Source/WebKit2/ChangeLog:13 > > + socket monitor as readSocketMonitor and adds another one for polling output. When sendsmg fails with > > s/sendsmg/sendmsg/ Oops > > Source/WebKit2/Platform/IPC/unix/ConnectionUnix.cpp:365 > > +bool Connection::sendOutputMessage(UnixMessage& outputMessage) > > Mac port uses unique_ptr. You don't use unique_ptr<UnixMessage> for > outputMessage for performance? Yes, the case of EWOULDBLOCK hardly ever happens, so only in that case I heap allocate the message to saved it. > > Source/WebKit2/Platform/IPC/unix/ConnectionUnix.cpp:458 > > + sendOutputMessage(*message); > > You don't need to check the return value of sendOutputMessage? I'm assuming it won't fail because the poll said we can write without blocking. In any case, what we do is calling sendOutgoingMessages() that will return early if sendOutputMessage failed. > > Source/WebKit2/Platform/IPC/unix/UnixMessage.h:66 > > +class AttachmentInfo { > > You don't need to move AttachmentInfo, too. Right. > > Source/WebKit2/Platform/IPC/unix/UnixMessage.h:114 > > + memcpy(m_body, other.m_body, m_messageInfo.bodySize()); > > You don't need to copy the body if m_messageInfo.isMessageBodyIsOutOfLine(). Good point! Created attachment 302650 [details]
Updated patch
Attachment 302650 [details] did not pass style-queue:
ERROR: Source/WebKit2/Platform/IPC/glib/GSocketMonitor.cpp:45: Extra space before ( in function call [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/glib/GSocketMonitor.h:46: Extra space before ( in function call [whitespace/parens] [4]
ERROR: Source/WebKit2/Platform/IPC/glib/GSocketMonitor.h:54: Extra space before ( in function call [whitespace/parens] [4]
Total errors found: 3 in 8 files
If any of these errors are false positives, please file a bug against check-webkit-style.
Quick testing shows that this indeed fixes the problem for me, on top of the 2.15.90-1 package in Fedora rawhide. Comment on attachment 302650 [details] Updated patch View in context: https://bugs.webkit.org/attachment.cgi?id=302650&action=review > Source/WebKit2/Platform/IPC/unix/UnixMessage.h:66 > + UnixMessage(Encoder* encoder) Encoder could be a reference. Committed r213030: <http://trac.webkit.org/changeset/213030> Comment on attachment 302650 [details] Updated patch View in context: https://bugs.webkit.org/attachment.cgi?id=302650&action=review > Source/WebKit2/Platform/IPC/unix/ConnectionUnix.cpp:477 > +#if PLATFORM(GTK) Why is there anything GTK-specific in ConnectionUnix.cpp? Can't we align our code with the other ports to avoid GTK-specific bugs? At the very very least, all of these should be changed to if USE(GLIB), right? (In reply to comment #15) > Comment on attachment 302650 [details] > Updated patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=302650&action=review > > > Source/WebKit2/Platform/IPC/unix/ConnectionUnix.cpp:477 > > +#if PLATFORM(GTK) > > Why is there anything GTK-specific in ConnectionUnix.cpp? Can't we align our > code with the other ports to avoid GTK-specific bugs? There's nothing GTK+ specific, it's glib, but EFL didn't use our gsocket monitor, I don't know why, so we had to use PLATFORM(GTK) instead of USE(GLIB). I agree we could have used USE(GLIB) && !PLATFORM(EFL), though. This bug is not GTK specific at all, the problem was in the poll we used when sendmsg returns EWOULDBLOCK. The solution is GTK+ specific, well, GLib specific, because we use our socket monitor to properly poll the socket also for writing in case of EWOULBLOCK using the run loop. > At the very very least, all of these should be changed to if USE(GLIB), > right? Right, now that EFL is gone, that's exactly my plan. We could also make it ifdef free by converting our socket monitor into a platform-specific class with platform implementations. However, now that there's no other unix ports using this code, it's not easy for me to do that refactoring without knowing the other implementations. (In reply to comment #16) > Right, now that EFL is gone, that's exactly my plan. We could also make it > ifdef free by converting our socket monitor into a platform-specific class > with platform implementations. However, now that there's no other unix ports > using this code, it's not easy for me to do that refactoring without knowing > the other implementations. Let's do this. Solution is to rename it to ConnectionGLib.cpp and just remove ConnectionUnix.cpp. If some future port wants to use it, they can bring it back at that time. (In reply to comment #17) > (In reply to comment #16) > > Right, now that EFL is gone, that's exactly my plan. We could also make it > > ifdef free by converting our socket monitor into a platform-specific class > > with platform implementations. However, now that there's no other unix ports > > using this code, it's not easy for me to do that refactoring without knowing > > the other implementations. > > Let's do this. Solution is to rename it to ConnectionGLib.cpp and just > remove ConnectionUnix.cpp. If some future port wants to use it, they can > bring it back at that time. No, I haven't proposed this, a possible ConnectionGLib would be quite different (and simpler) using the GSocket API por everything. ConnectionUnix is common code except for the socket monitor, so let's just change the ifdefs to USE(GLIB). What I proposed was to make the socket monitor a common interface with platform implementations not the whole file. When we added this implementation, we (GTK, EFL and Qt ports) decided not to use platform APIs for this, to share the implementation. |